我刚刚发现 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"
Run Code Online (Sandbox Code Playgroud)
修剪顺利,但音频存在问题。在没有取消修剪过程的情况下出现此错误,尽管我相信它与我的问题无关:
[mp4 @ 0000025740443740] track 1: codec frame size is not set
[mp4 @ 0000025740443740] track 2: codec frame size is not set
Run Code Online (Sandbox Code Playgroud)
当我将修剪后的文件放入视频编辑软件时,可以看到:

第二音轨比视频轨道长。
-shortest命令并没有达到目的。也许我只是用错了?
小智 5
我正在摆弄并-shortest遇到了较长音轨没有被修剪到视频长度的问题。这就是我尝试使用它的方式:
ffmpeg -i INPUT -c copy -shortest OUTPUT
Run Code Online (Sandbox Code Playgroud)
更仔细地阅读该选项的文档后:
当最短输入流结束时完成编码。
对于上述 FFmpeg 命令,只有一个输入流。所以下面的命令终于起作用了:
ffmpeg -i INPUT -i INPUT -c copy -shortest -map 0:v -map 1:a OUTPUT
Run Code Online (Sandbox Code Playgroud)
其中两个INPUTs 是同一个文件。
| 归档时间: |
|
| 查看次数: |
3748 次 |
| 最近记录: |