naudio waveProvider.AddSamples 导致崩溃

发布于 2024-11-25 17:56:18 字数 625 浏览 3 评论 0原文

private unsafe static void AudioStreamCallback(IntPtr buff, Int32 size) 
{
    byte[] samples = new byte[size];
    Marshal.Copy(buff, samples, 0, size);

    waveProvider.AddSamples(samples, 0, size);
    bytes_played += size;
}

在上面的代码中,buff是从用C编写的本机dll返回的。对于日志记录,我已经打印了添加到示例中的字节数。根据此日志,我在播放大约 2.4 Mb 样本后收到下面提到的错误。

未处理的异常:System.InvalidOperationException:NAudio.Wave.BufferedWaveProvider.AddSamples 处的缓冲区已满(Byte[] 缓冲区,Int32 偏移量,Int32 计数)

我是否需要释放一些缓冲区或确保在添加新样本之前刷新旧条目?我查看了源代码,但没有找到任何与缓冲区大小相关的内容。我是不是错过了什么?

感谢您的帮助。

private unsafe static void AudioStreamCallback(IntPtr buff, Int32 size) 
{
    byte[] samples = new byte[size];
    Marshal.Copy(buff, samples, 0, size);

    waveProvider.AddSamples(samples, 0, size);
    bytes_played += size;
}

In the above code, buff is returned from a native dll written in C. For logging, I have printed the number of bytes added to sample. Based on this log, I am getting the below mentioned error after playing about 2.4 Mb samples.

Unhandled Exception: System.InvalidOperationException: Buffer full at NAudio.Wave.BufferedWaveProvider.AddSamples(Byte[] buffer, Int32 offset, Int32 count)

Do I need to free some buffer or make sure to flush the old entries before adding new samples? I looked at the source code, but didn't find anything related to buffer size. Am I missing some thing.

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

老街孤人 2024-12-02 17:56:19

BufferedWaveProvider 由固定大小的循环缓冲区支持。一旦满了,它就会抛出异常(较新版本的 NAudio 允许您配置是否抛出异常或是否默默地丢弃音频)。最新代码还允许您在首次调用 AddSamples 之前设置 BufferDuration,以增加默认的 5 秒音频缓冲区大小。

BufferedWaveProvider is backed by a fixed size circular buffer. Once it is full it throws an exception (newer versions of NAudio allow you to configure whether an exception is thrown or whether audio is silently discarded). The latest code also allows you to set BufferDuration before your first call to AddSamples to increase the buffer size from the default of 5 seconds worth of audio.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文