AlreadyAllocated调用waveOutOpen错误错误、AlreadyAllocated、waveOutOpen

由网友(贱人不贱渐渐贱)分享简介:private void receiveAudio(object sender){IPEndPoint senderEP = new IPEndPoint(IPAddress.Any, 0);MemoryStream audioDataStream;BufferedWaveProvider bufferedWaveP...
 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();
        }

@马克希思 - 正如ü说,我已经使用BufferedWaveProvider尝试,但我怎么能养活bufferedWaveProvider与audioDataStream

@Mark Heath :- As u said I have tried using BufferedWaveProvider but how can i feed the bufferedWaveProvider with "audioDataStream "

推荐答案

正在不断地创造未处置while循环,这是问题的一部分,里面waveout的对象。在这种情况下,最好的方法是创建一个单一的waveout的对象,并使用BufferedWaveProvider喂它。然后,音频变为可用,其写入BufferedWaveProvider。

You are constantly creating WaveOut objects inside your while loop that are not disposed, which is part of the issue. The best approach in this situation is to create a single WaveOut object and to feed it using a BufferedWaveProvider. Then as audio becomes available, write it into the BufferedWaveProvider.

阅读全文

相关推荐

最新文章