我是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到RAM内存读取10秒,然后在这10秒后用完,读取接下来的10秒,依此类推。我认为这应解决我对大文件的冻结问题。
答案 0 :(得分:0)
所有程序都有延迟加载大文件。这取决于客户端计算机的速度。 但您可以在程序中使用backgroundWorker,并在加载文件时在应用程序表单上显示加载动画。
在表单上添加backgroundWorker工具
在点击打开按钮时使用此代码:
backgroundWorker_name.RunWorkerAsync();
并将您的代码放入DoWork事件
private void backgroundWorker_name_DoWork(object sender, DoWorkEventArgs e)
{
}
答案 1 :(得分:0)
延迟的原因是Mp3FileReader
创建了一个目录,以允许它确定文件长度并启用更快的重新定位。您可以尝试使用MediaFoundationReader
而不是更快,但不适用于Windows XP。