哪里有可以拍摄视频文件(avi,mkv和mp4)的cli应用程序,并能以精确的时间精度剪出非常短的剪辑(2-6秒)?我已经尝试过ffmpeg,mencoder,avidemux和mp4box,但是他们都在关键帧上创建了6个以上的剪辑。有没有一个工具重新编码(re-encode)输入文件剪切准确的时间或剪切不准确,re-encode,然后准确切割?
最佳解决办法
使用ffmpeg 剪切视频
您可以使用FFmpeg准确剪切视频。从2.5版开始,这非常简单。例如:从0分钟,3秒和123毫秒开始减少10秒。
ffmpeg -ss 00:00:03.123 -i input.mp4 -t 10 -c:v libx264 -c:a aac -strict experimental out.mp4
位置和时间可以是以秒或以hh:mm:ss[.xxx] 形式。
请注意,在这些示例中,使用x264和aac编码器的视频和音频将re-encoded。
您也可以使用-to 而不是-t 来指定结束点而不是持续时间。但是,在这种情况下,-to 等同于-t ,因为通过将-ss 置于-i 之前,ffmpeg将首先寻找该点,然后开始输出。
另请参阅Seeking维基条目。
准确切割,旧版ffmpeg 版本
如果你有一个旧版本的ffmpeg,那么为了准确搜索,你需要把-ss 放在-i 之后,这会使编码过程慢一点,因为整个视频必须首先被解码:
ffmpeg -i input.mp4 -ss 00:00:03.123 -t 10 -c:v libx264 -c:a aac -strict experimental out.mp4
在这里,-to 和-t 的行为有所不同。 -t 10 将创建一个十秒的长剪辑,而-to 10 将创建一个七秒长的剪辑。
流复制与重编码re-encoding
您也可以尝试使用-c:a copy 复制音频流。复制视频流可以用-c:v copy 完成。但它可能无法正常工作,因为您只能剪切一个视频关键帧,而这种关键帧并不经常出现。无论如何,如果您复制视频流,可能会导致剪切不准确。
参考资料
- Accurately cut video files from command line
|