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://blog.csdn.net/qiao_198911/article/details/79677542
https://www.cnblogs.com/soief/archive/2013/12/12/3471465.html

标题亲自测试

转码

for %%a in ("*.ts") do ffmpeg -i “%%a” -f mp4 -codec copy "%%~na.mp4
pause
将当前目录下所有.ts文件转换为.mp4格式

剪辑

ffmpeg -ss 0:0:14.00 -i input.mp4 -codec copy output.mp4
对于压缩视频剪辑后不卡顿
ffmpeg -ss 0:0:14.00 -i input.mp4 -vcodec copy -acodec copy output.mp4
对于压缩视频剪辑后,视频开始时黑屏,声音正常,图像卡顿

发布了254 篇原创文章 · 获赞 31 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/yueliang2100/article/details/104291205