2012-03-04 106 views
0

我試圖解碼接收到的RTP流並使用NAudio將其保存到.wav文件,類似於How to decode RTP packets and save it has .wav fileNAudio解碼ucm到pcm

我試過幾種不同的方法,但都沒有導致Windows Media Player識別的.wav文件。

下面是我如何定義我的波形文件編寫器。

var waveFileWriter = new WaveFileWriter("out.wav", new WaveFormat(8000, 16, 1)); 

然後對每個RTP包我收到我用:

private void SampleReceived(byte[] sample) 
{ 
    if (sample != null) 
    { 
     for (int index = 0; index < sample.Length; index++) 
     { 
      short pcm = MuLawDecoder.MuLawToLinearSample(sample[index]); 
      waveFileWriter.WriteByte((byte)(pcm & 0xFF)); 
      waveFileWriter.WriteByte((byte)(pcm >> 8)); 
     } 
    } 
} 

代碼運行沒有錯誤,但是當我嘗試打開W​​indows Media Player中的.wav文件我得到一個錯誤。我用WireShark確認RTP流是ulaw。這是NAudio使用的正確方法嗎?

+0

您是否檢出了NAudio支持/教程網站 - http://opensebj.blogspot.com/2009/04/naudio-tutorial-5-recording-audio.html – MethodMan 2012-03-04 00:23:03

+0

直到現在我還沒有看到它。我看了一下,但沒有解決我的問題跳到我身上。 – sipwiz 2012-03-04 02:29:37

回答

0

在嘗試播放WAV文件之前,必須先配置WaveFileWriter,因爲一開始WAV文件的標題只能在所有數據添加後才能填充。