如何使用C#合并/加入MP3文件?

我有一个不同单词/短语的库,为了在目前建立句子,我将这些短语的组合添加到播放列表中以制作句子。 不幸的是,如果用户正在运行CPU密集型应用程序(我的大多数用户都是),那么句子中间可能会有几秒钟的延迟(在短语之间)。

为了解决这个问题,我想到了一种方法,它会将正确的MP3文件组合合并到一个合适的短语中,将其保存在%temp%目录中,然后播放这个应该克服问题的1个MP3文件我我遇到了差距。

在C#中最简单的方法是什么? 是否有捷径可寻? 文件相当小,每个文件长3-4秒,一个句子可以包含3-20个短语。

MP3文件由“帧”组成,每个帧代表一个简短的片段(我认为大约25毫秒)的音频。

所以是的,你可以毫无问题地连接它们。

以下是使用NAudio连接MP3文件的方法:

public static void Combine(string[] inputFiles, Stream output) { foreach (string file in inputFiles) { Mp3FileReader reader = new Mp3FileReader(file); if ((output.Position == 0) && (reader.Id3v2Tag != null)) { output.Write(reader.Id3v2Tag.RawData, 0, reader.Id3v2Tag.RawData.Length); } Mp3Frame frame; while ((frame = reader.ReadNextFrame()) != null) { output.Write(frame.RawData, 0, frame.RawData.Length); } } } 

请看这里了解更多信息

由于MP3是压缩音频源,我想你不能将它们连接成单个文件而不先将每个文件解码为它将播放的波形。 这可能非常密集。 也许你可以在播放你的短语时使用一个关键部分作弊,这样在短语完成之前CPU不会被你偷走。 这不一定与其他线程很好,但如果你的短语很短,可能会有效。

简单的选择是shell到命令行:

 copy /b *.mp3 c:\new.mp3 

更好的是连接流。 这里已经回答了: 在C#中连接三个文件的最快方法是什么?