WebRTC在一个独立的移动应用程序上

时间:2013-05-13 08:41:56

标签: webrtc

我知道WebRTC是专为浏览器设计的,但是可以直接在移动应用程序上使用WebRTC库吗?

谢谢!

16 个答案:

答案 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 Native app anatomy

如果你看图像,你会在底部看到一个红色矩形。这是WebRTC的原生C ++库。用于音频和视频的WebRTC类和WebRTC对象也可以作为WebRTC项目的一部分找到。您需要添加的API是您的应用程序能够设置调用的API(VOIP接口),信令堆栈和NAT遍历实用程序(核心协议 - 对于SIP,这可能类似于PJSIP和PJNATH)和从信号堆栈到webrtc的适配器,告诉它何时打开视频和音频通道以及何时停止它们等。

另请参阅:http://bloggeek.me/porting-webrtc-mobile/

答案 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确实是这样做的一种方式:

如果您对拥有本地客户感兴趣,那就是这样。如果您不介意使用移动浏览器,则目前支持以下版本:

  • Google Chrome 28(自29以来默认启用)
  • Mozilla Firefox 24
  • Opera Mobile 12

Source

答案 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的情况下使用它们。

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

答案 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)

目前您有两种选择:

  • 要么为您的设备构建libWebRTC。您需要知道如何在iOS上使用Android NDK和本机C代码。这是非常重要的,但它是完全可行的
  • 使用为您执行此操作的其他人的工作。例如。已经提到了AddLive(是的,我在那里工作)甚至是OpenTok。

答案 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应用程序。

请参阅chrome webview