我有一个不同单词/短语的库,目前为了构建句子,我将这些短语的组合添加到播放列表中来组成句子。不幸的是,如果用户正在运行CPU密集型应用程序(我的大多数用户都是),在句子中间(在短语之间)可能会有几秒钟的延迟。
为了解决这个问题,我正在考虑一种方法,它可以动态地将正确的MP3文件组合合并到适当的短语中,将其保存在%temp%目录中,然后播放这1个MP3文件,这样就可以克服我遇到的间隙问题。
在C#中执行此操作的最简单方法是什么?有什么简单的方法可以做到这一点吗?这些文件相当小,每个文件长3-4秒,一个句子可以由3-20个短语组成。
发布于 2009-07-21 18:57:12
MP3文件由“帧”组成,每个帧代表一小段(我认为大约25ms)的音频。
所以,是的,你可以连接它们而不会有任何问题。
发布于 2010-11-09 02:55:41
下面是如何使用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);
}
}
}
有关更多信息,请参阅here
发布于 2009-07-21 18:32:19
由于MP3s是一种压缩的音频源,我想你不能只是将它们连接成一个单独的文件,而不是先将它们解码成它将播放的波形。这可能是相当密集的。也许您可以在回放短语时使用临界区作弊,这样在短语完成之前CPU就不会被窃取。这并不一定要和其他帖子玩得很好,但如果你的短语很短,可能会起作用。
https://stackoverflow.com/questions/1160888
复制相似问题