原生 Android WebRTC 应用开发

Posted

技术标签:

【中文标题】原生 Android WebRTC 应用开发【英文标题】:Native Android WebRTC application development 【发布时间】:2016-08-18 05:02:57 【问题描述】:

我正在尝试使用 WebRTC Native API 创建一个用于视频聊天和消息传递的 android 应用程序。我浏览了几个链接,发现大多数 android 的文档都很模糊,特别是如果你不知道从哪里开始。我点击了以下链接,

https://webrtc.org/native-code/android/#

https://www.chromium.org/developers/how-tos/android-build-instructions

但是上面提到的链接没有任何意义,因为我想开发一个 android 应用程序,这些链接建议下载一个 chromium 然后构建它。我知道最终结果将是一个 apk,但如果我想编写自己的代码怎么办。我也研究了 pubnub 和 OpenTokRTC,但我也不想使用其他人的信令服务(以及 pub 和 sub 键)。我尝试了以下链接,

https://github.com/pristineio/webrtc-build-scripts

但这对于 WebRTC 的新手来说似乎也有点不完整,因为它建议通过以下命令获取 WebRTC,

# Pull WebRTC
get_webrtc

最后我尝试了以下链接,

http://simonguest.com/2013/08/06/building-a-webrtc-client-for-android/

但本教程的问题在于它根本没有更新。 Libjingle 已经移到 github 上了,我不知道如何使用 gclient 从 github 获取 libjingle。

我的这场斗争是一场灾难。任何人都可以通过更新的文档或教程帮助我,我可以使用这些文档或教程来了解使用 webRTC 原生 API 开发应用程序到底需要什么?请不要给我任何 OpenTokRtc 或 PubNub 的链接。

谢谢

【问题讨论】:

您能否在不关闭应用程序的情况下断开呼叫? 您找到解决方案了吗?我也有同样的问题 最好的方法可能是构建一个 chromium 以便您可以制作自己的 apk。然后尝试获得免费的信令服务或编写一个。或者去 libjingle,这样你就可以自己制作东西了。 @Ahmed 你能完成这个项目或获得一些参考吗?? 很遗憾没有..... 【参考方案1】:

我知道这是一个旧线程,但如果有人仍在寻找使用 libjingle 构建 Android 应用程序的方法,预建库已在过去几个月内发布,可以非常简单地作为依赖项添加到 Android Studio 项目像这样:

dependencies 
    compile 'org.webrtc:google-webrtc:1.0.+'

在 Android Studio 2 中。或在 Android Studio 3 中:

dependencies 
    implementation 'org.webrtc:google-webrtc:1.0.+'

文档是here。有关如何使用 Android API 的示例,请阅读AppRTC code。

【讨论】:

是获取代码、编译必要的部分,因为它再次指向webrtc.org/native-code/development/prerequisite-sw 和整个 Chromium 构建? 如果您只想使用 Android API,那么您只需将以上几行添加到 build.gradle 即可。除非您有更具体的需求,否则无需自己编译库 @samuelokrent 你知道比他们网站上提供的更简单的教程或示例项目吗?这有点复杂,文档不是很有帮助。我期待了解这个库并对此做一些事情,但不幸的是,缺乏信息。 @shurrok 我在上面分享的 AppRTC 代码是我知道的使用当前 Android API 的唯一正确示例。该库肯定有点复杂,尤其是因为大多数文档都位于native C++ library 中。我强烈建议首先从 AppRTC 复制 webrtc 代码并从那里进行修改。 这是正确答案。此外,可以在here找到一个基于 AppRTC 代码并为 Oreo 更新的示例项目。【参考方案2】:

@Mark Sherman 就如何将 libjingle 库编译到您的项目中给出了一个很好的答案。您仍然需要提供自己的信令服务。我发现有帮助的项目包括 Android 客户端和服务如下:

客户 - https://github.com/pchab/AndroidRTC

信令 - https://github.com/pchab/ProjectRTC

您还可以查看爱立信名为 OpenWebRTC 的跨平台扩展 SDK:

http://www.openwebrtc.org/

https://github.com/EricssonResearch/openwebrtc-android-sdk

【讨论】:

【参考方案3】:

我也和你一样,正在寻找如何将我自己的信令服务集成到libjingle 中,似乎没有教程解决它。

如果您使用 Android Studio 进行开发,则应在 build.gradle 脚本的 dependencies 部分中包含 compile 'io.pristine:libjingle:9694@aar'

dependencies 
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'io.pristine:libjingle:9694@aar'
   // the rest of your code

这应该将libjingle 添加到您的项目中。

【讨论】:

您好,我想添加用户身份验证以连接到我现有的 WebRTC 服务器。我可以通过网页连接并通过它拨打电话。你有任何样本可以帮助在 Android 上像这样工作吗??【参考方案4】:

我正在使用Mark Sherman 提到的库。 有一篇博文很好的解释了过程中涉及的所有类:tech.appear.in

注意:它没有解释任何关于信令服务器的内容,而是向您介绍了它。

此外,chromium.googlesource.com 上提供的 AppRTCDemo 代码是检查工作流程的可靠资源。它有点复杂,但如果你知道你在寻找什么,它会很有用。

【讨论】:

您好,我想添加用户身份验证以连接到我现有的 WebRTC 服务器。我可以通过网页连接并可以通过它拨打电话。你有任何样品可以帮助像那样工作吗?? @ForGuru 你到底是什么意思?喜欢登录?在这种情况下,请使用数据库。 我有一个基于 FreeSwitch 的 VoIP 服务器正在工作。现在可以使用 SIP 用户 ID 和密码。我们已经在上面安装了 WebRTC 模块,我们可以通过 Chrome 中的 WebRTC 客户端进行连接。我想在 Android AppRTC 示例应用中添加用户名和密码验证以连接到我的服务器 @ForGuru 不属于 webrtc 本身。我建议你创建一个关于它的问题。我帮不了你。【参考方案5】:

如果你不想要一个完整的端到端开源实现,我会看看这个库...... https://github.com/nhancv/nc-kurento-android

搭配 Kurento (https://github.com/kurento) 和附带的演示,几乎可以向您展示一切如何在幕后工作。我将此作为我自己的 webrtc 项目的起点,它相对容易理解和彻底,尽管当然还有一个学习曲线。

【讨论】:

以上是关于原生 Android WebRTC 应用开发的主要内容,如果未能解决你的问题,请参考以下文章

android webRTC语音通话

是否可以将 Google Hangouts 原生集成到 Android 应用程序中?

如何在原生 iOS 应用程序中过滤 WebRTC 编解码器

将官方 WebRTC SDK 集成到 Android / iOS APP 的文档/示例

Android 旧版本是不是支持 Android 应用中的 Webrtc 视频聊天

无法编译 WebRtc AppRTCDemo android 应用程序