当前位置:   article > 正文

【网络通信 -- WebRTC】项目实战记录 -- linux 环境下 libmediasoup 编译与测试_mediasoup-broadcaster-demo

mediasoup-broadcaster-demo

【网络通信 -- WebRTC】项目实战记录 -- linux 环境下 libmediasoup 编译与测试

【1】编译配置 libwebrtc

【1.1】下载并配置 depot_tools

  1. 下载 depot_tools
  2. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  3. 编辑 ~/.bashrc 将 depot_tools 添加到路径中
  4. vim ~/.bashrc
  5. export PATH=$PATH:/(path to depot_tools)/depot_tools
  6. source ~/.bashrc
  7. 检查 depot_tools 是否安装配置成功
  8. which gn
  9. which gclient

【1.2】获取 WebRTC 源码

  1. 获取 WebRTC 代码
  2. fetch --nohooks webrtc
  3. 若其中发生中断则执行如下命令继续
  4. gclient sync
  5. 切换到 m94 分支并同步
  6. cd src
  7. git checkout -b m94 branch-heads/4606
  8. cd ..
  9. gclient sync --nohooks
  10. gclient runhooks
  11. 下载安装相关依赖
  12. cd src
  13. ./build/install-build-deps.sh

【1.3】编译 WebRTC

  1. # 设置编译参数
  2. 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'
  3. # 清理原编译文件
  4. gn clean out/m94
  5. # 编译
  6. ninja -C out/m94

【1.4】获取 WebRTC 相关头文件与库

  1. mkdir /home/user/libwebrtc
  2. find webrtc -name "*.h" | xargs -I {} cp --parents {} /home/user/libwebrtc
  3. cp /home/user/webrtc/src/out/m94/obj/libwebrtc.a /home/user/libwebrtc

【2】编译配置 libmediasoupclient

  1. 获取 libmediasoupclient
  2. git clone https://github.com/versatica/libmediasoupclient.git
  3. ---------------------------------------------------------------------------
  4. 编译 libmediasoupclient
  5. cd libmediasoupclient
  6. cmake . -Bbuild \
  7. -DLIBWEBRTC_INCLUDE_PATH:PATH=(webrtc 头文件路径) \
  8. -DLIBWEBRTC_BINARY_PATH:PATH=(webrtc 库文件路径)
  9. cmake . -Bbuild \
  10. -DLIBWEBRTC_INCLUDE_PATH:PATH=./deps/libwebrtc/lib_webrtc_linux/webrtc_linux/src \
  11. -DLIBWEBRTC_BINARY_PATH:PATH=./deps/libwebrtc/lib_webrtc_linux
  12. make -C build/
  13. ---------------------------------------------------------------------------
  14. 编译产物
  15. # 头文件:路径/mediasoupclient/mediasoupclient.hpp
  16. # 库文件:路径/libmediasoupclient.a

【3】编译运行 mediasoup-broadcaster-demo

mediasoup-broadcaster-demo 使用 libmediasoupclient 库实现向 mediasoup 服务器发布一个预设的视频流的功能

【3.1】编译 mediasoup-broadcaster-demo

  1. 安装依赖
  2. apt install libssl-dev pkg-config
  3. apt install libcurl4-openssl-dev
  4. ---------------------------------------------
  5. 编译安装 cpr
  6. 注意 : 下载 tag 1.4.0
  7. $ git clone https://github.com/libcpr/cpr
  8. $ git clone https://github.com/whoshuu/cpr
  9. $ cd cpr && mkdir build && cd build
  10. $ cmake .. -DCPR_USE_SYSTEM_CURL=ON
  11. $ cmake --build .
  12. $ sudo cmake --install .
  13. ---------------------------------------------
  14. 下载及编译 mediasoup-broadcaster-demo
  15. git clone https://github.com/versatica/mediasoup-broadcaster-demo.git
  16. cmake . -Bbuild \
  17. -DLIBWEBRTC_INCLUDE_PATH:PATH=(libwebrtc 头文件路径) \
  18. -DLIBWEBRTC_BINARY_PATH:PATH=(libwebrtc 库文件路径) \
  19. -DOPENSSL_INCLUDE_DIR:PATH=(openssl 头文件路径) \
  20. -DCMAKE_USE_OPENSSL=ON
  21. make -C build
  22. ---------------------------------------------

【3.2】运行测试 mediasoup-broadcaster-demo

  1. cd build
  2. # 指定 mediasoup 服务器的地址
  3. export SERVER_URL=https://192.168.0.127:4443
  4. # 指定房间号
  5. export ROOM_ID=llo3ybo1
  6. # 局域网中需要禁用 ssl,公网不用
  7. export VERIFY_SSL=false
  8. # 运行
  9. ./broadcaster

【4】MediaSoup 流媒体服务器推流的其他方法

【4.1】基于 FFMPEG 的广播方法

参见 【网络通信 -- WebRTC】项目实战记录 -- 基于 MediaSoup 的 FFMPEG 接入

【4.2】基于 runner365/cpp_streamer 的广播方法

  1. 完成编译后执行如下命令即可实现向 MediaSoup 推流
  2. ./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

  1. 解决方案
  2. apt-get install ninja-build

【2】depot_tools / fetch:第8行:exec:python:未找到

  1. 解决方案
  2. ln -s /usr/bin/python2.7 /usr/bin/python

参考致谢

本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。

【1】Linux平台Mediasoup客户端开发指南

【2】ERROR: Cannot find Ninja 

【3】C++ Requests: Curl for People 

【4】runner365/cpp_streamer

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/797584
推荐阅读
相关标签
  

闽ICP备14008679号