private void receiveAudio(object sender)
{
IPEndPoint senderEP = new IPEndPoint(IPAddress.Any, 0);
MemoryStream audioDataStream;
BufferedWaveProvider bufferedWaveProvider;
//RawSourceWaveStream receivedRawAudioData;
byte[] receivedAudioData;
waveOutStream = new WaveOut();
while (IsAudioTransferActive)
{
receivedAudioData = audioUDPClient.Receive(ref senderEP);
audioDataStream = new MemoryStream(receivedAudioData);
//receivedRawAudioData = new RawSourceWaveStream(audioDataStream, audioFormat);
bufferedWaveProvider = new BufferedWaveProvider(audioFormat);
//How can I feed "audioDataStream " to "bufferedWaveProvider "
waveOutStream.Init(bufferedWaveProvider);
waveOutStream.Play();
}
waveOutStream.Stop();
waveOutStream.Dispose();
}
@Mark Heath:- 正如你所说,我已经尝试使用 BufferedWaveProvider,但我如何才能为 bufferedWaveProvider 提供“audioDataStream”
最佳答案
您不断在 while 循环中创建未释放的 WaveOut 对象,这是问题的一部分。在这种情况下,最好的方法是创建一个 WaveOut 对象并使用 BufferedWaveProvider 提供给它。然后,当音频可用时,将其写入 BufferedWaveProvider。
关于c# - AlreadyAllocated 调用 waveOutOpen 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113216/