使用NAudio for .NET如何删除mp3文件末尾的静音?

时间:2012-10-24 06:00:15

标签: c# .net audio mp3 naudio

我正在开发一个C#WPF应用程序,它将一组单词(大约17,000个单词)组合在一起,并生成一个匹配mp3文件的播放列表(每个mp3文件都是一个单词)。

目前,每个mp3文件在其波形结束时都会在1秒到30秒之间随机静音。

我希望能够以编程方式从文件末尾删除静音波。

使用NAudio for .NET如何从mp3文件的末尾删除静音?

2 个答案:

答案 0 :(得分:1)

有两种修剪MP3文件的方法。第一种方法是使用Mp3FileReader将音频读出为WAV,并且只使用WaveFileWriter将您想要的数量写入新的WAV文件。然后你会使用LAME.exe之类的工具转换回MP3,因为NAudio不包含MP3编码器。

第二种是丢弃Mp3Frame,并且具有不需要解码和重新编码的优点。 MP3文件由一系列Mp3Frame组成(并且可选地在开头或结尾处具有诸如ID3标签之类的元数据)。然后,您可以通过将所需的MP3帧附加到新文件中,跳过最后一个(并且可选地确保您的ID3标签包含在截断的文件中)来创建新的MP3文件。查看Mp3FileReader的源代码,了解如何从MP3文件中逐个读取Mp3Frame。

答案 1 :(得分:1)

我完成了使用SoX

SoX Silence的文档: http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/

Soso Silence的Stackoverflow帮助参考文件结束: https://stackoverflow.com/a/11834671/677607

使用C#执行命令行: https://stackoverflow.com/a/1469790/677607