Video Streaming in iOS through WebRTC - ios

I am trying to build a audio/video streaming app that works cross platform on iOS and Android mobile devices.
No matter how deep I Google, I'm ending up with suggestions that point me towards OpenTok/TokBox API. But this is what I wish to avoid.
I've checked a few demo, but WebRTC/HTML5 do not seem to work with streaming video/audio in iOS browser. For example, the https://apprtc.appspot.com demo does not work in Safari or Opera Mini in iOS.
When I try http://dev.opera.com/articles/media-capture-in-mobile-browsers/demo/ ... I can capture image using the default iOS camera picker from my browser but streaming video fails.
It seems like the getUserMedia() stuff is not supported by any browser in iOS.
Moreover, I am planning to put this on a WebView in a native iOS app. This sounds like a really far cry.
I wish someone could point me towards something that helps me build a video streaming app (hopefully using HTML5), that works uniformly for iOS and android (without TokBox).

You might want to look into Ericsson's Bowser App http://www.ericsson.com/research-blog/context-aware-communication/bowser-openwebrtc-released-open-source. It claims to provide WebRTC on Android and IOS. Apparently the App is currently under review in the App Store so if you wait it may just be a case of downloading the App. However it's also open source so if you can't wait then you can build it yourself https://github.com/ericssonresearch/bowser.

getUserMedia and WebRTC Peer-to-peer connections APIs are not supported in iOS.
One of the reason is that at the moment efforts around WebRTC focus on VP8 video codec which Apple and Microsoft do not support natively. Support in the near future is unlikely with Microsoft pushing for its own standard.
Doing what you want on iOS requires you use a native iOS compatible solution like OpenCV which supports video capture. You can find on Google tutorials on how to implement a solution based on OpenCV.

good news, will be supported at Safari 11.0
https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Safari_11_0/Safari_11_0.html

Related

WebRTC/Janus on iOS

What are my options implementing WebRTC (Janus specifically) in my iOS app?
From what I've gathered, using the WebRTC library made by Google is hard and may fail. Also the fact that the backend uses Janus, I don't know how much work I'd have to do to get the basic WebRTC compatible with the Janus layer.
Also, does WebRTC work in Safari/WK webviews in iOS 11/12? I don't want to stream from the app, I only want to view a stream.

Is there a way to use Chrome in a webview in an iOS app?

I need to build video chat application with the option to record the video call. I think that most appropriate would be to use WebRTC, specifically Kurento. However, Safari does not support WebRTC at this moment, and the iOS client SDK's don't offer the ability to record the video. This is supported for a javascript client:
http://doc-kurento.readthedocs.io/en/stable/tutorials/java/tutorial-one2one-adv.html
So I was thinking to open a chrome browser inside my app just for the webRTC functionality. I read about Blink WebKit but I'm not sure if this is what I need.
P.S. Any other proposed solutions for the video call + recording features on an iOS app are welcome.
The simple answer is no, you can't use Chrome on IOS for webRTC. Apple for some reason don't like peer to peer technologies, and while they are rumoured to be working on it, there is no announcement yet.
There is this...
cordova-plugin-iosrtc
Cordova iOS plugin exposing the full WebRTC W3C JavaScript APIs.
Public Google Group (mailing list) for questions and discussions about
cordova-plugin-iosrtc. Bug Tracker for reporting issues and requesting
new features (please don't use the bug tracker for questions or
problems, use the mailing list instead). NPM package. Yet another
WebRTC SDK for iOS?
Absolutely not. This plugin exposes the WebRTC W3C API for Cordova iOS
apps (you know there is no WebRTC in iOS, right?), which means no need
to learn "yet another WebRTC API" and no need to use a specific
service/product/provider.
https://github.com/eface2face/cordova-plugin-iosrtc
Warning: Some assembly required
See this article for more details on the pitfalls:
http://ninjanetic.com/how-to-get-started-with-webrtc-and-ios-without-wasting-10-hours-of-your-life/

webRTC-enabled browser for iOS?

Preface: there are questions (some good, some bad) already in existance on StackOverflow about webRTC support on various browsers and platforms, including iOS. However I couldn't find anything definitive that was more recent than ~2012, and this is a rapidly-changing field.
I'm working on a browser-based webapp that uses webRTC for minimal-latency peer-to-peer data transfer (not for audio/video, unlike most applications it would seem - all I need is DataChannel).
I hit a snag when I started testing the data-transfer part of the project and discovered that iOS devices still don't natively support this in their built-in browsers (despite some recent rumors).
Bowser is a free open-source browser App for iOS that purports to support webRTC on iOS. The problem is that when I try to open the app, it simply crashes and closes. I've tested this on an iPhone 5 and 5s. Googling has failed to turn up alternatives - even Chrome for iOS doesn't currently support webRTC it seems.
My questions:
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
3) What strategies have other people used to work around this limitation?
As of iOS 11, WebRTC is now supported in Safari: https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_0.html#//apple_ref/doc/uid/TP40014305-CH13-SW1
Check out crosswalk project ( https://crosswalk-project.org )
This Provides runtime of Chromium engine for native support in older devices.
1) Are there alternative browsers (even iOS-version restricted) that are currently supporting webRTC, or is there anything promising coming down the pipeline?
Answer:
There is a Browser called Bowser that supports webRTC.
2) Does Bowser actually work (webRTC) on iOS devices where it doesn't crash immediately upon launch?
Answer:
It's not crashing as of now.But I couldn't successfully test with anything so far.I have raised an issue about it
3) What strategies have other people used to work around this limitation?
Answer:
Apple is yet to support WebRTC in Webkit so as of now the only way would be develop a native or Hybrid app that would support the unsupported WebRTC APIs.
You can develop a hybrid app powered by OpenWebRTC or cordova-plugin-iosrtc

P2P Video in iOS + Unity

What would be the best way to realize p2p video (no audio) streaming between 2 iOS clients in real time? This would need to be inside of a Unity3D (or perhaps Cocos3D) game engine.
I've looked at some WebRTC based solutions like Icelink and OpenTok, but I don't have much experience with these technologies. Can someone recommend any de facto solutions for this type of task?
You can use Opentok webrtc-based platform to enable video (and audio) communication between two or more peers.
Opentok has native SDKs for Android and iOS so it should work for you since you are working in iOS.
In order to use it from another SDK such as Unity3d or Cocos3d, Opentok exposes the sent and received video frames (RGB or YUV) to the client, so you can take that video frame image data and render it any view inside the game engine using, for example, OpenGL.
As everything is implemented in the SDK and supported by Opentok platform, enabling the video communication is a matter of interacting with the SDKs so it shouldn't be so hard.

How to wiki not updated in Flyver SDK

I wanted to mimick video streaming, photo capture etc for android and iOS mobile apps using Drones. I have found Android support is available by Flyver here - http://flyver.co/drone-api-sdk/.
But, I could not find anything that suffice my needs as flyver wiki is not well updated.Please let me know how could I simulate Drone apps using Flyver?
Flyver SDK will soon support video streaming and restreaming from cameras such as GoPro.
You could run the apps on any Android phone and test without the drone.
Download the Hello Flyver application to get you started:
https://github.com/flyver/Flyver-Apps/tree/master/HelloFlyver
For further questions you could write directly into the forum pages: http://flyver.co/forum/

Resources