Files
taoyao/docs/WebRTC.md
2023-12-09 09:53:30 +08:00

174 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WebRTC
本文档内容旨在独立编译`WebRTC`项目,并非必需使用。
## libwebrtc
* https://webrtc.github.io/webrtc-org/native-code/android/
* https://webrtc.github.io/webrtc-org/native-code/development/
* https://webrtc.github.io/webrtc-org/native-code/development/prerequisite-sw/
* https://www.chromium.org/developers/how-tos/install-depot-tools/
国内镜像需要配置比较麻烦,建议直接按需购买能够访问外网的主机,用完直接释放,配置建议:
* 内存`8G`
* 四核`CPU`
* 硬盘`100G`
* 系统`Ubuntu 20.xx`
* 宽带按需`100MB/s`
* 整个下载过程大概需要半到一个小时
* 整个编译过程大概需要一到两个小时
## 代码编译
```
# 编译工具
mkdir -p /data
cd /data
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 下载源码
mkdir -p /data/webrtc
cd /data/webrtc
/data/depot_tools/fetch --nohooks webrtc_android
#/data/depot_tools/gclient sync
# 切换分支
cd src
git checkout -b m94 branch-heads/4606
/data/depot_tools/gclient sync
# 编译依赖
./build/install-build-deps.sh
./build/install-build-deps-android.sh
source ./build/android/envsetup.sh
# 编译配置:./tools_webrtc/android/build_aar.py
---
'target_os' : 'android',
'is_clang' : True,
'is_debug' : False,
'use_rtti' : True,
'rtc_use_h264' : True,
'use_custom_libcxx' : False,
'rtc_include_tests' : False,
'is_component_build' : False,
'treat_warnings_as_errors': False,
'use_goma' : use_goma,
'target_cpu' : _GetTargetCpu(arch)
---
# 编译项目
./tools_webrtc/android/build_aar.py --build-dir ./out/release-build/ --arch x86 x86_64 arm64-v8a armeabi-v7a
# 安装ninja
apt install ninja-build
# 环境变量
PATH=$PATH:/data/webrtc/src/third_party/depot_tools/
# 生成静态库
cd /data/webrtc/src
/data/depot_tools/autoninja -C ./out/release-build/x86 webrtc &&
/data/depot_tools/autoninja -C ./out/release-build/x86_64 webrtc &&
/data/depot_tools/autoninja -C ./out/release-build/arm64-v8a webrtc &&
/data/depot_tools/autoninja -C ./out/release-build/armeabi-v7a webrtc
# 打包文件
zip -r lib.zip out libwebrtc.aar
# 提取源代码
zip -r java.zip \
sdk/android/api/ \
sdk/android/src/ \
rtc_base/java/src/ \
modules/audio_device/android/java/src/ \
out/release-build/arm64-v8a/gen/sdk/android/video_api_java/generated_java/input_srcjars/ \
out/release-build/arm64-v8a/gen/sdk/android/peerconnection_java/generated_java/input_srcjars/
# 提取头文件
mkdir src
vim header.sh
---
#!/bin/bash
src=`find ./ -name "*.h"`
for header in $src
do
echo "cp header file $header"
cp --parents $header src
done
src=`find ./ -name "*.hpp"`
for header in $src
do
echo "cp header file $header"
cp --parents $header src
done
---
sh header.sh
zip -r src.zip src
```
[WebRTC](https://pan.baidu.com/s/1E_DXv32D9ODyj5J-o-ji_g?pwd=hudc)
## libmediasoupclient
https://mediasoup.org/documentation/v3/libmediasoupclient/installation/
```
# 编译
cmake . -B build \
-DCMAKE_BUILD_TYPE=Debug | Release \
-DMEDIASOUPCLIENT_LOG_DEV=OFF \
-DMEDIASOUPCLIENT_LOG_TRACE=OFF \
-DMEDIASOUPCLIENT_BUILD_TESTS=OFF \
-DLIBWEBRTC_BINARY_PATH:PATH=PATH_TO_LIBWEBRTC_BINARY \
-DLIBWEBRTC_INCLUDE_PATH:PATH=PATH_TO_LIBWEBRTC_SOURCES
make -C build
make install -C build
```
## Linux鸿蒙
```
# 编译工具
mkdir -p /data
cd /data
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 下载源码
mkdir -p /data/webrtc
cd /data/webrtc
/data/depot_tools/fetch --nohooks webrtc
#/data/depot_tools/gclient sync
# 切换分支
cd src
git checkout -b m94 branch-heads/4606
/data/depot_tools/gclient sync
# 编译依赖
./build/install-build-deps.sh
# 鸿蒙工具
wget https://repo.huaweicloud.com/openharmony/os/4.0-Release/ohos-sdk-windows_linux-public.tar.gz
# 编译项目
./buildtools/linux64/gn gen out/Release-clang-x64 --args='target_os="linux" target_cpu="x64" is_clang=true is_debug=false use_rtti=true rtc_use_h264=true use_custom_libcxx=true rtc_include_tests=false is_component_build=false treat_warnings_as_errors=false rtc_build_examples=false'
./third_party/depot_tools/ninja -C out/Release-clang-x64
./buildtools/linux64/gn gen out/Release-clang-x86 --args='target_os="linux" target_cpu="x86" is_clang=true is_debug=false use_rtti=true rtc_use_h264=true use_custom_libcxx=true rtc_include_tests=false is_component_build=false treat_warnings_as_errors=false rtc_build_examples=false'
./third_party/depot_tools/ninja -C out/Release-clang-x86
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm
./buildtools/linux64/gn gen out/Release-clang-arm --args='target_os="linux" target_cpu="arm" is_clang=true is_debug=false use_rtti=true rtc_use_h264=true use_custom_libcxx=true rtc_include_tests=false is_component_build=false treat_warnings_as_errors=false rtc_build_examples=false'
./third_party/depot_tools/ninja -C out/Release-clang-arm
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
./buildtools/linux64/gn gen out/Release-clang-arm64 --args='target_os="linux" target_cpu="arm64" is_clang=true is_debug=false use_rtti=true rtc_use_h264=true use_custom_libcxx=true rtc_include_tests=false is_component_build=false treat_warnings_as_errors=false rtc_build_examples=false'
./third_party/depot_tools/ninja -C out/Release-clang-arm64
```
* https://github.com/webrtc-sdk/webrtc-build/blob/main/docs/build.md