Ubuntu下基于Qt框架,使用WebRtc开发总结(二):Qt工程配置总结

.Pro文件的配置

那么,接上一部分,根据自己是否需要显示视频,新建一个Qt的控制台/窗口程序,并根据自己的开发需要添加Qt的组件,我的工程添加了如下的组件:

QT += core websockets network gui

由于我不使用WebRtc源码中,连接信令服务器的WebSocket实现,而使用Qt框架的QWebSocket,因此添加了websockets。再者我习惯用QImage来进行图片的读写等操作,因此加入了gui组件,又用到了tcp通信,所以network组件也加上了。

CONFIG += c++11 console

没什么好说的,编译加入c++11的标准,然后弹出控制台方便看日志,个人习惯,如果是窗口应用不想这样的话,不用便是了。

DEFINES += QT_DEPRECATED_WARNINGS QT_NO_KEYWORDS

这一句一定要加上,不然编译会报错,原因是WebRtc的源码中,重新定义了emit关键字,这和Qt的信号槽机制的emit关键字是冲突的,因此,要屏蔽掉Qt的关键字,不然代码在编译链接WebRtc静态库的时候,就知道满篇奇怪的报错有多头疼了。由于使用了QT_NO_KEYWORDS宏定义,因此emit、signals、slots都不用使用了,如果想使用信号槽机制的话,必须用宏来代替,分别是Q_EMIT、Q_SIGNALS、Q_SLOTS。使用起来和平时没有任何区别,唯一的区别就是Q_EMIT XX();这样emit的信号,不能跳转到函数声明的地方(就是常用的按住ctrl+鼠标左键),不过感觉无所谓。

DEFINES += HAVE_WEBRTC_VOICE  WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE  WEBRTC_USE_H264 WEBRTC_INITIALIZE_FFMPEG  FFMPEG_H264_DECODER  WEBRTC_POSIX


这一长串,是WebRtc的宏定义,分别对应的关系是:前两个对应开启WebRtc对音频轨道的使用,后面则是对应视频流的编解码格式开关,对应第一部分的编译静态库的编译开关,要开启了自定义编解码格式的开关编译的静态库,这里才有用。第三到第五个就是打开WebRtc对h264编码的开关,以及使用FFMPEG三方库进行编解码的格式转换。最后一个是声明自己是LINUX系统,不然的话会报错。

这里多说两句,关于视频编解码开关为什么要这样和音频方面的东西:

首先是为什么需要h264编解码,其原因就是,如果你想和苹果手机利用WebRtc来进行实时视频,你只能用h264编码,而不是vp8,原因就是在苹果手机上,只有Safari浏览器支持运行WebRtc的JS程序,而Safari上的WebRtc只支持h264编码,就是这么坑。而且并不是完成了第一部分编译WebRtc,然后在这里加上宏定义就可以使用h264编解码了,还需要修改源码的编码部分,以便让h264编码成为首选编码,这部分内容网上有很多教程,由于改动不多,我也忘得差不多了,自行查找一下应该就可以解决了。

其次就是音频方面,WebRtc音频需要pulseaudio驱动的支持,在终端输入ps -ae | grep pulseaudio,确认是否开启了pulseaudio驱动进程,由于ubuntu桌面版和服务器版的区别,桌面版默认安装并且开机自启,但如果要部署到服务器上,就需要安装pulseaudio驱动了。

unix|win32: LIBS += -lpthread

unix|win32: LIBS += -ldl-2.27

unix|win32: LIBS += -lX11

这三个系统库是必须的,我记得是,如果不是请指正,如果没有的话,请自行apt install或者去下载源码编译安装。另外,我的系统是ubuntu18.04,不保证低版本的系统是否需要别的系统库,如果版本不同,导致的系统库需求不同,请自行摸索。

最后就是添加WebRtc静态库,这个不用多说,大家应该都会的,右键添加外部库选进输出目录编译出来的静态库.a文件就好,头文件路径选择WebRtc源码根目录src。

这部分到此结束,下一部分将对.gn文件和.ninja文件进行一个梳理。

另外,如果有关于WebRtc想要交流的问题,或是我文章中有错误的地方请指正,因为这些也是我摸索出来的经验总结,不一定完全正确,我的邮箱是:longerlsx@qq.com。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值