C# NAudio解码ulaw到pcm

C# NAudio解码ulaw到pcm,c#,rtp,naudio,C#,Rtp,Naudio,我正在尝试解码接收到的RTP流,并使用NAudio将其保存到.wav文件中,类似于 我尝试过几种不同的方法,但没有一种方法生成Windows Media Player可以识别的.wav文件 下面是我如何定义wave文件编写器的 var waveFileWriter = new WaveFileWriter("out.wav", new WaveFormat(8000, 16, 1)); 然后,对于我收到的每个RTP数据包,我使用: private void SampleReceived(byt

我正在尝试解码接收到的RTP流,并使用NAudio将其保存到.wav文件中,类似于

我尝试过几种不同的方法,但没有一种方法生成Windows Media Player可以识别的.wav文件

下面是我如何定义wave文件编写器的

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));
        }
    }
}
private void sampler已接收(字节[]示例)
{
if(示例!=null)
{
for(int index=0;index>8));
}
}
}

代码运行时没有错误,但当我尝试在Windows Media Player中打开.wav文件时,我收到一个错误。我已经使用WireShark确认RTP流是ulaw。这是NAudio使用的正确方法吗?

您必须在尝试播放WAV文件之前处理好您的WaveileWriter,因为WAV文件的开头有标题,只有在添加了所有数据后才能填充标题。

您必须在尝试播放WAV文件之前处理好您的WaveileWriter,因为WAV文件开头有标题,只有在添加完所有数据后才能填写。

您是否查看了NAudio支持/教程网站?我到现在为止还没有看到它。我看了一下,但我的问题没有解决方法。你看过这个NAudio支持/教程网站吗?我直到现在才看到它。我看了一眼,但我的问题没有解决办法。