尝试使用带有 ASIO 设备的 MultiplexingWaveProvider 设置缓冲区大小

Posted

技术标签:

【中文标题】尝试使用带有 ASIO 设备的 MultiplexingWaveProvider 设置缓冲区大小【英文标题】:Trying to setup the buffer size using the MultiplexingWaveProvider with an ASIO Device 【发布时间】:2015-03-26 20:27:57 【问题描述】:

我有类似下面的代码

   _deviceOutput = new AsioOut("Driver name");
    _padFile = new WaveFileReader(padStream); //using a memory stream
    _headphoneFile = new WaveFileReader(headphoneStream); //using a memory stream
    var multiplexer = new MultiplexingWaveProvider(new IWaveProvider[] _headphoneFile, _padFile,
                                                           _deviceOutput.DriverOutputChannelCount);
    _deviceOutput.Init(multiplexer);
    _deviceOutput.Play();

我需要增加缓冲区大小以减少输出音频中的爆裂声和点击声。如何通过代码设置缓冲区大小?

【问题讨论】:

【参考方案1】:

恐怕 ASIO API 没有提供设置缓冲区大小的标准化方法。您需要做的是调用 API 以显示控制面板,这几乎总是会为用户提供缓冲区大小的选择。

【讨论】:

马克,有什么方法可以直接与您联系并获得一些咨询帮助吗?我和但丁一起工作,我们遇到了一个真正让我们感到困惑的问题(这个)。我们希望增加缓冲区会有所帮助,但我有一种感觉,我们只是做错了什么,导致这些弹出和点击。我的电子邮件地址是 byron@acklenavenue.com。

以上是关于尝试使用带有 ASIO 设备的 MultiplexingWaveProvider 设置缓冲区大小的主要内容,如果未能解决你的问题,请参考以下文章

NAudio - ASIO 播放到设备(仅限静态)

使用 boost::asio 获取 UDP 套接字远程地址

使用 boost::asio::async_wait_until 和 boost::asio::streambuf

是否可以使用 ffmpeg 从 ASIO 设备捕获音频?

kumavis/obj-multiplex

ASIO 设备/驱动程序属性