美文网首页android开发技巧
WebRTC 项目分析(一)Android平台编译

WebRTC 项目分析(一)Android平台编译

作者: 码上就说 | 来源:发表于2020-08-15 16:10 被阅读0次

WebRTC是在浏览器中使用实时通讯系统的库,但是除了在浏览器中使用,我们还可以在Android、iOS、Windows、Linux、MacOS等系统上使用,是一个完全跨平台的库,本文就是解决Android平台下WebRTC 的编译问题。

1.下载WebRTC源码

  1. 安装depot_tools工具
    https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up
    执行 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git,然后配置PATH
    export PATH=/path/to/depot_tools:$PATH
  2. 创建一个源码目录dir
    执行指令 fetch --nohooks webrtc_android,然后执行gclient sync
  3. 兼容各个平台
    打开.gclient文件,如下:
solutions = [
  {
    "name": "src",
    "url": "https://webrtc.googlesource.com/src.git",
    "deps_file": "DEPS",
    "managed": False,
    "custom_deps": {},
  },
]
target_os = ["android", "unix", "linux"]

下面的target-os表示运行或者编译的平台,可以根据你的要求选择.
每次修改完,执行一下gclient sync就可以的.

2.编译WebRTC

下载好了源码,查看一下源码的目录:

jeffmony@jeffmony-OptiPlex-7050:~/github/webrtc/src$ ls
abseil-in-webrtc.md  BUILD.gn             common_audio    ENG_REVIEW_OWNERS     modules        pc                       README.md  style-guide      tools                    whitespace.txt
api                  build_overrides      common_types.h  examples              native-api.md  PRESUBMIT.py             resources  style-guide.md   tools_webrtc
audio                buildtools           common_video    LICENSE               out            presubmit_test_mocks.py  rtc_base   system_wrappers  video
AUTHORS              call                 data            license_template.txt  OWNERS         presubmit_test.py        rtc_tools  test             WATCHLISTS
base                 CODE_OF_CONDUCT.md   DEPS            logging               p2p            pylintrc                 sdk        testing          webrtc.gni
build                codereview.settings  docs            media                 PATENTS        README.chromium          stats      third_party      webrtc_lib_link_test.cc

编译android平台的库:

gn gen out/Debug --args='target_os="android" target_cpu="arm" treat_warnings_as_errors=false'

如果想要编译其他的平台,可以使用:

To build for ARM64: use target_cpu="arm64"
To build for 32-bit x86: use target_cpu="x86"
To build for 64-bit x64: use target_cpu="x64"

开始编译动态库:

autoninja -C out/Debug

编译完成,生成了apk:

jeffmony@jeffmony-OptiPlex-7050:~/github/webrtc/src/out/Debug/apks$ ls
android_instrumentation_test_apk.apk        androidnativeapi.apk        androidvoip.apk        AppRTCMobile.apk        AppRTCMobileTest.apk
android_instrumentation_test_apk.apk.R.txt  androidnativeapi.apk.R.txt  androidvoip.apk.R.txt  AppRTCMobile.apk.R.txt  AppRTCMobileTest.apk.R.txt
安装一下AppRTCMobile.apk,运行一下.显示如下:

编译完成后,在 out/Debug下面发现: libjingle_peerconnection_so.so
还有android相关的jar包:

jeffmony@jeffmony-OptiPlex-7050:~/github/webrtc/src/out/Debug/lib.java/sdk/android$ ls
android_sdk_junit_tests.jar    camera_java.jar                       java_audio_device_module_java.jar                  libvpx_vp9_java.jar        peerconnection_java.jar       video_api_java.jar
audio_api_java.jar             default_video_codec_factory_java.jar  libjingle_peerconnection_java.jar                  libwebrtc.jar              screencapturer_java.jar       video_java.jar
base_java.jar                  filevideo_java.jar                    libjingle_peerconnection_metrics_default_java.jar  logging_java.jar           surfaceviewrenderer_java.jar
builtin_audio_codecs_java.jar  hwcodecs_java.jar                     libvpx_vp8_java.jar                                native_unittests_java.jar  swcodecs_java.jar

如果想导入Android-Studio,可以运行如下的指令:

build/android/gradle/generate_gradle.py --output-directory $PWD/out/Debug \
--target "//examples:AppRTCMobile" --use-gradle-process-resources \
--split-projects --canary

然后导入 out/Debug/gradle 工程

3.WebRTC介绍

WebRTC是用于Web的开放框架,可实现实时通信在浏览器中。它包括高质量的基本构建块网络上的通信,例如网络中使用的网络,音频和视频组件语音和视频聊天应用程序。
这些组件在浏览器中实现时,可以通过JavaScript API,使开发人员可以轻松实现自己的RTC Web应用程序。当然也可以移植在各个平台上.

为什么下一代的视频聊天的应用基于WebRTC来做:

  • 网络成功的关键因素在于其核心技术---例如HTML,HTTP和TCP / IP都是开放的,并且可以自由实施。
    当前,没有免费的,高质量的,完整的解决方案, 可以在浏览器中进行通信。 WebRTC启用了此功能。
  • 已经与同类最佳的语音和视频引擎集成, 在过去8年多的时间里,已将其部署在数百万个端点上。谷歌确实不向WebRTC收取版税。
  • 包括并提取关键的NAT和防火墙穿越技术,使用STUN,ICE,TURN,RTP-over-TCP以及对代理的支持。
  • 基于Web浏览器的强大功能:WebRTC通过以下方式抽象出信令, 提供直接映射到“ PeerConnection”的信令状态机。
    因此,Web开发人员可以选择使用的协议场景(例如但不限于SIP,XMPP / Jingle等)。

4.推荐几个WebRTC的学习站点

http://webrtc.github.io/webrtc-org/start/
https://webrtc.googlesource.com/src

相关文章

网友评论

    本文标题:WebRTC 项目分析(一)Android平台编译

    本文链接:https://www.haomeiwen.com/subject/zasgdktx.html