Do you need a browser to use webrtc? - android

Do you need one? Or can you use it in a mobile app? And if you can, and you are working on android, how do you put the html code inside, without using webview? (since it doesnt support webrtc)

You do not need a browser to use WebRTC. Google has sample applications for Android and iOS. These are built using native code, which means there is no HTML; you use Java or Objective-C to handle the same API.

WebRTC is not a browser technology (though it is well designed for browsers), but a complex of technologies for video/audio/files/messages P2P delivery: codecs, APIs, routers etc.
You can use WebRTC to even transmitting video/audio/messages/files between two servers (still peer to peer, isn't it). Practically, you can use any device with access to local network or Internet and write any program to make it working with WebRTC.

WebRTC defines protocols for sending video and audio and data, and protocols for two endpoints to connect to one another (ICE with STUN and TURN). While the Javascript bindings are part of the WebRTC standard, some mobile native SDKs implement many of the protocols of WebRTC, but do not strictly present the Javascript bindings.

Related

Advice on streaming application for Android via WebRTC

I have to build an application for android to stream video and audio to a desktop application through a server. Latency is important. I also have to make sure that android streaming can be controlled from pc (user should be able to switch the camera or turn off the microphone).
I thought to use the WebRTC protocol for communication but it seems I'm gonna have to write signalling server myself to support that requirement mentioned above.
Is there a better way to implement this whole thing? Also, I can't find any good docs or libraries for android streaming (no retrofit analogies obviously).
P.S. I'm thinking about using Javafx via Tornadofx for a desktop application.
You certainly don't need to create your own signaling server. I would suggest using something like Kurento Streaming Server or a derivation of Kurento like OpenVidu. It's open source and free and has lot's of great and active support via google groups. Depending on how much specific customization you may need one or the other might be better for you. OpenVidu allows for less customization since most of the stuff under the hood is already done for you, whereas Kurento allows you to modify and customize almost everything under the hood and on the front end using examples that can be changed at the code level. I have used it extensive on projects on the past and would think it meets most, if not all of your requirements. Scaling can be a bit challenging, but is still mush easier than just P2P webRTC since everything is relayed through a central server and most certainly doable depending on your requirements and implementation. Additionally you can record, process and transcode video server side.

Using Restcomm SIP & Webrtc without the platform

I am looking for a way to use SIP as signalling protocol for Webrtc in Android. I saw the RestComm open source code and I think it fits my needs. But I already have the infrastructure setup for TURN and SIP server. We use FreeSwitch for that purpose. My Question is, is it possible to use the restcomm android sdk with a infrastructure that is not from restcomm platform? Will it work?
Is there any other library or way that could be used for the purpose? Infrastructure is fixed and couldn't be changed. I need webrtc with SIP or SIP over websocket as the signalling method.
Restcomm Android SDK essentially offers VoIP functionality using SIP for signaling and WebRTC for media, so you shouldn't have any issues integrating with different server components.
Notice though that so far it's tested with Restcomm platform for the most part.
For more information on how to do that you can check Quickstart Guide and also refer to the code for Hello World and Olympus Apps

Is it possible to build a native android-to-android video chat app using webrtc?

I see a lot of tutorials in the Internet teaching about android to browser or browser to browser webrtc application. Is it possible to build a native android-to-android video chat app using webrtc?
Well, for establishing a connection between the devices before the call via peer-to-peer WebRTC solution you need STUN/TURN/ICE servers.
They establish the route for communication between the devices.
Once the route is established the devices communicate directly without participation of a server for passing the media streams.
To make it easier for you, you can look at or try some existing solutions, like ConnectyCube.
They have peer-to-peer WebRTC solution for Android already implemented.
So, maybe there is not need to reinvent the wheel.
There is an official Android sample project AppRTCMobile provided here - https://webrtc.org/native-code/android/. However, the build process is tedious and the total download size exceeds 20 GB. The recommended way is to use the following dependency in your project.
implementation 'org.webrtc:google-webrtc:1.0.+'
However, for video chat functionality you will need to refer AppRTCMobile source code. There is a clone of this project on GitHub updated for Oreo and ready to import in Android Studio. Check out this link.
WebRTC uses ICE protocol for creating connection between two peers. It uses DTLS-SRTP for creating secure data exchange between peers.
Now both ICE protocol and DTLS-SRTP are protocols that can be implemented on any devices no matter what platform. You implement or use existing implementation of
ICE and DTLS-SRTP protocol on your android apps and communicate with each other.
When you read tutorials about implementation of WebRTC for communication between android app and browser, there the android app has the implementation of both ICE and DTLS-SRTP. So this android app can communicate with other android app having similar implementation.
in addition to #tahlil great answer, you can also use a number of open source SDKs out there that already took the burden on bundling the WebRTC libraries and offering simple APIs for you to integrate Real Time Communications in your native app. One example of such SDK is the RestComm Android SDK
See https://github.com/Mobicents/restcomm-android-sdk and http://www.telestax.com/restcomm-client-android-sdk-beta-2-is-out/

Developed webRTC Web App, Need Help For Native Apps

I'm developing a webRTC project, the goal is to have 8 random people on the same channel, sharing video and audio, while having the possibility of being on different platforms (iOS, Android, PC, etc).
So far, so good, I finished developing the browser client and the server (using Socket.io and Node.js), and it is working fine.
The problem is I used a webRTC abstraction to code the browser instead of the apprtc libraries, and the library I used doesn't support native apps.
My question is, should I try to code a new library for mobile based on the abstraction library I used (around 6k lines of code), try to find a way to connect peers running on the browser abstraction library and the peers using an android/iOS abstraction library, or should I re-write all client side code with apprtc samples?
The goal here is to have everything working as fast as possible and have the possibility to optimize later on.
A few notes on my project:
->The interface will be really simple, all the user has to do is click a button, I will then check for video and send him to a queue in the server (through socket.io).
->The server will then find 7 other people to connect the peer to.
->All peers receive information from the server (either a channel or other peer's client information) and set up a video and audio conference.

How to make my own secure VOIP application on Android?

I want to implement my own encryption rule before the call data go into GSM network i.e. I want the call stream in the form of bits, I will implement my own encryption algo, and then send on to the network, my app on the other side(reciever's end) will recieve the data, decrypt it and make it into audio.
I want to know is it feasible, if it is how? I mean I want to use cell phone network as in like Airtel, Vodafone etc.
If it is not possible It will be of great help, if I can do it using internet (2G or 3G) ?
Any guidance in this, I want just direction.
Thanks in advance.
You can quickly create a chat application using Adobe Flex which will create an Adobe Air app that can run on Android (and also compile an iOS version if desired). The core strength of Adobe Flex is sending audio (and video) data with very little effort on the developers part.
You can configure your application to use SSL using the rtmps protocol if you want the data being transmitted to be encrypted.
This page shows you how you can create a simple video chat app for android using Flex http://coenraets.org/blog/2010/07/video-chat-for-android-in-30-lines-of-code/ - if you specifically don't want video you can send audio only data.
I can't imagine any reason why this wouldn't be possible as the networks are just passing data around, I don't think they care if it's encrypted or not encrypted - it's just a series of 1s and 0s.
As to how, that's a little beyond the remit of Stack Exchange - if you have a specific problems then post them with code.
There are other similar questions which you could look at:
Basic encryption on Android
https://stackoverflow.com/search?q=android+encryption
On Android, calls using the GCM (or other) network are handled by the baseband processor, which you don't have direct access to. You talk to it via the rild (Radio Interface Layer daemon) which uses proprietary library to talk to the actual hardware. So in practice you cannot mess with the mobile network.
A VOIP application would use the data connection and you can send/receive pretty much anything you want. If you use a standard technology such as SIP, there are ways to use TLS for the communication channel(s), so that traffic is encrypted. If you are creating your own, you might do something similar by using SSL sockets.
The 'how' part doesn't really fit the SO format, since it's very open ended and depends on how you decide to implement this.

Categories

Resources