I'm new to iOS(from android). I have already successfully do the AEC process on android with WebRTC standalone AECM module.
Now I have to do the same thing on iOS but with little progress. the mainly problem is which solution should I choose to do the AEC on iOS:
using iOS built-in AEC.
using WebRTC standalone AECM module again.
for the first solution, I've learnt that iOS has built-in AEC in Voice Processing I/O unit. but I heard that the performance of VPU is not good enough. does it?
for the second one, on android, i can use AudioRecord and AudioTrack's API and some buffer techniche to calculate the "delay" described in WebRTC "audio_processing.h", but I have no info. about what API should I use to calc the same delay on iOS.
I'm keep searching on google and iOS docs right now. but also eager for any advise here. especially some one who did the AEC on iOS already.
thanks a lot.
Related
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.
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/
I see documentation for strategy that has a setDistanceType of DISTANCE_TYPE_EARSHOT (which is what I'd like). Now, for iOS this doesn't seem to be available.
If we set the discoveryMediums to use Audio, does this do the same thing? Wondering why there is no equivalent for iOS.
Yes, audio on iOS is the same as earshot on Android. Sorry for the confusion. We may add the earshot concept on iOS for consistency across platforms.
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.
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