WebRTC是在浏览器中使用实时通讯系统的库,但是除了在浏览器中使用,我们还可以在Android、iOS、Windows、Linux、MacOS等系统上使用,是一个完全跨平台的库,本文就是解决Android平台下WebRTC 的编译问题。
1.下载WebRTC源码
- 安装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 - 创建一个源码目录dir
执行指令 fetch --nohooks webrtc_android,然后执行gclient sync - 兼容各个平台
打开.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
网友评论