首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NAudio分部分读取文件?

如何使用NAudio分部分读取文件?
EN

Stack Overflow用户
提问于 2014-01-23 18:45:11
回答 2查看 359关注 0票数 0

我对C#和马克的图书馆NAudio相当陌生。所以我试着自己学习,我想出了一个基本的音频播放器。但我有个问题。

当试图在播放器中加载大文件时,应用程序在加载整个文件时冻结2-10秒(我想)。这是我读取文件的代码:

代码语言:javascript
复制
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秒,以此类推。我认为这应该可以解决我对大文件的冻结问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-23 20:43:59

延迟的原因是Mp3FileReader创建了一个内容表,以使它能够确定文件长度并能够更快地重新定位。您可以尝试使用MediaFoundationReader,这样会更快,但不会在Windows上工作。

票数 0
EN

Stack Overflow用户

发布于 2014-01-23 19:24:39

所有程序都延迟加载大文件。这取决于客户端计算机的速度。但是您可以在程序中使用backgroundWorker,并在文件加载期间在应用程序表单上显示加载动画。

在窗体上添加backgroundWorker工具

在“打开”按钮上使用此代码单击:

代码语言:javascript
复制
backgroundWorker_name.RunWorkerAsync();

并将代码放到DoWork事件中。

代码语言:javascript
复制
private void backgroundWorker_name_DoWork(object sender, DoWorkEventArgs e)
{
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21316772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档