ffmpeg和QT开发播放器学习笔记
学习【夏曹俊】C++实战手把手教您用ffmpeg和QT开发播放器实战视频课程 所记录的笔记,希望将来能从事视频编解码行业
kuensan
没有干货,只有记录,先会用,再深究。
展开
-
第一章:ffmpeg和QT开发播放器之环境搭建
写在前面: 学习【夏曹俊】C++实战手把手教您用ffmpeg和QT开发播放器实战视频课程 所记录的笔记。 全文没有什么干货,只有我学习过程中的记录,所以想学习ffmpeg开发的小伙伴就不用看我的帖子了。 1、安装QT 这个我已经装了5.8版的QT了,所以就不安装了。 其中Qt\Qt5.8.0\5.8\msvc2013\bin文件夹中的assistant是...原创 2018-03-07 23:49:31 · 3122 阅读 · 2 评论 -
第二章:ffmpeg和QT开发播放器之初尝试
1、创建工程文件 建立一个新的文件,以后就按照这个工程逐渐修改,成为最终的项目。 这里需要注意的是需要勾选Multimedia这个多媒体库,才能进行多媒体播放。 然后base class选择Qwidget 同样的,需要配置输出目录,我们制定到一个地方...原创 2018-03-10 23:34:49 · 1306 阅读 · 0 评论 -
第三章:ffmpeg和QT开发播放器之视频的解码转码
写在前面:本章对一个视频进行解码转码处理,内容对应视频的3-3~3-6。文章末尾对这几节课进行总结,然后附加源代码。1、打开解码器 之前使用avformat_open_input,只是打开文件流而已。 一个视频打开之后,不止一个流,有视频流、音频流、字幕流。 其中ic结构体里面的ic->nb_streams存放了是这个视频里面有几种流。 AVC...原创 2018-03-10 23:48:32 · 3786 阅读 · 0 评论 -
第四章:ffmpeg和QT开发播放器之代码初封装
写在前面: 编写完视频的编码转码程序之后,就需要将整个程序重新封装一下,以便于后续的工作,这里对应视频课程中的3-7~3-10。由于之前没怎么接触过C++,所以蛮多东西都不是很懂,所以笔记只能原原本本的记录下来了,以后要是懂点的话,在进行修正吧。1、创建类 为了让代码更简洁,这时候就需重构FFmpeg类,这里我们创建一个虚析构函数。 为什么要创建虚虚构函数? ...原创 2018-03-11 21:19:10 · 915 阅读 · 1 评论 -
第五章:ffmpeg和QT开发播放器之使用QT播放
写在前面: 编写完视频的编码转码程序之后,就需要将整个程序重新封装一下,以便于后续的工作,这里对应视频课程中的4-1~4-2。前阵子忙着工作上的事情,也就没什么进度,想想还是不应该,QT稍微接触了下,感觉还是很多不会的。1、绘制QT播放界面双击ui文件,打开QT的设计界面。 然后在右侧的属性编辑器中的geometry属性中修改高度和宽度为我们代...原创 2018-04-05 15:04:35 · 4855 阅读 · 0 评论 -
第六章:ffmpeg和QT开发播放器之创建线程
写在前面: 这部分对应视频课程中的4-3~4-4。主要创建了线程,将解码和转码分开,提高视频的流畅度,最后能够打开外部视频进行播放。1、创建线程 在这之前的代码编译运行之后,能够正常使用,但是没创建线程,所以应该将视频解码放在一个线程里。 可以直接使用QT自带的线程,在线程中读取视频,并解码并且控制读取的速...原创 2018-04-06 17:25:13 · 926 阅读 · 0 评论 -
第七章:ffmpeg和QT开发播放器之视频播放控制(1)
写在前面: 这部分对应视频课程中的4-1~4-3。主要实现了对视频总时间和当前时间的显示,以及视频进度条的显示。1、添加播放时间进度条 如何得知当前播放进度呢? 通过视频帧和总时间的比较来知道当前视频播放到哪个位置。 进入qt编辑器中,拖动label来创建一个播放时间的显示,然后单击右键,选择“编辑式样表”,再选择添加颜色,这里选择白色,这样我们就可以看到...原创 2018-04-07 23:58:12 · 1268 阅读 · 0 评论 -
第八章:ffmpeg和QT开发播放器之视频播放控制(2)
写在前面: 这部分对应视频课程中的4-4~4-5。实现拖动视频进度条来控制播放位置,并控制视频播放和暂停。5、进度条拖动控制视频播放位置 拖动进度条播放,需要重新写一个函数,用于指定的位置进行读取。 bool XFFmpeg::Seek(float pos)传入的参数是0~1,也就是视频的百分比,这样我们通过拖动进度条,直接将进度条的百分比直接传入seek中。 ...原创 2018-04-08 00:09:50 · 1562 阅读 · 0 评论 -
第九章:ffmpeg和QT开发播放器之视频播放控制(3)
写在前面: 这部分对应视频课程中的4-6~4-7。实现视频显示和窗口大小同步变化、以及重载QT滑动条点击控制播放进度。9、视频窗口大小变化 拖放视频的时候,视频窗口和播放窗口会出现不一致的情况,导致出现白边,所以接下来要解决这个问题,让视频窗口跟随播放窗口动态变化。 首先在Xplay.h中添加一个void resizeEvent(QResizeEvent*e);当...原创 2018-04-10 00:15:44 · 871 阅读 · 0 评论 -
第十章:ffmpeg和QT开发播放器之音频库使用
写在前面: 这部分对应视频课程中的5-1~5-8。实现了播放器的音频播放功能。1、QT音频库介绍 前面的课程教了如何播放视频,但对音频没有处理。 需要播放音频的话,要生成一个对象QAudioOutput *out同时要包含它的头文件 #include <QAudioOutput>,如何设定音频的参数?那么就需要在设置一个QAudioFormat...原创 2018-04-10 00:23:00 · 2044 阅读 · 0 评论 -
第十一章:ffmpeg和QT开发播放器之项目移植到Ubuntu
写在前面: 将前面十章节的代码移植到linux中,注意,这里是移植到ubuntu中,之后我还会想办法移植到开发板中去,不过还是有点难度就是了。移植好的代码路径:https://download.csdn.net/download/tainjau/103963951、下载安装QT5.8 在http://ffmpeg.club/qt_download.html中,使用百度云下载,...原创 2018-05-06 22:58:05 · 1159 阅读 · 0 评论