解码RTP G.722有效载荷

时间:2017-05-16 19:37:08

标签: c# rtp codec

我正在开发一个从RTP流中检索音频的应用程序。我对G.711 uLaw和ALaw没有任何问题,但我还必须处理G.722协议。 到目前为止,我没有运气解码它。我试图使用NAudio,它有一个编解码器,没有运气。 NAudio中编解码器的文档非常有限。 有没有人知道一个像文件或示例如何这样做的体面的图书馆?

如果该库包含其他编解码器,那就更好了!

我的代码片段因此使用NAudio。此代码针对每个160字节的数据包负载运行:如果有人发现错误或者您有建议,请告诉我。

case RtpPacket.PayloadTypes.G722:
    G722CodecState state = new G722CodecState(64000, G722Flags.None);   
    G722Codec codec = new G722Codec();

    var length = packet.Payload.Length;
    var outputBuffer = new short[length*4];
    int decoded = codec.Decode(state, outputBuffer, packet.Payload, length);

1 个答案:

答案 0 :(得分:0)

我现在用于我的目的的设置如下:

类变量:

    private readonly G722CodecState _g722CodecState = new G722CodecState(64000, G722Flags.SampleRate8000);
    private readonly G722Codec _g722Codec = new G722Codec();

在我的rtp检索功能中:

case RtpPacket.PayloadTypes.G722:
    var length = packet.Payload.Length;
    var outputBuffer = new short[length];
    int decoded = _g722Codec.Decode(_g722CodecState, outputBuffer, packet.Payload, length);

它就像一个魅力!