【发布时间】:2014-01-24 04:43:59
【问题描述】:
我对 C# 和 Mark 的库 NAudio 还很陌生。所以我试着自己学习,我想出了一个基本的音频播放器。但我有一个问题。
当尝试在播放器中加载大文件时,应用会在加载整个文件时冻结 2-10 秒(我想)。这是我读取文件的代码:
if (target.EndsWith("mp3") || target.EndsWith("Mp3") || target.EndsWith("MP3"))
{
NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(target));
stream = new NAudio.Wave.BlockAlignReductionStream(pcm);
}
我真正想要的只是部分读取文件。像一个缓冲区。从 HDD 读取 10 秒到 RAM 内存,然后在这 10 秒用完后,读取接下来的 10 秒,依此类推。我认为这应该可以解决我在处理大文件时遇到的冻结问题。
【问题讨论】:
-
这不是您问题的答案,但您可以使用
if (target.Upper().EndsWith("MP3"))测试 mp3。 -
请注意,您不需要 WaveFormatConversionStream 或 BlockAlignReductionStream。您在哪里看到包含这些的代码示例?
-
嗨!比你为你的答案。 @MarkHeath - 我关注了 Giawa 的这个系列教程 - Youtube Video。代码来自这个视频,我使用的实际代码显示在@2:15。
-
好的,该演示与 NAudio 1.3 相关。自那以后发生了很多变化
-
哦,我可能忽略了这一点。我会搜索一些较新的教程,或者我会尝试根据 codeplex 网站提供的示例编写一个新脚本。