qt 实现RTSP&RTMP拉流,实时显示视频流

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u012532263/article/details/102736700

最近项目需求,要实现一个rtsp视频流,经过一番了解之后,最后选择两种方式进行测试对比,一个是基于ffmpeg编码实现rtsp拉流,另外一个则是基于VLC开源的qt第三方库,实在github上搜索到的 key: qt vlc。

首先粗略讲下ffmpeg编码怎么实现rtsp拉流呢?没有接触之前,感觉很高深的样子,其实并不然,ffmpeg内部基本都帮你实现了,类似打开摄像头一样的流程,使用avformat_open_input打开流地址,然后设置参数就可以开始av_read_frame解析包,最从YUV转位RGB32共qt显示即可。 rtsp流有个地址,例如: rtsp://192.168.17.112/tmp.h264, 这个是在自己电脑上搭建的基于live555流服务器地址,方便测试。首先到ffmpeg官网下载windows开发SDK,地址https://ffmpeg.zeranoe.com/builds/,我下载的是win32版本的,需要下载share和dev两部分,解压之后有bin,lib,include三部分内容,lib和include用于编成,bin里面有dll和自带的三件套ffmpeg,ffplay,ffprobe,先用ffplay命令测试了一下rtsp流地址是否可用如下:ffplay rtsp://192.168.17.112/tmp.h264 果然可以正常显示测试文件的画面了

准备工作都做好了,那就开始编程吧,主要流程上面都讲过了,就不过多描述了,直接上核心代码:
注意:代码里面有一个rtsp地址,编译运行的时候记得修改为自己的测试地址,我也找了一个网络的rtmp地址,目前是还可以使用,后面就不知道能不能用了,rtsp和rtmp一样的使用就是把地址更换一下,目前没有发现什么不一样的,也没有过多去研究。

rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp

pro 配置ffmpeg SDK

拉流使用一个线程单独操作,在run里面循环解析流数据,在发送到主线程UI显示画面

运行结果:

qt vlc用法在另外一遍在说了,

包含ffmpeg SDK的完整工程下载地址:https://download.csdn.net/download/u012532263/11922757
打开后直接编译运行即可,qt5.9.7mingw版本,msvc版本的可能fffmpeg的SDK用不了,需要自己编译。

猜你喜欢

转载自blog.csdn.net/u012532263/article/details/102736700