You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何GStreamer使用动态RTP Type96而非静态PCMU/PCMA?如何修改?

解决方案:使用G.711(PCMU/PCMA)固定RTP负载类型

你的问题根源是用错了RTP打包器:rtpL8pay是用于未压缩的8位线性音频的,这类音频没有分配固定的RTP负载类型编号,所以会使用动态类型96。而PCMU(负载0)和PCMA(负载1)属于G.711压缩编码,需要用对应的编码元素+专属RTP打包器才能触发固定负载类型。

正确管道配置

1. 发送PCMU(负载类型0)

先将原始音频编码为G.711 u-law格式,再用rtppcmupay(专门为PCMU设计的RTP打包器,自动设置负载类型0):

gst-launch-1.0 audiotestsrc ! audioconvert ! audio/x-raw,channels=1,rate=8000 ! mulawenc ! rtppcmupay ! udpsink host=172.16.20.15 port=5200

2. 发送PCMA(负载类型1)

编码为G.711 a-law格式,用rtppcmapay(自动设置负载类型1):

gst-launch-1.0 audiotestsrc ! audioconvert ! audio/x-raw,channels=1,rate=8000 ! alawenc ! rtppcmapay ! udpsink host=172.16.20.15 port=5200

关键说明

  • 去掉了原管道中的audioresample和depth=8,width=8参数:G.711编码元素(mulawenc/alawenc)会自动处理音频格式适配,且G.711标准本身要求8kHz单声道,和你的参数完全匹配。
  • rtppcmupay/rtppcmapay会在RTP头中写入固定的负载类型编号(0或1),Wireshark抓包时会直接识别为PCMU/PCMA,而非动态类型96。

内容的提问来源于stack exchange,提问作者eleleus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:33:26