记忆样本中的 Naudio 播放会在声音中产生延迟和不美观的间隙

本文关键字:延迟 不美观 间隙 Naudio 样本 播放 记忆 声音 | 更新日期: 2023-09-27 17:56:23

使用BufferedWaveProvider播放存储在数据库中的音频样本double[]

 _bufferedWaveProvider = new BufferedWaveProvider(Format)
                                {
                                    DiscardOnBufferOverflow = true,
                                    BufferDuration = TimeSpan.FromSeconds(5)
                                };
public void Consume(double[] samples, int offset, int count)
{
   samples.Paginate<double, float>(offset, count)
          .ForEach(x =>
          {
            byte[] consumeBuffer = x.ToBytes(ref _consumeBuffer);
            _bufferedWaveProvider.AddSamples(consumeBuffer, 0, _consumeBuffer.Length);
           });
}

播放时音频在声音中产生间隙。每 100 毫秒在方法内发送一次Consume()样本。是否存在WaveOut()播放速度比我们所说的方法快的问题Consume()?我们如何同步这种读取和播放。

记忆样本中的 Naudio 播放会在声音中产生延迟和不美观的间隙

这里更好的选择是 RawSourceWaveStream 而不是 BufferedWaveProvider ,这将允许您直接从包含完整音频的MemoryStream播放。