将音频文件拆分为指定长度的块


16

我有几个长音频文件(每个80分钟; m4a),希望将它们拆分为5分钟或10分钟的片段。

我看到许多关于在长时间的暂停,音调等情况下分割音频文件的问题,但是似乎找不到关于此简单操作的问题。有人知道这样做的简单方法吗?

当然,自动和命令行是可行的,甚至是首选。

提前致谢!

Answers:


20

使用最新的ffmpeg(从此处下载静态版本):

ffmpeg -i in.m4a -f segment -segment_time 300 -c copy out%03d.m4a

这将使用段混合器并复制比特流。如果文件中有音频和视频流,则可以使用禁用视频流-vn


这是一个单行代码,您只需要安装RubyFFmpeg

ruby -e '(0..4500).step(300) { |x| system "ffmpeg -ss #{x} -i in.m4a -c copy -t 300 out-#{x}.m4a"}'

只需在同一文件夹中执行即可in.m4a。它会复制音频比特流,因此执行此操作可能会花费不到几秒钟的时间。

解释:

  • 音频文件的长度为4800秒(80分钟×60秒),所以我们的最后一次分割为4500(4800-300秒)。
  • 我们从0到4500,然后每300秒(5分钟×60秒)进行分配。
  • FFmpeg将在指定的时间开始 -ss
  • 并复制指定的时间 -t
  • 它将写入几个名为的输出文件out-<x>.mp4,其中<x>以秒为单位的开始时间。

谢谢!您是针对UNIX的命令,还是也适用于Windows?我安装了Cygwin,所以这无关紧要,只是想知道。到家后我会尝试的。
安德鲁·张

它本身就可以在Linux(和安装了Ruby的Unix)上运行,并且也可以在Windows上运行-您只需要Ruby和FFmpeg,但您不需要Cygwin。Windows也有Ruby InstallerFFmpeg可执行文件。现在,FFmpeg命令可以在没有Ruby的情况下使用Windows批处理文件或PowerShell自动执行,但是我不是Windows用户,所以这就是我选择Ruby的原因(因为它是Linux和OS X附带的)。也许有Windows批处理经验的人可以重写上面的Ruby命令?
slhck

我有Cygwin,因为我不习惯Windows命令行。我想我已经在那里安装了ruby和ffmpeg,所以我应该能够使用您的命令。但是,可以,Windows版本可能会帮助其他人查看此问题。现在+1;我尝试时会接受。
安德鲁·张

2
如果像我一样,如果您的m4a文件包括视频流(在我的情况下为单个图像),那么您需要添加-vn开关以仅选择音频流。如果要保留视频流,则需要输出到扩展名为.mp4的文件。
Rob Church

2

我本人正在寻找解决方案。我发现最简单的方法是通过MP4Box

mp4box -split 300 infile.m4a

其中“ 300”是以秒为单位的时间。MP4Box将自动写入编号的输出文件。

(您不需要安装整个大型GPAC应用程序。可以从存档中提取这些文件以使其正常工作:js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)


2

自问这个问题以来已经有一段时间了,但是在与Ruby和ffmpeg鬼混之后,我决定必须在Windows中找到一种更简单的方法来实现这一点,而我发现了。

下载并安装Audacity

在您可以找到它的地方创建一个文本文件,并将以下字符串粘贴到其中:(300秒间隔,即5分钟,10分钟等于600个间隔,等等。)

0       300  
300     600  
600     900  
900     1200  
1200    1500  
1500    1800  
1800    2100  
2100    2400  
2400    2700  
2700    3000  
3000    3300  
3300    3600  
3600    3900  
3900    4200  
4200    4500  
4500    4800  
4800    5100  
5100    5400  
5400    5700  
5700    6000  
6000    6300  
6300    6600  
6600    6900  
6900    7200  
7200    7500  
7500    7800  
7800    8100  
8100    8400  
8400    8700  
8700    9000  
9000    9300  
9300    9600  
9600    9900  
9900    10200  
10200   10500  
10500   10800  
10800   11100  
11100   11400  
11400   11700  
11700   12000  
12000   12300  
12300   12600  
12600   12900  
12900   13200  
13200   13500  
13500   13800  
13800   14100  
14100   14400  
14400   14700  
14700   15000  

只需确保间隔的数量大于音频文件的总长度,我就创建了这个音频文件,该文件的运行时间超过3个小时,可以满足我的需求,并且可以添加更多内容以满足您的需求。

将音频文件导入Audacity,并进行所需的平衡和其他任何编辑,然后单击“文件”>“标签”>“导入标签”

选择您的文本文件,然后同时选择标签轨道和音频轨道,然后单击文件>导出多个。

更改要导出到的文件类型并调整设置,然后选择目标文件夹。

我总是将编号模式更改为“文件名前缀后编号”,然后在框中输入我想要的文件名,程序将添加数字,然后单击“导出”和“中提琴”!


-1

下载Audacity-这是一个免费的音频工具,可以完全满足您的需求,并且完全免费且易于使用。http://audacity.sourceforge.net/


2
有没有办法让Audacity自动执行此操作?我不想通过用鼠标选择5分钟的片段来手动将多个文件切成16个片段,然后将其剪切,转到菜单,保存文件等等。
slhck 2012年

我已经有了Audacity,所以如果有自动方式,请告诉我!
安德鲁·张
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.