使用 g722 编解码器解码 PCM 音频数据

发布于 2024-12-09 14:35:45 字数 649 浏览 0 评论 0原文

我正在开发一个用于 VoIP 音频的通话录音机,音频是在 CISCO 环境中使用 g722 编解码器进行编码的。 好吧,我已经从 RTP 帧中提取了数据,并且解码了这个 pcm 数据,如下所示:

unsigned int payloadSize = htons(udpHdr->len) - (CONSTANT::UDP_HDR_SIZE + CONSTANT::RTP_HDR_SIZE);
char * payload = (char*)rtpHdr + CONSTANT::RTP_HDR_SIZE;
  unsigned short m_payloadType = rtpHdr->pt;
//decode_state is initialize like :g722_decode_init(NULL, 64000, G722_SAMPLE_RATE_8000);
outBuffSize = g722_decode(decode_state, decompressed, (const uint8_t*)payload, payloadSize);

我将此解码数据存储在一个文件中(以及同一流的所有帧,等于 sscr),当尝试听到音频时,我只听到噪音。

我认为这个问题是针对CISCO使用的压缩算法的。

解码函数的行为是正确的。

有什么建议吗?

I'm developing a call recorder for VoIP audio, the audio is encoded by using a g722 codec in a CISCO environment.
Well, I have extracted the data from the RTPs frames and I have decoded this pcm data as follow:

unsigned int payloadSize = htons(udpHdr->len) - (CONSTANT::UDP_HDR_SIZE + CONSTANT::RTP_HDR_SIZE);
char * payload = (char*)rtpHdr + CONSTANT::RTP_HDR_SIZE;
  unsigned short m_payloadType = rtpHdr->pt;
//decode_state is initialize like :g722_decode_init(NULL, 64000, G722_SAMPLE_RATE_8000);
outBuffSize = g722_decode(decode_state, decompressed, (const uint8_t*)payload, payloadSize);

I store in a file this decode data (and all frames of the same flow, equal sscr) and when try to hear the audio, I only hear noise.

I think this problem is for the compressed algorithm used CISCO.

The behaviour of the decoded function is correct.

Any suggestion?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文