1

用于 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);
           });
}

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

4

1 回答 1

1

一个更好的选择是RawSourceWaveStream而不是BufferedWaveProvider,它可以让您直接从MemoryStream包含完整音频的播放器中播放。

于 2015-06-17T12:23:44.320 回答