使用 ffmpeg 分割视频片段

使用 ffmpeg 分割视频片段

我一直在尝试让它发挥作用,而且我已经很接近成功了,但仍然有些不对劲。

我有一个 14 秒的剪辑,我想从较长的 mp4 视频中剪掉它。我使用以下命令将视频剪切到正确的位置:

ffmpeg -ss 00:05:13.0 -i ~/videos/trim_me.mp4 -vcodec h264 -acodec copy -t 00:00:14.0 ~/videos/trimmed.mp4

如果我没有指定,-vcodec它就会从“I 帧”开始(我猜),而且不是正确的地方。音频也是从那个位置开始的,所以我尝试以-acodec相同的方式设置:

ffmpeg -ss 00:05:13.0 -i ~/videos/trim_me.mp4 -vcodec h264 -acodec aac -ac 2 -ab 225k -ar 48000 -strict -2 -t 00:00:14.0 ~/videos/trimmed.mp4

这其实没什么帮助。设置-async 1会让它花更长时间,然后音频确实匹配,但直到视频播放 4 秒后才匹配。:/

我理想情况下不想安装任何其他东西并为此提供命令行解决方案。

答案1

h264应该作为编解码器工作,但通常默认为libx264vcodec理想情况下应该用非弃用的替换c:v

工作命令是

ffmpeg -i ~/videos/trim_me.mp4 -c:v libx264 -c:a aac -ac 2 -b:a 255k -ar 48000 \
-async 1 -strict -2 -y \
-ss 00:05:13.0 -t 00:00:14.0 ~/videos/trimmed.mp4

移动该-ss标志作为输出标志将确保完整视频被转码,但输出仅从 指定的点开始-ss。否则,当-ss放在 前面时-i,FFmpeg 只会寻找起点,这可能是不准确的。

修复-vcodec标志并投入使用-async 1,但只有一起完成才有效。

相关内容