WebRTC
是为浏览器设计的,但是否可以直接在移动应用程序中使用WebRTC库呢?谢谢!
WebRTC
是为浏览器设计的,但是否可以直接在移动应用程序中使用WebRTC库呢?截至5月14日,这里有一个使用WebRTC
的Android项目,并且运行得很好。我把整个Android项目翻译成了Objective-C
,在iOS上也让WebRTC工作了,但在iPhone 4和4s上遇到了麻烦。只有在iPhone 5和5s上可以正常工作。
我认为问题出在性能上。当我使用webrtc库进行视频通话时,在iPhone 5上占用了大约140%的CPU,这是非常多的资源,而iPhone 4s无法处理它。
编辑过的内容:
在经历了视频连接问题(始终在10秒后断开)的折磨后,我终于让WebRTC在iPhone 4s上工作了。你所要做的就是在创建本地视频源捕获对象时设置正确的约束条件:
NSString *_width = @"320";
NSString *_height = @"180";
NSString *_maxFrameRate = @"10";
RTCMediaConstraints *videoConstraints = [[RTCMediaConstraints alloc]
initWithMandatoryConstraints:@[[[RTCPair alloc] initWithKey:@"maxHeight" value:_height],
[[RTCPair alloc] initWithKey:@"maxWidth" value:_width],
[[RTCPair alloc] initWithKey:@"maxFrameRate" value:_maxFrameRate]] optionalConstraints:@[[[RTCPair alloc]
initWithKey:@"googCpuOveruseDetection" value:@"true"],
[[RTCPair alloc] initWithKey:@"googCpuLimitedResolution" value:@"true"]]];
RTCVideoSource *videoSource = [factory videoSourceWithCapturer:capturer constraints:videoConstraints];
RTCMediaStream *lms = [factory mediaStreamWithLabel:@"ARDAMS"];
[lms addVideoTrack:[factory videoTrackWithID:@"ARDAMSv0" source:videoSource]];
请注意,这会发送一个非常小的视频,但是它可以工作!
https://webrtc.github.io/webrtc-org/native-code/android/
https://webrtc.github.io/webrtc-org/native-code/ios/
尽管底层实现是C++ API的Java/Objective C包装器。
你仍然可以不通过JavaScript使用它们。
Java包装器API: https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fjava%2Fsrc%2Forg%2Fwebrtc
Objective C包装器API:https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fobjc%2Fpublic%253Fstate%253Dclosed
我们(免责声明:我在那里工作)在Frozen Mountain已经开发了一套库来实现这个功能,名为IceLink。该库完整实现了iOS、Android、.NET等平台的WebRTC。
让我总结一下答案,在Android上,我相信Firefox实际上具有WebRTC支持。另一方面,有很多公司提供完整的堆栈来构建WebRTC产品。如果你只需要WebRTC并自己构建其他内容(例如地址等),你可能需要自己构建一些包装器。 (免责声明:我为sinch工作)
[http://sinch.com]
[http://twilio.com]
[http://tokbox.com]
[http://nexmo.com]
[http://plivo.com] (I think)
还有一些其他的,但这些是主要的。
我们每个人都有不同的优点和缺点。如果您感兴趣,请发送电子邮件,我可以谈论有关Sinch的内容。
利用第三方API(如OpenTok(仅限iOS,截至2014年1月Android处于beta版)http://tokbox.com/opentok/webrtc/downloads/index.html或Addlive(iOS和Android)http://www.addlive.com/platform-overview/),可以在移动应用程序中使用WebRTC。
我不知道你所说的“直接在移动应用程序中使用WebRTC库”的意思。但是我已经完成了一些工作。
通过JNI + NDK构建WebRTC NS / AEC / AECM / AGC / VAD模块,并在Android上使用共享库,或者可以为Android和iOS构建整个WebRTC VoE和ViE。
WebRTC/Libjingle
库文件。目前,我可以运行示例应用程序,但我希望有一个“Hello World”示例。