2011-03-01 5 views
3

C# 응용 프로그램에서 MP3 스트림을 재생하고 싶습니다. 웨이브 오디오를 캡처하여 MP3로 변환 한 다음 네트워크 스트림에 기록하는 서버 응용 프로그램이 있습니다. 클라이언트는이 스트림을 읽어서 MP3를 재생합니다. 다음 코드 예제를 NAudio을 시도하지만, 예외가 발생합니다 내가 코드 있지만 그것으로는하지 답을 알고C#에서 MP3 스트림을 재생하는 방법

using (WaveStream blockAlignedStream = 
       new BlockAlignReductionStream(
        WaveFormatConversionStream.CreatePcmStream(
         new Mp3FileReader(ms)))) 
      { 
       using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback())) 
       { 
        waveOut.Init(blockAlignedStream); 
        waveOut.Play();       
        while (waveOut.PlaybackState == PlaybackState.Playing)       
        { 
         System.Threading.Thread.Sleep(100); 
        } 
       } 
      } 
+1

예외는 무엇이며 코드 줄은 무엇입니까? – BrokenGlass

+0

기본적으로이 코드는 루프에 있고 소켓이 새 패킷을 수신 할 때 실행됩니다. "WaveOut 장치가 WaveOut.finalize()에서 닫히지 않았습니다."예외가 메시지 상자에 왔습니다. – Ehtsham

답변

1

내 블로그에 기사를 게시했습니다. how to play back an MP3 stream using NAudio. 기본적으로 하나의 스레드에서 MP3 프레임을 다운로드하고 압축을 풀어 BufferedWaveProvider에 저장합니다. 다른 스레드는 BufferedWaveProvider을 입력으로 사용하여 재생합니다.

+0

안녕하세요. 나는 당신이 이것을 볼 수 있기를 바랍니다. 위의 예제를 시도했지만 파일을 완전히 다운로드해야한다는 것을 깨닫고 이후에 재생을 시작합니다. NAudio는 실시간 재생을 지원합니까? –

+0

아니요. 다운로드하는 동안 재생할 수 있습니다. –

관련 문제