使用 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()
方法内每隔100ms发送一次。是否存在WaveOut()
比我们调用Consume()
方法更快的问题?我们如何同步这种阅读和回放。
答案 0 :(得分:0)
此处更好的选择是RawSourceWaveStream
而不是BufferedWaveProvider
,这样您就可以直接从包含完整音频的MemoryStream
播放。