我知道WebRTC
是专为浏览器设计的,但是可以直接在移动应用程序上使用WebRTC库吗?
谢谢!
答案 0 :(得分:21)
截至5月14日here是一个使用WebRTC
的Android项目,效果很好。
我将整个Android项目翻译为iOS Objective-C
并让WebRTC在iOS上运行,但我在iPhone 4和4上遇到了麻烦。只适用于iPhone 5和5s。
我认为问题在于性能。当我使用webrtc库进行视频通话时,它占据了iPhone 5上大约140%的CPU,我猜这需要很多资源而iPhone 4s无法处理它。
被修改
在与视频连接挣扎之后(10秒后总是断开连接)我终于让WebRTC在iPhone 4上运行了,你所要做的就是在创建本地videoSource捕获对象时设置正确的约束:
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]];
请注意,这会发送一个非常小的视频,但它有效!
答案 1 :(得分:12)
您可以将WebRTC与原生应用程序一起使用,但这需要一些工作。
如果你看图像,你会在底部看到一个红色矩形。这是WebRTC的原生C ++库。用于音频和视频的WebRTC类和WebRTC对象也可以作为WebRTC项目的一部分找到。您需要添加的API是您的应用程序能够设置调用的API(VOIP接口),信令堆栈和NAT遍历实用程序(核心协议 - 对于SIP,这可能类似于PJSIP和PJNATH)和从信号堆栈到webrtc的适配器,告诉它何时打开视频和音频通道以及何时停止它们等。
答案 2 :(得分:5)
我们(免责声明:我在那里工作)已经在IceLink建立了一套用于执行@冻山的图书馆。适用于iOS,Android,.NET等的完整WebRTC实现
答案 3 :(得分:5)
让我总结一下答案,在Android上,我认为Firefox实际上有WebRTC支持,另一方面,有一些公司提供了构建WebRTC产品的完整堆栈。如果你是 在完成WebRTC并构建其他东西(寻址等)后,你可能需要自己构建几个包装器。 (免责声明我为sinch工作)
[http://sinch.com]
[http://twilio.com]
[http://tokbox.com]
[http://nexmo.com]
[http://plivo.com] (I think)
还有更多,但这些是主要的
我们都有不同的利弊。如果你有兴趣发送电子邮件,我可以谈谈sinch。
答案 4 :(得分:3)
可以在移动应用程序中使用WebRTC,使用第三方API,如OpenTok(仅限iOS,截至2014年1月Android测试版)http://tokbox.com/opentok/webrtc/downloads/index.html和Addlive(iOS和Android){{3 }}
答案 5 :(得分:3)
截至2014年3月,here确实是这样做的一种方式:
如果您对拥有本地客户感兴趣,那就是这样。如果您不介意使用移动浏览器,则目前支持以下版本:
答案 6 :(得分:3)
截至今天,WebRTC正式在Android / iOS上正式推出。
http://www.webrtc.org/native-code/android
http://www.webrtc.org/native-code/ios
虽然引人注目,但它只是围绕C ++ API的Java / Objective C包装器。
您仍然可以在不使用JavaScript的情况下使用它们。
Objective C包装器API: https://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fobjc%2Fpublic%253Fstate%253Dclosed
答案 7 :(得分:3)
SightCall拥有适用于Android的WebRTC兼容SDK,可让Android原生应用在浏览器中连接到WebRTC。 您可以获取SDK here
答案 8 :(得分:2)
我不知道你是什么意思"直接在移动应用上使用WebRTC库"。 但是我已经做了一些事情。 使用JNI + NDK构建WebRTC NS / AEC / AECM / AGC / VAD模块,并在android上使用共享库。 或者你可以为Android和iOS构建整个WebRTC VoE和ViE。
答案 9 :(得分:2)
您可能想要查看的一个资源是本文: how to get started with webrtc and ios without wasting 10 hours of your life
我遇到的一个问题是理解所有WebRTC/Libjingle
库文件。目前,我可以运行示例应用程序,但我希望那里有一个“Hello World”示例。
答案 10 :(得分:1)
目前还没有,它只支持Firefox的nightly和Chrome,两种桌面版本。见http://www.webrtc.org
编辑:对不起,我以为你要的是移动浏览器。对于原生应用程序,它看起来像一个明确的否:(但似乎有一些移动浏览器支持http://www.morbo.org/2013/04/webrtc-support-on-android.html
答案 11 :(得分:0)
目前您有两种选择:
答案 12 :(得分:0)
对于iOS,只需将其添加到CocoaPods Podfile
即可pod "libjingle_peerconnection"
# Add this to the bottom so it won't have issues with active architecture
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
config.build_settings['VALID_ARCHS'] = ['armv7', 'i386']
end
end
end
检查this哪些修订版可用。修订版6802.X反映实际WebRTC
代码库中的this。
Android将很快添加到maven中心,我会在发生时对其进行编辑。
如果您想手动构建WebRTC,请查看github.com/pristineio/webrtc-build-scripts,其中还包括两个平台的分步指南
答案 13 :(得分:0)
我的团队在这方面做了很多工作。如果您正在寻找Cordova插件,我们一直在玩一个名为PhoneRTC的开源项目。我们让它在iOS上运行,但它有点不可靠,视频窗口的宽高比固定在大多数设备上看起来不自然,但确实有效。
我们还使用libjingle创建了一个Android演示。 Libjingle现在是WebRTC项目和代码库的一部分。 This链接现在可能已过时,但指向当时适用于我们的说明。
答案 14 :(得分:0)
很晚才回答.. 但我刚刚在iOS Project中创建了一个可以轻松添加WebRTC的框架。 您不需要从库中构建WebRTC框架。 这个框架将为您提供内置框架以及一个包装器,以便将webRTC轻松添加到您的应用程序中。 https://github.com/Ankit-Aggarwal/SwiftyWebRTC
答案 15 :(得分:0)
如果你的目标是android> = L,你可以通过在你的应用中嵌入支持WebRTC的(chrome)webview来轻松构建原生webRTC应用程序。