Android平台WebRTC 编译方法

Android平台WebRTC 编译方法

WebRTC介绍

WebRTC 是Google开源的实时音视频开发框架,直接编译运行,也可以基于它进行二次开发。大多音视频应用场景都采用WebRTC 技术,例如视频会议、在线教育、VoIP通话。WebRTC 是chorme 浏览器的一部分,和chorme 采用相同的编译工具链,编译完成后可以用demo 直接通话,支持windows、Android、iOS 、Web 。

WebRTC中使用了很多第三方库,各个平台的代码需要独立下载,编译环境有差异,对初学者不友好,以编译Android 平台构进行介绍。需要从国外下载代码,<red>能够科学上网是必备条件</red>

前期准备

  • Ubuntu linux环境,不支持CentOS ,需要选择LTS版本,最好不使用最新版本(18版本最佳),虚拟机也可以,磁盘可用空间50G以上,内存2G以上。
  • 安装好git、apt 工具。
  • WebRTC 源码下载,需要使用depot_tools 这个工具:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

  • 下载完成,需要depot_tools 的路径,添加到环境变量 PATH,通常直接写入到 ~/.bashrc这个文件, 后面要用到工具里面的下载代码。

export PATH = “depot_tools 的路径”:$PATH

source ~/.bashrc # 更新环境变量

这样写的好处,当编译过程有命令冲突时,可以优先使用depot_tools 下的命令,减少不必要的麻烦。

源代码下载

在磁盘空间不少于50G的目录下,创建文件夹,开始下载代码,具体时间取决网络速度。

mkdir webrtc

cd webrtc

fetch –nohooks webrtc_android

gclient sync

代码下载完成后,建议将代码切到比较稳定的分支,最新的是m96版本,建议使用m94版本。版本号与分支号对应关系。每次切完分支后,一定要执行gclient sync 更新代码。

cd src

git checkout -b m94 remotes/branch-heads/4006 # 切换代码分支

cd .. #一定要返回到上层目录

gclient sync #更新代码

源代码编译

安装依赖包,可以直接执行下面的脚本,在编译的过程如果出现错误,大概率是下面的脚本没有执行。

./src/build/install-build-deps.sh

./src/build/install-build-deps-android.sh

代码编译依赖GN,要确保当前路径在src 下面,代码编译参考链接

gn gen out/Android –args=’target_os=”android” target_cpu=”arm64″‘ #不同架构版本,见参考链接

ninja -C out/Android AppRTCMobile #单独编译生成Android demo

ninja -C out/Android #编译所有 Android工程

gn clean out/Android #清理编译结果

编译完成后,生成的demo 路径为 src/out/Android/apks/AppRTCMobile.apk ,可以使用adlb 工具在手机上运行。

demo 运行

原生demo,信令服务器的地址在海外,连接成功率较低。主被叫双方输入相同的房间号,就可以开始通话。

经验总结

  • Linux 环境不建议使用 Ubuntu 20版本,建议使用16、18 版本,可以减少因环境带来的编译错误。20 版本会出现,”使用或覆盖了已过时的API,有关详细信息请使用-Xlint:deprecation重新编译” 。
  • 磁盘空间要保持50G 以内,如果下载失败,要执行 gclient sync 重试。
  • 如果缺乏Ubuntu 环境,可以在CentOS 系统上安装 Ubuntu docker 镜像,可以参考链接

WebRTC在实时音视频领域占据重要地位,它是一个技术宝库。腾讯会议、Agora、微信VoIP等产品中都有它的影子,接下来将进一步分析WebRTC在弱网下的丢包抗性以及背后的技术。

发表评论

邮箱地址不会被公开。 必填项已用*标注