从一批 MP3 文件中剪切两部分

从一批 MP3 文件中剪切两部分

我有一个文件夹,里面有几百个 MP3 文件,我想从每个文件中剪掉两部分。每个文件中的位置都相同 - 从 0'00.00 到 0'03.81,然后从 0'08.83 到 0'13.95。

我使用的是 Windows 7,但如果有帮助的话,我也可以轻松使用 8 或 10。在命令行上工作也不令人反感。

知道如何实现这个吗?

答案1

所以我最终想出了如何做到这一点ffmpeg。如果其他人也想知道答案,下面就是方法。

顺便说一句:这些文件都在一个文件夹中,文件名的一部分是序列号。这让 DOS 循环变得更容易一些。

我做的第一件事是创建一个名为临时文件,其中只有这两行:

文件 temp1.mp3
文件 temp2.​​mp3

您马上就会明白那是做什么用的。

然后我编写了一个批处理文件,循环遍历目录中的所有文件(基于上面的顺序编号),并对每个文件运行两个 ffmpeg 操作:

FOR /L %%i IN (1,1,216) DO (
  ffmpeg.exe -y -i OriginalFile%%i.mp3 -ss 00:03.81 -to 00:08.83 -acodec copy "temp1.mp3" -ss 00:13.95 -acodec copy "temp2.​​mp3"
  ffmpeg.exe -y -safe 0 -f concat -i temps.txt -c copy NewFile%%i.mp3
)

第一个操作抓取两个所需的段并将它们复制到温度1.mp3温度2.mp3(我一直重复使用这两个文件名)。ffmpeg 允许您在一个命令行上隔离两个部分,这很好。此外,您可能会注意到第二部分只有时间戳-ss,没有-to戳记。这允许它仅使用文件末尾作为第二个时间戳。

第二个操作告诉 ffmpeg 查看临时文件文件并连接其中列出的两个文件。重复使用临时文件名是我能够只拥有上面创建的静态 temps.txt 文件的原因。

我写得相当直白(对目录中的文件数量进行硬编码,重复使用临时文件,使用-y命令行中的标志),因为我确切地知道我必须使用什么,而且我无论如何都有备份。如果你要重新利用它,你可能需要对这些事情更加谨慎。

此外,我在此过程中丢失了所有元数据。可能有一个简单的方法可以保留它,但我没有费心去弄清楚。对我来说,这很容易,只需一次性将其重新添加到新文件中(使用MP3标签,有史以来最伟大的实用程序之一)。

所以你有它。

顺便说一句,一些链接帮助我弄清楚了这一点:

  • 我开始ffmpeg - 无需重新编码即可修剪音频文件
  • 然后摆弄我提到的细节ffmpeg 文档
  • 对于连接,我从中学到了很多这个答案回答 Stack Overflow 上的一个问题。问题是关于视频的,这要复杂得多,但这个答案也告诉了我关于音频的所有我需要知道的信息。具体来说,我使用了这个答案描述的第二种方法。
  • 最后,我并没有真正使用过这个,但是关于连接命令本维基——包括在 Windows 或 bash 上自动生成列表文件的说明。

(感谢@barlop 提出添加这些内容的建议。)

相关内容