qt 实现RTSP&RTMP拉流,实时显示视频流
最近项目需求,要实现一个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用不了,需要自己编译。
相关文章
- QT QMap介绍与使用「建议收藏」
- C/C++ Qt TableWidget 表格组件应用
- Qt Qml 中动态创建 & 销毁视频容器技巧(二)
- Ubuntu18.04下Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题解决方法
- 使用 Qt 连接远程 MySQL 数据库(qt连接远程mysql)
- Qt .ui文件的使用
- Linux下Qt环境快速安装指南(linux下qt安装)
- 在Linux中安装Qt第三方库的指南(linux安装qt库)
- 快速搭建 Qt 与 MySQL 的数据库应用(qt使用mysql)
- 如何在Linux下编译Qt?(linux下编译qt)
- 从零开始:Qt 编译在 Linux 上的指南(qt编译linux)
- 崭新的体验——Qt在Linux的革新之旅(qtlinuxso)
- GUI应用Linux下Qt开发GUI应用:实现梦想的开发之路(linux下qt开发)
- Linux平台上Qt程序开发发布实践(linuxqt程序发布)
- 深入浅出:Qt在嵌入式Linux中的开发(qt嵌入式linux)
- 使用Qt框架插入MySQL中的数据(qt插入mysql)
- Qt在Linux操作系统中的运行和应用(qt运行linux)
- Qt与SQLServer结合,提升开发效率(qt和sqlserver)
- 编程使用Qt快速实现SQLServer数据库编程(qt中sqlserver)
- 比较QT与MSSQL数据库的优势及特点(qtsql mssql)
- 使用Linux和Qt搭建强大的应用环境(linux qt 环境)
- AMP MySQL升级提升数据库性能的必要之举(amp mysql升级)
- 如何增加Oracle数据库的AMP值(amp值oracle)
- AMP与Oracle结合提升数据库性能($amp oracle)