将wav文件切割成段

Posted

技术标签:

【中文标题】将wav文件切割成段【英文标题】:cutting a wav file into segments 【发布时间】:2012-03-21 04:56:03 【问题描述】:

我想编写一个简单的程序,它需要一个中等大小的 wav 文件(60 秒左右)并将其切割成 1 秒长度的相同格式的段(1.wav、2.wav、...等)。 .. 是否有一个简单的 C++ 或 java 库可以做到这一点?我不想操纵标头信息

【问题讨论】:

如果你不想操纵头部信息,那么被吐出的块将无法播放。 也许 perl/python/shell 脚本可以轻松做到这一点。 听起来像是 tcl Snack 库的工作。 【参考方案1】:

围绕ffmpeg 命令行实用程序的Shell 脚本。另外,sox

http://sox.sourceforge.net/

【讨论】:

【参考方案2】:

您可以使用 AudioInputStream 类来做到这一点。另请查看this 网站了解有关 AudioInputStream 的更多信息

【讨论】:

【参考方案3】:

看看libsndfile。另见this 其他帖子。 你会想要:

删除 WAV 标头以访问原始 PCM 示例数据 循环遍历将代表 1 秒音频的 sample_rate 样本,并将这些缓冲区打包成一个新的 WAV 文件(带有标题),直到达到原始的 EOF

HTH

【讨论】:

【参考方案4】:

ffmpeg 有两个可能属于我们的标志:-t 设置目标文件的持续时间,-ss 设置您开始读取输入文件的点。

所以:

ffmpeg -t 2 -i 输入.mp3 输出.mp3 ffmpeg -ss 2 -t 2 -i input.mp3 output2.mp3

创建两个文件 - 一个包含 input.mp3 的前两秒,另一个包含从 2 秒开始的两秒 input.mp3(即后两秒...)。

可能可以实现这些组合以从文件中获取您想要的内容。

【讨论】:

以上是关于将wav文件切割成段的主要内容,如果未能解决你的问题,请参考以下文章

怎样用matlab分割音频文件(wav)或其他

linux切割、备份大的nohup日志文件

IO流之文件切割,文件合并 Java

使用awk按照行数切割文件

NGINX按天切割日志

Linux大日志分析