27

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

谢谢!

4

16 回答 16

25

截至 5 月 14 日,这是一个使用它的 android 项目WebRTC,效果很好。

我将整个 android 项目翻译Objective-C为 iOS 并让 WebRTC 在 iOS 上也能工作,但我在 iPhone 4 和 4s 上遇到了麻烦。仅适用于 iPhone 5 和 5s。

我认为问题在于性能。当我使用 webrtc 库进行视频通话时,它会占用 iPhone 5 上大约 140% 的 CPU,我想这是很多资源,而 iPhone 4s 无法处理它。


已编辑

在与视频连接(总是在 10 秒后断开连接)苦苦挣扎之后,我终于让 WebRTC 在 iPhone 4s 上运行,您所要做的就是在创建本地 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]];

请注意,这会发送一个非常小的视频,但它可以工作!

于 2014-04-25T01:27:03.370 回答
12

您可以将 WebRTC 与本机应用程序一起使用,但这需要一些工作。 WebRTC 原生应用剖析

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

另见:http ://bloggeek.me/porting-webrtc-mobile/

于 2013-11-15T08:07:19.387 回答
8

截至今天,WebRTC 正式在 Android/iOS 上原生可用。

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

目标 C 包装 API: https ://code.google.com/p/webrtc/source/browse/trunk/talk/#talk%2Fapp%2Fwebrtc%2Fobjc%2Fpublic%253Fstate%253Dclosed

于 2014-12-29T19:38:58.263 回答
6

我们(免责声明:我在那里工作)在IceLink中为 @Frozen Mountain 建立了一组库。适用于 iOS、Android、.NET 等的完整 WebRTC 实现。

于 2013-10-22T13:33:33.247 回答
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。

于 2014-06-06T02:56:45.730 回答
3

SightCall 具有适用于 Android 的 WebRTC 兼容 SDK,可让 Android 原生应用程序在浏览器中连接到 WebRTC。您可以在此处获取 SDK

于 2015-03-12T18:35:20.883 回答
3

截至 2014 年 3 月,确实有一种方法可以做到这一点

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

  • Google Chrome 28(自 29 起默认启用)
  • 火狐浏览器 24
  • 歌剧移动 12

来源

于 2014-03-04T06:09:58.957 回答
3

可以在移动应用程序中使用 WebRTC,使用 OpenTok 等 3rd 方 API(仅限 iOS,截至 2014 年 1 月 Android 处于测试阶段)http://tokbox.com/opentok/webrtc/downloads/index.html和Addlive(iOS 和 Android)http://www.addlive.com/platform-overview/

于 2013-07-17T16:14:44.957 回答
2

我不知道“直接在移动应用程序上使用 WebRTC 库”是什么意思。但有些事情我已经完成了。使用 JNI + NDK 构建 WebRTC NS/AEC/AECM/AGC/VAD 模块,并在 android 上使用共享库。或者您可以为 android 和 iOS 构建整个 WebRTC VoE 和 ViE。

于 2013-05-30T10:26:42.803 回答
2

您可能想要查看的一个资源是这篇文章: 如何在不浪费 10 个小时的情况下开始使用 webrtc 和 ios

我遇到的一个问题是理解所有WebRTC/Libjingle库文件。目前,我可以运行示例应用程序,但我希望那里有一个“Hello World”示例。

于 2014-02-05T00:21:31.347 回答
1

目前还没有,它仅在 Firefox 的 nightly 和 Chrome 中受支持,这两个都是桌面版本。见http://www.webrtc.org

编辑:对不起,我以为您要的是移动浏览器。对于本机应用程序,它看起来像是一个明确的否 :(

但似乎有一些移动浏览器支持http://www.morbo.org/2013/04/webrtc-support-on-android.html

于 2013-05-13T08:48:00.760 回答
0

现在你有两个选择:

  • 您将为您的设备构建 libWebRTC。您需要知道如何在 iOS 上使用 Android NDK 和原生 C 代码。这不是微不足道的,但它是完全可行的
  • 使用为你做这件事的其他人的工作。例如,已经提到过 AddLive(是的,我在那里工作)甚至 OpenTok。
于 2014-02-07T21:13:31.457 回答
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

检查这个有哪些修订可用。修订版 6802.X从实际代码库中反映了这一点。WebRTC

Android 将很快添加到 maven Central,我会在发生时对此进行编辑。

如果您想手动构建 WebRTC,请查看 github.com/pristineio/webrtc-build-scripts,其中还包括两个平台的分步指南

于 2014-07-30T21:33:33.910 回答
0

我的团队在这方面做了很多工作。如果您正在寻找一个 Cordova 插件,我们一直在使用一个名为PhoneRTC的开源项目。我们让它在 iOS 上运行,但它有点不可靠,而且视频窗口的纵横比是固定的,在大多数设备上看起来不自然,但它确实有效。

我们还使用 libjingle 创建了一个 Android 演示。Libjingle 现在是 WebRTC 项目和代码库的一部分。链接现在可能已过时,但指向当时对我们有用的说明。

于 2015-05-18T20:59:46.127 回答
0

很晚才回答.. 但我刚刚制作了一个框架,可以在 iOS 项目中轻松添加 WebRTC。您不需要从库中构建 WebRTC 框架。该框架将为您提供内置框架以及包装器,以便轻松将 webRTC 添加到您的应用程序中。 https://github.com/Ankit-Aggarwal/SwiftyWebRTC

于 2017-03-06T09:26:18.177 回答
0

如果您的目标是 android >= L,您可以通过将支持 WebRTC 的 (chrome) webview 嵌入到您的应用程序中来非常轻松地构建本机 webRTC 应用程序。

chrome webview

于 2017-03-24T08:15:30.677 回答