赞
踩
【1】编译配置 libwebrtc
【1.1】下载并配置 depot_tools
- 下载 depot_tools
- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
-
- 编辑 ~/.bashrc 将 depot_tools 添加到路径中
- vim ~/.bashrc
- export PATH=$PATH:/(path to depot_tools)/depot_tools
- source ~/.bashrc
-
- 检查 depot_tools 是否安装配置成功
- which gn
- which gclient
【1.2】获取 WebRTC 源码
- 获取 WebRTC 代码
- fetch --nohooks webrtc
-
- 若其中发生中断则执行如下命令继续
- gclient sync
-
- 切换到 m94 分支并同步
- cd src
- git checkout -b m94 branch-heads/4606
- cd ..
- gclient sync --nohooks
- gclient runhooks
-
- 下载安装相关依赖
- cd src
- ./build/install-build-deps.sh
【1.3】编译 WebRTC
- # 设置编译参数
- gn gen out/m94 --args='is_debug=true is_component_build=false is_clang=false rtc_include_tests=false rtc_use_h264=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false use_ozone=true ffmpeg_branding="Chrome" proprietary_codecs=true use_glib=false rtc_use_dummy_audio_file_devices=true rtc_build_examples=false use_partition_alloc=false rtc_enable_protobuf=false rtc_build_json=true'
-
- # 清理原编译文件
- gn clean out/m94
-
- # 编译
- ninja -C out/m94
【1.4】获取 WebRTC 相关头文件与库
- mkdir /home/user/libwebrtc
- find webrtc -name "*.h" | xargs -I {} cp --parents {} /home/user/libwebrtc
-
- cp /home/user/webrtc/src/out/m94/obj/libwebrtc.a /home/user/libwebrtc
【2】编译配置 libmediasoupclient
- 获取 libmediasoupclient
-
- git clone https://github.com/versatica/libmediasoupclient.git
-
- ---------------------------------------------------------------------------
-
- 编译 libmediasoupclient
-
- cd libmediasoupclient
-
- cmake . -Bbuild \
- -DLIBWEBRTC_INCLUDE_PATH:PATH=(webrtc 头文件路径) \
- -DLIBWEBRTC_BINARY_PATH:PATH=(webrtc 库文件路径)
-
- cmake . -Bbuild \
- -DLIBWEBRTC_INCLUDE_PATH:PATH=./deps/libwebrtc/lib_webrtc_linux/webrtc_linux/src \
- -DLIBWEBRTC_BINARY_PATH:PATH=./deps/libwebrtc/lib_webrtc_linux
-
- make -C build/
-
- ---------------------------------------------------------------------------
-
- 编译产物
-
- # 头文件:路径/mediasoupclient/mediasoupclient.hpp
- # 库文件:路径/libmediasoupclient.a
【3】编译运行 mediasoup-broadcaster-demo
mediasoup-broadcaster-demo 使用 libmediasoupclient 库实现向 mediasoup 服务器发布一个预设的视频流的功能
【3.1】编译 mediasoup-broadcaster-demo
- 安装依赖
- apt install libssl-dev pkg-config
- apt install libcurl4-openssl-dev
-
- ---------------------------------------------
-
- 编译安装 cpr
-
- 注意 : 下载 tag 1.4.0
-
- $ git clone https://github.com/libcpr/cpr
- $ git clone https://github.com/whoshuu/cpr
- $ cd cpr && mkdir build && cd build
- $ cmake .. -DCPR_USE_SYSTEM_CURL=ON
- $ cmake --build .
- $ sudo cmake --install .
-
- ---------------------------------------------
-
- 下载及编译 mediasoup-broadcaster-demo
-
- git clone https://github.com/versatica/mediasoup-broadcaster-demo.git
-
- cmake . -Bbuild \
- -DLIBWEBRTC_INCLUDE_PATH:PATH=(libwebrtc 头文件路径) \
- -DLIBWEBRTC_BINARY_PATH:PATH=(libwebrtc 库文件路径) \
- -DOPENSSL_INCLUDE_DIR:PATH=(openssl 头文件路径) \
- -DCMAKE_USE_OPENSSL=ON
-
- make -C build
-
- ---------------------------------------------
【3.2】运行测试 mediasoup-broadcaster-demo
- cd build
-
- # 指定 mediasoup 服务器的地址
- export SERVER_URL=https://192.168.0.127:4443
-
- # 指定房间号
- export ROOM_ID=llo3ybo1
-
- # 局域网中需要禁用 ssl,公网不用
- export VERIFY_SSL=false
-
- # 运行
- ./broadcaster
【4】MediaSoup 流媒体服务器推流的其他方法
【4.1】基于 FFMPEG 的广播方法
参见 【网络通信 -- WebRTC】项目实战记录 -- 基于 MediaSoup 的 FFMPEG 接入
【4.2】基于 runner365/cpp_streamer 的广播方法
- 完成编译后执行如下命令即可实现向 MediaSoup 推流
-
- ./mediasoup_push_bench -i (媒体文件) -o "https://(mediasoup 服务器地址):4443?roomId=(房间ID)&userId=(用户ID)" -n (推流数量)
问题与解决方案
【1】depot_tools/ninja.py: Could not find Ninja in the third_party of
- 解决方案
- apt-get install ninja-build
【2】depot_tools / fetch:第8行:exec:python:未找到
- 解决方案
- ln -s /usr/bin/python2.7 /usr/bin/python
参考致谢
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。