因为根据官方的文档QT如果需要进行视频通话,所用的SDK需要开启MSQOGL这个过滤器,但官方所给的现成的SDK并没有开启这个,所以需要我们手动去编译开启这个过滤器
使用的linphone-sdk是官网最新版
指令输入还是得加个 --recursive要不然下不全
git clone BC / public / linphone-sdk · GitLab --recursive
具体进行编译前需要的软件在readMe里有,或者参考文章编译linphone-desktop git 最新版本 2024-05-12-CSDN博客
本质上desktop和sdk编译时需要的环境一样 (这大哥写的很完整)
编译
//先创建一个build文件夹 和linphone-sdk 同级目录下
mkdir build
//进入build目录
cd build
编译之前我们找到sdk里的 mediastreamer2,打开CMakeLists.txt
搜索option(ENABLE_QT_GL "Enable Qt OpenGL rendering support." OFF)
这里直接改成ON好像成功不了
所以在下面加一行set(ENABLE_QT_GL ON) 一定能开启
接下来就可以开始编译了,编译有这些模块选项(根据需求自行抉择)
ENABLE_OPENH264
ENABLE_HW_SANITIZER
ENABLE_UNIT_TESTS
ENABLE_WINDOWS_TOOLS_CHECK
ENABLE_AMRNB not defined
ENABLE_AMRWB not defined
ENABLE_G729 not defined
ENABLE_G729B_CNG
ENABLE_WASAPI
ENABLE_AV1
ENABLE_FFMPEG
ENABLE_H263
ENABLE_H263P
ENABLE_MPEG4
ENABLE_JPEG
ENABLE_LIBYUV
ENABLE_OPENH264
ENABLE_EMBEDDED_OPENH264
ENABLE_QRCODE
ENABLE_V4L
ENABLE_VPX
ENABLE_MSWINRTVIDEO
ENABLE_DNS_SERVICE
ENABLE_MICROSOFT_STORE_APP
ENABLE_EKT_SERVER_PLUGIN
ENABLE_LIME_X3DH
ENABLE_OPENSSL
ENABLE_PQCRYPTO
ENABLE_ZRTP
ENABLE_GOCLEAR
ENABLE_SWIFT_WRAPPER_COMPILATION
ENABLE_SWIFT_DOC
ENABLE_AAUDIO
ENABLE_OBOE
ENABLE_CAMERA2
要开启哪个模块就在cmake 命令最后加上 (如果开h264的话) -DENABLE_OPENH264=ON
比如你要开启h264模块,且路径sdk的路径为 ../linphone-sdk
则编译输入以下命令 (打开控制台输入)
格式如下:
cmake ../linphone-sdk -DENABLE_OPENH264=ON
如果一切顺利,会在build文件夹生成sln文件,
我使用的vs2019进行编译
我们打开对应的sln会出现以下选项
先进行build 完成后再进行 install 如果顺利的话就会在build目录下的Linphone-sdk/desktop生成
直接扔到qt对应的目录,再进行引用就能使用了。
对于MSQOGL的实现致使第一步,接下来要进行代码的实现
具体参考qml show video help · Issue #827 · BelledonneCommunications/linphone-desktop (github.com)
编译过程的问题
R:\linphoneNew\5.3\linphone-sdk\liblinphone\tester\message_tester.c(2854,1): error C2220: 以下警告被视为错误 [R:\linphoneNew\5.3 \linphoneAgainCmake\liblinphone\tester\liblinphone-tester.vcxproj] R:\linphoneNew\5.3\linphone-sdk\liblinphone\tester\message_tester.c(2854,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将 该文件保存为 Unicode 格式以防止数据丢失
我每次调整为unicode 再关进去还是不行,最后是更改windows上的语言格式才能完成
步骤如下
设置打开 时间和语言 管理语言设备
勾起了进行编译就能完成了
在vs2019构建的过程中会出现copy失败的情况
在build路径下的linphone-sdk/desktop会出现 编译过程文件丢失的情况,我们需要根据编译过程中的错误日志去手动创建丢失的文件夹 。 或者像我一样直接创个空的desktop每次编译前先放到要编译的文件夹里, bin是空文件夹