将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文件切割成段的主要内容,如果未能解决你的问题,请参考以下文章