我正在开发一个从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);
答案 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);
它就像一个魅力!