I want to build a mobile application where one of the participating users can broadcast audio and video to other participants and the session is recorded. I know it is possible to do this using a MCU and done a lot of research on Kurento specifically. Although I read a lot about kurento I am having trouble how I can implement a Kurento client on IOS and Android.
What steps should I be taking in order to implement a kurento client app?
For example can I use the implementations provided on http://www.webrtc.org/ ?
Creating WebRTC applications is not much different to creating standard WWW applications. In general, a WebRTC application like the one you are describing needs to have 3 layers: the client layer, the application server layer and the media server layer.
For your specific needs, Kurento Media Server can provide you the media server layer (you will be able to record and to provide group communications through MCU and SFU models) However, Kurento Media Server does not provide you the other two layers.
When using Kurento Media Server at the media server layer, the application server layer gets simplified if you base it in Java or JavaScript technologies. This is due to the fact that Kurento provides Kurento Client APIs (the APIs controling KMS capabilities) for Java and JavaScript off the shelf. Hence, you can create your application logic as if it where a standard WWW application and the only difference is that instead of using an API for accessing a DD.BB. (as commonly happens in WWW applications) you will use the Kurento Client API for accessing the media server capabilities.
For the client side (and this goes directly to the point of your question), you can use any client technology compatible with WebRTC standards. This means Kurento Media Server is not assuming anything about the client platform other than its support for WebRTC standards. Hence, if your application works correctly on WWW browsers it should also work correctly on Smarphone native applications supporting WebRTC. You don't need support for the Kurento Client API on the client device. Kurento Client API needs only to be used at the application server layer.
Closing this discussion, in a practical perspective, your best option for creating a native smartphone client application for your service is to use one of the available WebRTC stacks out there. In particular, you can use the www.webrtc.org stack (the one of Google) or the www.openwebrtc.io stack (the one of Ericsson). You should compile them and complement them with the signaling capabilities you want for interoperating with your application server.
Related
My goal is to feed a NN on Android with real time streaming events from various data sources (sensors, other servers). I have created a working set up on a linux server with Kafka to explore the concept. Replicating this set up to an Android device poses the question if this is the correct architecture for a mobile device as well, or if I should go for a completely different approach.
Kafka on Android does not work (server especially, but client neither), and is not recommended due to required network connections.
More commonly, MQTT is used for streaming mobile and IOT sensor devices (which could in-turn send data to Kafka at the backend, collection site)
I want to write an android application and I want to know if SignalR use websocket or something else for communicating between server and client, before I do that.
Anybody know?
By default, SignalR will try to work with web sockets, if they are not available in the underlying platform, it will fall back to SSE, and then to long polling.
Xamarin/Mono current implementation has some issues with web sockets, even though SignalR supports it, so web sockets will not be available.
If your app is made with Xamarin (as you tagged your question), the best protocol you will get is SSE (server sent events). But in my experience (I´ve got an app working with it) this protocol is fast and stable enough for most use cases.
From the signalR webpage
SignalR uses the new WebSocket transport where available, and falls
back to older transports where necessary.
From the Xamarin forums and youtube, It seems people have successfully implemented websocket transport with SignalR on Android
What else can I use?
Socket.IO for an HTML5 application(With NodeIIS),GCM or Firebase like push notifications for native on any webserver
I have the SpringMvc web app integrated with kurento one2many web app. I want to connect to this from android app. How to do it if kurento Android SDK is not supported from over year ?
I need to user URL connection or something else ? Sorry for the stupid questions, I'm newbie in this.
I think there is a misunderstanding with the Kurento Android SDK (a.k.a. KANDS) That project was used to control the media server, not to connect to any of the tutorials. In the beginning, KANDS was supposed to be used to create pipelines in the media server, but it was a bit useless, as the moment you want to create a real-world app, you are going to set up a server somewhere and do all the signaling from there.
Long story short: you are the one that decides what type of signaling has to be done, nad KANDS not any other project (for now, but this will change soon) could help you with that
If you want to connect to one of the tutorials, you'll have to implement the signaling protocol of the tutorial, not that of the media server. Thus, if the tutorial expects a startRecording message, you'll have to send that JSON message to the server-side app, from your native Android App. Each tutorial has a different protocol, which you will need to implement in order to.
The tutorials are there just to show the capabilities. They are not full fledged apps, and shouldn't be used into production. The rationale is to show how Kurento works, and not how to create a SpringMVC app.
Is it possible to configure Android native SIP client from your own android application (username,password and server IP) ??. I want to create android application when user installs it, the application automatically import SIP account from my server and configure (username,password and server IP) in Android native SIP client..
I have created my own SIP client using SIP Demo tutorial but it has poor voice quality and many other problems..So now i want to use Android native SIP client
Android provides an API that supports the Session Initiation Protocol (SIP). This lets you add SIP-based internet telephony features to your applications. Android includes a full SIP protocol stack and integrated call management services that let applications easily set up outgoing and incoming voice calls, without having to manage sessions, transport-level communication, or audio record or playback directly
visit this link:
http://developer.android.com/guide/topics/connectivity/sip.html
what is the best way to create a two way constant communication between a server and an android app?
When I say constant communication, I mean client asking server for data or server constantly pushing data to clients.
From what I saw, I can't use websockets since they are designer for server/browser setups. Is that right? If so, what is the alternative?
Is there free frameworks to work with this in Android?
What I am trying to do is an application that works like a chatting but for multiple people. So they all will get in one "room or channel" on their devices, and then interact with each other, in a way handdled by the server.
Thanks!
As far as I know , one possible way is using a web service where the client can connect to the server , if the web service is RESTFul there are many libraries to access it , one of them is the apache HTTPClient , for the server pushing the only way I know is C2DM for pushing data to clients.
For continuously-open data connection, you may use Sockets. But you should also consider the fact that an always-open connection will drain your battery quickly too. For more details, read this and this
You may want to look at AutobahnAndroid:
https://github.com/tavendo/AutobahnAndroid
which provides native Android/Java WebSocket client framework (plus WAMP = PubSub/RPC over WebSocket .. http://wamp.ws).
This is fully interoperable with WebSocket servers that server browser clients.
The AutobahnXX libraries (where XX = Python, JS, Android) are Open-Source (Apache 2.0). We (Tavendo) are offering a commercial virtual appliance based on Autobahn: http://autobahn.ws
Disclaimer: I am author of Autobahn and work for Tavendo.
But keeping the connection running on the background on iOS and Android devices does drain the battery, for people who have this issue, I suggest using push notifications when the app is not on the foreground.
From what I saw, I can't use websockets since they are designer for
server/browser setups. Is that right? If so, what is the alternative?
Websocket is an IETF/W3C protocol, so it is not confined to a specific client platform. You can use Android websocket to get a two-way communication between Android and server side. For Android websocket client, I recommend using AndroidAsync. It has all websocket API that you need to establish the communication link and exchange data between Android and the server.