WEBRTC +QT(5.15.2 + MSVC2019)

WEBRTC +QT(5.15.2 + MSVC2019)

一、编译

下载编译参考博客https://blog.csdn.net/aggs1990/article/details/118230538
我的编译环境:

vs2019
windows11 
SDK_VERSION = '10.0.22621.0'//(setup_toolchain.py中可以指定sdk版本)

我的编译选项:

gn gen out/win --ide="vs2019" --args="use_custom_libcxx=false use_custom_libcxx_for_host=false use_cxx17=false"
ninja -C out/win

这些个编译选项要根据自己实际情况来判定开启哪些选项,而不是照抄别人的,因为每个人的开发环境,编译工具等可能不一样,所以,最好是先不要在参数中指定任何的选项,先编译一次,如果出现错误,我们再根据出现的错误去指定对应的选项。
(1)比如我上面的use_custom_libcxx=false use_custom_libcxx_for_host=false这俩选项开启是因为我编译出的webrtc.lib库,在引入qt中的时候,提示我下面的错误
在这里插入图片描述
这是因为WebRtc编译默认使用libc++来编译,而Qt使用GCC编译的时候使用的是libstdc++,这样在编译的过程中就会导致用到std::string的地方,就会编译报错,所以加上了use_custom_libcxx=false use_custom_libcxx_for_host=false
(2)use_cxx17=false这个选项开启是因为编译webrtc源码过程中提示我某些源码需要至少c++20的支持,查看D:\3rdpat\webrtc\webrtc-check\src\build\config\compiler\BUILD.gn该文件下,发现这样一段代码

    if (use_cxx17) {
      cflags_cc += [ "-std=c++17" ]
    } else {
      cflags_cc += [ "-std=c++20" ]
    }

所以设置use_cxx17=false这个选项就可以使用c++20,如果不设置默认为c++17,而有的人则默认是c++14,需要指定c++17,这都要根据实际情况来指定。
(3)还有一个编译错误没有截图了,大概意思是这些代码在c++20中已经弃用了,所以我在
D:\3rdpat\webrtc\webrtc-check\src\build\config\compiler\BUILD.gn
文件中增加了以下的宏定义
defines += ["_SILENCE_CXX20_IS_POD_DEPRECATION_WARNING=1","_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS=1"]
(4)链接不到windows库
在这里插入图片描述
这里的timeKillEvent是windowssdk的函数,这里链接不到,那就是windows的库找不到或者版本不对,在pro文件中链接下库文件

#windows系统库
LIBS += -lwinmm -liphlpapi -lwbemuuid -lSecur32 -lAdvapi32 -lMmdevapi -lMfuuid -lmsdmo -ldmoguids -lwmcodecdspuuid

总结:webrtc源码编译的过程其实是一个解决问题的过程,基本思路就是根据错误信息,指定不同的编译选项,或者配置需要的编译环境,基本可以解决大部分问题,实在不行也可以直接修改部分源码。

二、qtcreater中引入webrtc库

pro文件配置如下


# 添加WebRTC库路径
WEBRTC_ROOT = D:/3rdpat/webrtc/webrtc-check/src
#头文件
INCLUDEPATH += $$WEBRTC_ROOT/third_party/abseil-cpp
INCLUDEPATH += $$WEBRTC_ROOT
#库文件
LIBS += -L$$WEBRTC_ROOT/out/win/obj
LIBS += -lwebrtc

#windows系统库
LIBS += -lwinmm -liphlpapi -lwbemuuid -lSecur32 -lAdvapi32 -lMmdevapi -lMfuuid -lmsdmo -ldmoguids -lwmcodecdspuuid

DEFINES += WEBRTC_WIN NOMINMAX


#解决运行时库的问题
win32:CONFIG(debug, debug|release): {
    QMAKE_CFLAGS_DEBUG += -MTd
    QMAKE_CXXFLAGS_DEBUG += -MTd
}
else:win32:CONFIG(release, debug|release): {
    QMAKE_CFLAGS_RELEASE += -MT
    QMAKE_CXXFLAGS_RELEASE += -MT
}

三、qt+webrtc实现简单的音视频采集+显示

未完,更新中…

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值