我一直在尝试让它发挥作用,而且我已经很接近成功了,但仍然有些不对劲。
我有一个 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
应该作为编解码器工作,但通常默认为libx264
。vcodec
理想情况下应该用非弃用的替换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
,但只有一起完成才有效。