You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用FFmpeg实现无(或最小化)重新编码的视频剪切?

如何使用FFmpeg实现无(或最小化)重新编码的视频剪切?

咱们先从最基础的无重新编码剪切命令说起,这种方式速度超快,还能完全保留原视频的画质:

ffmpeg -ss 120 -t 60 -i input.mp4 -c copy output.mp4

给你简单解释下参数:-ss 120是指定从视频第120秒开始剪切,-t 60代表要截取60秒的内容,-c copy是核心——它会直接复制原视频的音视频流,全程不做重新编码。

另外有人会建议在命令里加上-avoid_negative_ts make_zero参数,不过咱们先不用纠结它的作用,先聊聊基础命令的小痛点:你可能会发现剪出来的视频开头几秒卡顿不流畅,这是怎么回事?

其实原因很直白:咱们选的剪切点不一定刚好和关键帧重合。视频里的非关键帧是依赖前面的关键帧才能解码的,直接从非关键帧开始剪切,播放器没法正确渲染开头的画面,自然就会出现卡顿。

那有没有两全其美的办法?当然有!可以只对开头到下一个关键帧的部分做重新编码,后面的内容依然用-c copy直接复制流。这样既解决了开头卡顿的问题,又能最大化减少重新编码的范围,兼顾剪切速度和画质。

备注:内容来源于stack exchange,提问作者Basj

火山引擎 最新活动