1.服务器使用 mediasoup提供的媒体服务器。模式是SFU . SFU 和 MCU的优点和缺点 。请自行百度进行区分。SFU还是比较节省服务器的资源的。
2.mediasoup官网自带都有 libmediaclient 的c++开发库。方便直接 桌面客户端和web直接进行通信.
桌面客户端需要webrtc的支持。
3.工具准备
服务器: 官网准备服务器。按照教程 可以调试通过网页的视频通讯。例子很简单.
桌面客户端:webrtc
并且需要版本是M74 声望的镜像源地址目前可以使用。编译通过.
.按照步骤完成 webrtc的编译.注意编译参数需要这样的 否则会有编译问题和 rtti的 C++继承问题或者完全按照meidiasoup的官网进行.
官网编译参数:
$ gn gen out/mybuild-m74 --args='is_debug=false is_component_build=false is_clang=false rtc_include_tests=false rtc_use_h264=true rtc_enable_protobuf=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false use_ozone=true'
我自己的编译参数:加上了对QTcreator查看代码的支持:
gn gen out/linux_boringssl --args='is_debug=false target_os="linux" target_cpu="x64" treat_warnings_as_errors=false is_component_build=false is_clang=false rtc_include_tests=false rtc_use_h264=true rtc_enable_protobuf=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false use_ozone=true' --ide=qtcreator
直接编译二进制测试文件比较简单。编译成so对外提供sdk的话 需要注意ssl的冲突。和编译相关参数 比如: -fPIC。
默认libmediaclient编译后是.a 需要修改CMakeLists 文件 增加
### 添加 -fPIC
第一种 (笔者所采用的,因需修改原始CMakeLists.txt文件,感觉不太方便,非常希望能在cmake命令参数中处理)
add_compile_options(-fPIC)
第二种
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
。
后续详细的编译问题的坑再进行总结.
目前使用方式是 基础webtct进行sdk的封装。多个库 入 Libwebsockets .libmeidasoupclient 和libwebrtc.a 都 编译成一个.so动态库的方式 对外 提供基本的视频服务。
====================杨金彪======================
2019.12.20
北京.