我一直在尝试使用 FFMPEG 来剪切音轨的特定部分。我想从00:07剪到04:33,所以输入ffmpeg命令如下:
bin\ffmpeg -ss 00:07 -t 04:26 -i "input.mp3" -acodec copy "output.mp3"
Run Code Online (Sandbox Code Playgroud)
我将 04:26 用于 -t,即 [end_time - start_time]。但是,我得到的output.mp3是从00:07截到04:40,曲目是04:33长。为了获得正确的输出文件,我必须使用 -t 04:19,即 [end_time - 2*(start_time)]。
我尝试使用 -to 而不是 -t 的替代命令
bin\ffmpeg -i "input.mp3" -ss 00:07 -to 04:33 -acodec copy -y "output.mp3"
Run Code Online (Sandbox Code Playgroud)
这按预期工作,从 00:07 到 04:33 提供了所需的输出轨道。
问题是,为什么第一种方法要求 -t 为 [end_time - 2* (start_time)]?直觉上,我想寻找 00:07 然后捕获随后的 04:26,所以 -ss 00:07 和 -t 04:26 对我来说很有意义。我无法弄清楚 ffmpeg 如何解释这一点,以至于我必须使用 04:19 作为 -t 来代替。
由于第二种方法有效,我并不是真的在寻找解决方案。我只是想知道为什么会发生这种情况。