从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
原文地址:http://blog.yundiantech.com/?log=blog&id=9
前面讲解了如何用FFMPEG解码视频。
现在,我们就着手用FFMPEG+Qt写一个视频播放器吧:
由于现在我们需要显示图像了,因此现在开始需要使用Qt GUI工程了。
创建工程的时候记得选择Qt GUI应用。
引用FFMPEG请参考前面的文章,这里不再介绍。
做过图像界面开发的都知道,任何耗时的操作都不能放在主线程进行,一旦主线程阻塞了,那么体现出来的就是界面卡了。 而我们读取视频和解码视频是一个非常耗时的操作,因此需要另外开辟一个线程来专门做这件事。
Qt里面线程的用法 则是写一个类继承QThread, 然后重载其run函数,把耗时的操作全部放入run函数。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
这里run函数里面就是写我们读取视频和解码视频的代码了;
读取和解码还是和前面说的一样的方法:
改动的一点是:
由于我们需要用Qt的控件来显示,因此是把解码之后的YUV数据转换成了RGB32格式的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
同时将转换后的RGB32数据存入QImage对象:
1 2 |
|
由于我们不能够在子线程中操作界面,(操作界面只能在主线程中进行,几乎所有的图形界面开发都是这样设定),因此我们只能给主线程发送信号,信号带上这个QIMage,让主线程帮忙把这个图像显示出来。
声明信号:
1 2 |
|
发送信号:
1 2 3 4 |
|
主线程绑定并接收信号:
1 2 |
|
信号处理函数如下:
1 2 3 4 |
|
主线程显示图像 则是通过QPainter直接绘制:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
运行之后的程序如下:
当然这个离播放器还有十万八千里的步伐,后面我们将会一步一步完善它。
古语有云:不积跬步,无以至千里;不积小流,无以成江海。
写代码也一样,得慢慢来,一步一步往目标走,总能成功。
完整的工程下载地址:
http://download.csdn.net/detail/qq214517703/9624527
音视频技术交流讨论欢迎加 QQ群 121376426
原文地址:http://blog.yundiantech.com/?log=blog&id=9
从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像相关推荐
- 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用
从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用F ...
- 从零开始学习音视频编程技术--转自雲天之巔
此为转载文章,主要是为了个人阅读方便,将博主的系列文章罗列出来,点击直接跳转. 从零开始学习音视频编程技术(一) 视频格式讲解 从零开始学习音视频编程技术(二) 音频格式讲解 从零开始学习音视频编程技 ...
- 从零开始学习音视频编程技术(二) 音频格式讲解
从零开始学习音视频编程技术(二) 音频格式讲解 原文地址:http://blog.yundiantech.com/?log=blog&id=5 1. 音频简介 前面我们说过视频有一个每秒钟采集 ...
- 从零开始学习音视频编程技术(四) FFMPEG的使用
零开始学习音视频编程技术(四) FFMPEG的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=7 音视频开发中最常做的就是编解码的操作了,以H ...
- 从零开始学习音视频编程技术(二十一) 录屏软件开发之最终完善
原文地址:http://blog.yundiantech.com/?log=blog&id=28 上面我们已经生成了录屏的视频,然而这个视频并不是理想中的那样,随时时间的增加,音视频会越来越不 ...
- 从零开始学习音视频编程技术(42) AAC数据解析
AAC基本格式 AAC音频格式有ADIF和ADTS: ADIF:Audio Data Interchange Format 音频数据交换格式.这种格式的特征是可以确定的找到这个音频数据的开始,不需进行 ...
- FFMPEG Qt视频播放器之美化界面
到这,播放器功能基本都已经实现了,现在就是把界面美化一下就好了: 美化界面直接使用Qt的QSS来做,QSS语法和CSS非常相似,还是相当好用的. 美化后的界面如下: 由于做界面是一件相对技术含量比较低 ...
- Android 音视频深入 十六 FFmpeg 推流手机摄像头,实现直播 (附源码下载)
源码地址 https://github.com/979451341/RtmpCamera/tree/master 配置RMTP服务器,虽然之前说了,这里就直接粘贴过来吧 1.配置RTMP服务器 这个我 ...
- C++音视频编程探秘
C++音视频编程探秘(C++ Audio and Video Programming Unveiled) 一.引言(Introduction) C++音视频编程简介(Overview of C++ A ...
最新文章
- Linux系统16进制形式查看二进制文件
- 在linux下配置java,在Linux下配置Java开发环境
- PHP自学3——在html的table标签中显示用户提交表单
- bat循环导oracle,Oracle备份恢复与批处理文件实操
- 深入浅出 - Android系统移植与平台开发(十三)- Android的对象管理
- 数据库中的DbUtils
- Linux系统启动过程分析 -转
- 显卡 内存分配 linux,玩转笔记本显卡共享显存设置
- 向军php视频教程下载,向军hd框架视频教程,后盾网框架下载
- Windows10一句话从administrator权限提升到system权限
- 站长SEO优化排名选择什么样的站群服务器
- 【嵌入式】SIM808/SIM900发送短信AT指令0X1A
- 正在准备面试?快手三面面试真题,搞懂这些直接来阿里入职
- 在线配资的诀窍是什么?
- gayhub(github)上不去?一个小tip,比XX上网都快
- 当下的区块链游戏该如何推广?一文通解全部套路
- 开源堡垒机 Teleport
- 金蝶系统的数据库服务器在哪找,如何启动金蝶数据库服务器
- 回顾2019展望2020
- MP4如何转换成MP3格式?分享三个转换方法
热门文章
- 路由表(FIB)内容的生成(一)
- matlab 输入方程组,弱弱地问,如何输入以下方程组?
- python网站服务器好麻烦_python写的网站,云服务器经常无法访问
- mysql like 贪婪匹配_mysql模糊查询like与REGEXP的使用详细介绍
- Java面试之到底值传递和引用传递???
- 【转】(译)iOS Code Signing: 解惑详解
- selenium与python自动化测试模拟登录百度
- Quartz.NET开源作业调度框架系列(二):CronTrigger-转
- [转]OpenGL超级宝典 5e 环境配置
- flex Module之间的通信