在freeswitch编码协商中 一般网关传过来的支持pcma、g729 以下是协商的日志:
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[G729:18:8000:20:8000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[G722:9:8000:20:64000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[PCMU:0:8000:20:64000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[PCMA:8:8000:20:64000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5647 Audio Codec Compare [PCMA:8:8000:20:64000:1] ++++ is saved as a match
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [G729:18:8000:20:8000:1]/[G729:18:8000:20:8000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5647 Audio Codec Compare [G729:18:8000:20:8000:1] ++++ is saved as a match
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [G729:18:8000:20:8000:1]/[G722:9:8000:20:64000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [G729:18:8000:20:8000:1]/[PCMU:0:8000:20:64000:1]
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:5592 Audio Codec Compare [G729:18:8000:20:8000:1]/[PCMA:8:8000:20:64000:1]
如果freeswitch 装了bcg729 https://github.com/xadhoom/mod_bcg729 就支持729 ,在vars.xml添加729新编码 但是协商结果优先使用的是pcma
2021-02-09 13:21:29.118569 [DEBUG] switch_core_media.c:3837 Set Codec sofia/internal/1002@192.168.70.88 PCMA/8000 20 ms 160 samples 8000 bits 1 channels
如果要优先729 在使用pcma怎么处理?
查看源码 switch_core_media.c 默认就是0 所以只要改下就行了
“Audio Codec Compare [%s:%d:%u:%d:%u:%d] ++++ is saved as a match”找到这行的下面
....
if (j == 0) {
a_engine->cur_payload_map = pmap;
a_engine->cur_payload_map->current = 1;
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "lilin23=%s\n",matches[j].map->rm_encoding);
if (a_engine->rtp_session) {
switch_rtp_set_default_payload(a_engine->rtp_session, pmap->pt);
}
}
默认是0 可以根据自己的逻辑来重新实现就行了 当然你的网关确定都支持G729 就直接在vars.xml 删除pcma就行
修改后重新编译 就能支持自己想要的编码优先了