我刚刚发现了 FFMPEG,我需要它来将大量 MP4 文件剪辑到每个文件的最后 20 秒。每个 MP4 文件都有一个视频轨道和两个音轨,并且还具有可变帧速率。
我一直在使用这行代码:
for %F in (*.mp4) do ffmpeg -sseof -20 -i "%F" -map 0:v -map 0:a -c:v copy -c:a copy "%~nF_trimmed.mp4"
修剪很顺利,但音频有问题。出现此错误时不会取消修剪过程,但我认为这与我的问题无关:
[mp4 @ 0000025740443740] track 1: codec frame size is not set
[mp4 @ 0000025740443740] track 2: codec frame size is not set
当我将修剪后的文件放入视频编辑软件时,可以看到以下内容:
第二条音轨比视频轨道长。
这-最短命令没有起到作用。也许我只是用错了?
答案1
我一直在捣鼓-shortest
,但遇到一个问题,就是较长的音轨无法剪辑到视频的长度。我尝试使用以下方法:
ffmpeg -i INPUT -c copy -shortest OUTPUT
更仔细地阅读了该选项的文档后:
当最短输入流結束。
使用上述 FFmpeg 命令仅有的单个输入流。因此以下命令最终起作用了:
ffmpeg -i INPUT -i INPUT -c copy -shortest -map 0:v -map 1:a OUTPUT
这两个INPUT
都是同一个文件。