标题:Qt音视频开发03-ffmpeg倍速播放(半倍速/2倍速/4倍速/8倍速)
作者:liudianwu
日期:2022-11-17 15:01
内容:
## 一、前言
用ffmpeg做倍速播放,是好多年都一直没有实现的功能,有个做法是根据倍速参数,不断切换播放位置,实现效果不是很好,ffplay中的倍速就做得很好,而且声音无论倍速多少还非常柔和,有特别的降噪处理啥的,ffplay中的倍速使用的滤镜去实现,并动态调整pts/dts的值,整个处理过程看起来比较复杂,想着有没有稍微简单一点的办法,在经过一个朋友的指点下,发现在音视频同步的地方,对计算显示时间差值的时候乘以倍速比例,就可以实现倍速效果,立马测试立马见到效果,这个和动态调整pts值效果类似,无非就是让播放的时间进行倍速调整。所以这个倍速的功能推迟了好几年终于实现了,之前由于一直没有特别强烈的倍速需求推迟这没有去实现。这样实现的倍速唯一的缺点就是声音在慢速快速播放中会有停顿效果不够平滑柔和,也就是没有变调,在经过几次其他播放器比如vlc/mpv等,也有类似的问题,有部分播放器索性在非正常速度播放情况下音频直接拒绝播放,都不敢直接面对。
为了验证倍速是否和预期的效果完全一致,比如30帧的视频,0.5倍速意味着一秒钟解析15张,2倍速意味着一秒钟解析60帧,依次类推,特意统计了打印信息,发现和预想的完全一致,4倍速确实解析了120张图片,不过这种处理感觉是很占资源,可以考虑直接跳帧播放,尤其是找到关键帧跳跃播放,这样可以节约很多资源,1倍速及以下倍速,可以将所有图片解析,但是快速播放没有必要将所有的解析绘制显示,后期可以考虑将这两种方式都支持。
## 二、功能特点
### 2.1 基础功能
1. 支持各种音频视频文件格式,比如mp3、wav、mp4、asf、rm、rmvb、mkv等。
2. 支持本地摄像头设备,可指定分辨率、帧率。
3. 支持各种视频流格式,比如rtp、rtsp、rtmp、http等。
4. 本地音视频文件和网络音视频文件,自动识别文件长度、播放进度、音量大小、静音状态等。
5. 文件可以指定播放位置、调节音量大小、设置静音状态等。
6. 支持倍速播放文件,可选0.5倍、1.0倍、2.5倍、5.0倍等速度,相当于慢放和快放。
7. 支持开始播放、停止播放、暂停播放、继续播放。
8. 支持抓拍截图,可指定文件路径,可选抓拍完成是否自动显示预览。
8. 支持录像存储,手动开始录像、停止录像,部分内核支持暂停录像后继续录像,跳过不需要录像的部分。
9. 支持无感知切换循环播放、自动重连等机制。
10. 提供播放成功、播放完成、收到解码图片、收到抓拍图片、视频尺寸变化、录像状态变化等信号。
11. 多线程处理,一个 ..
#1 [hc1234 11-22 11:48]
非常感谢!解决了我的问题