ffmpeg解码视频及倒序播放

在视频处理中,使用opencv实现倒序播放时出现延时和卡顿问题。研究发现opencv底层依赖ffmpeg库。通过直接使用ffmpeg解码视频,但在定位非关键帧时遇到图像跳动现象。原因是视频的GOP结构,导致仅能获取关键帧。为解决此问题,需在找到关键帧后,继续读取和解码直至目标位置。然而,由于GOP大小限制,这种方法效率不高。调整GOP size可能改善,但实际操作未见效果,寻求更优解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


最近做视频处理时,用opencv里的cvSetCaptureProperty,定位到上一帧,然后再抓取这一帧图像,这样不停循环,实现视频的倒退播放。但是发现处理的时候有明显的延时,视频卡顿。于是用Cmake看了一下opencv源代码,发现其实是用ffmpeg这个开源的库做的,在网上找了一些代码,顺利解码,但是我要一帧一帧定位的时候,出现很奇怪的现象,每隔几十帧,图像会跳动一次,也就是中间的图像都是一样的,没有变过。


原因跟视频的压缩方式有关系。一个视频,总是分成若干个组(GOP),每个组只有第一帧是完全清晰具备所有细节的图像,也叫做关键帧,这个组里的其他帧记录的都是不完全的信息,可以理解为,只记录了与第一帧有差异的信息。因此,我在利用函数av_seek_frame进行定位,得到的总是每个组关键帧图像。假如30帧为一个组,那么我得到的就是第1帧,第31帧,第61帧,依次类推。这就是会出现跳动的原因。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值