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

树莓派使用pjproject遇错误:bad rtp pt 101 (expecting 8)

解决pjproject 2.14中DTMF按键触发“bad rtp pt 101 (expecting 8)”错误的方案

这个错误的核心原因是:远端通过RTP负载类型(PT)101传输RFC4733标准的tel-events(DTMF信号),但你的pjproject配置仅期望接收音频负载类型8(PCMA),导致DTMF数据包被判定为无效RTP包。以下是具体修复步骤:

  • 强制启用RFC4733 DTMF支持
    在代码中明确配置DTMF处理方式为RFC4733,并确保会话支持tel-events媒体格式:

    // 配置会话的DTMF处理方法
    pjsua_call_setting call_cfg;
    pjsua_call_setting_default(&call_cfg);
    call_cfg.dtmf_method = PJMEDIA_DTMF_METHOD_RFC4733;
    
    // 向媒体流添加tel-events格式(匹配远端PT 101)
    pjmedia_format tel_fmt;
    pjmedia_format_init_from_sdp_name(&tel_fmt, "telephone-event", NULL);
    tel_fmt.pt = 101;
    pjmedia_stream_add_format(your_stream, &tel_fmt);
    

    如果远端PT值不固定,可省略tel_fmt.pt = 101,让pjproject自动协商适配远端的PT值。

  • 解除音频PT的硬限制
    检查代码中是否存在硬编码仅允许PT8的逻辑,比如媒体端点配置中的audio_pt参数,确保不要过滤非音频类的PT类型,让pjproject能处理tel-events对应的PT值。

  • 验证SDP协商结果
    通话建立后,查看本地与远端交换的SDP内容,确认是否包含类似a=rtpmap:101 telephone-event/8000的字段。如果没有,说明协商阶段未成功达成tel-events支持,需检查本地SDP是否正确添加了tel-events媒体格式。

  • 应用官方补丁(可选)
    pjproject 2.14存在少量DTMF处理的已知问题,可前往官方代码仓库查找针对RFC4733动态PT适配的补丁,编译安装补丁后的版本以修复潜在bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:12:18