【发布时间】:2012-03-04 00:02:32
【问题描述】:
我正在尝试解码接收到的 RTP 流并使用 NAudio 将其保存到 .wav 文件中,类似于 How to decode RTP packets and save it has .wav file。
我尝试了几种不同的方法,但没有一种方法可以生成被 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));
}
}
}
代码运行时没有错误,但是当我尝试在 Windows Media Player 中打开 .wav 文件时出现错误。我使用 WireShark 来确认 RTP 流是 ulaw。这是与 NAudio 一起使用的正确方法吗?
【问题讨论】:
-
您是否查看过此 NAudio 支持/教程网站 - opensebj.blogspot.com/2009/04/…
-
直到现在我才看到它。我看了看,但我的问题没有解决方案。