ffmpeg编码mp4视频,实现剪裁任意片段,播放流畅

问题:在播放剪裁得到的MP4视频片段时,常常遇到卡顿、音画不同步等异常情况

原因分析:mp4视频是使用mpeg-4编码,压缩过的视频。压缩的基本原理是,将组成视频的帧分为两大类关键帧和普通帧。关键帧是一张完整的图片,包含当前帧的完整图像信息,而普通帧则需要依赖之前的关键帧来恢复图像。这样子,就可以减小视频文件的大小,又保持较高的清晰度。

凡是压缩过的视频,都包含关键帧。这里的压缩是指,对原始的视频文件内容进行编码,而不是文件级别的压缩。

在剪裁视频的时候,开始的时间点如果不是关键帧,那么剪裁到的视频片段,在播放时就会卡顿。片段视频的开头是一些普通帧,解码器无法找打关键帧,无法恢复普通帧的图像,无法进行正常解码。

知道了原因,就有解决办法了,增加关键帧的数量,每一帧都是关键帧,任意剪裁点,都是关键帧,播放就不会卡顿了。

ffmpeg通过keyint_min和gop_size来表示关键帧的最小和最大间隔数

具体命令如下

ffmpeg -i input.mp4  -g 1 -keyint_min 1 output.mp4

-g 关键帧的最大间隔

-keyint_min 关键帧的最小间隔

最大和最小都是1。

可能出现的问题:画面细微的不清晰

参考:

https://www.cnblogs.com/soief/archive/2013/12/12/3471465.html

你可能感兴趣的:(ffmpeg)