之前根据实际测试,发现基于LAV Filters的方式无法很好地完成我的需求,所以转头研究起了基于VLC-Qt的三方库进行QML的rtsp流视频播放,其中demo的例子直接搬运的这位老哥的CSDN博客:QML中使用 VLC-Qt 播放网络视频流(附实例)_喵喵叫的猴的博客-CSDN博客_qml vlc
这篇博客其实讲的已经很详细了,首先先去VLC-Qt官网把对应版本的.7z压缩包文件下下来,然后解压放在一个路径下面,将lib、bin、include等文件夹下面的所有内容分别拷贝至对应的QT安装目录的同名文件夹下面,然后在.pro文件里面添加对应的Lib库和INCLUDE_PATH就可以了。如下图: 另外为了区分debug和release版本,做了一个配置的判断。
配置好之后就可以在main.cpp里面include所需的VLC库了,链接里面很清楚,不做赘述,另外使用
VlcCommon::setPluginPath("\\mingw53_32\\bin\\plugins\\"); //将VLC文件放入Qt安装目录后的plugins文件夹 VlcQmlVideoPlayer::registerPlugin();
然后在QML文件里面import VLCQt 1.0即可,此时系统会报错,说找不到该模块,是因为我们在cpp文件里面引用的相关文件,所以可直接忽略。
此时工程直接运行即可,rtsp流可以使用VLC player进行流生成,也比较简单,在此搬运一个链接就行VLC搭建RTSP直播流,图文介绍_音视频开发老舅的博客-CSDN博客_rtsp vlc
然后就可以播放了,但是偶尔会出现解码失败的情况,就是能出现声音,但是加载不出来视频,有点奇怪,还在查找到底是什么原因。
有人说是因为有一个变量一直在生成和销毁导致关键帧没捕获到的原因,还有人说是CPU性能没跟上的原因……另外在运行时还会报下面这种错误。看不懂……
demo创建完毕,后续复杂功能可继续添加