当前位置: 首页 > news >正文

freeswitch的proxy_media模式下video流的问题与修正

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

测试过程中发现fs的proxy_media模式的一个bug,就是video媒体流的转发处理有问题。

环境

CentOS 7.9

freeswitch 1.6.20

问题

fs配置为proxy_media模式,A路发起呼叫,A路远端的sdp中有audio和video媒体信息。

a642b367-754c-492e-b227-87f94e8010c7 m=audio 16394 RTP/AVP 8 18 101

a642b367-754c-492e-b227-87f94e8010c7 m=video 16396 RTP/AVP 99

fs处理拨号计划后,发起B路呼叫,B路的sdp继承了A路的sdp,本地sdp信息如下。

a642b367-754c-492e-b227-87f94e8010c7 m=audio 54398 RTP/AVP 8 18 101

a642b367-754c-492e-b227-87f94e8010c7 m=video 54400 RTP/AVP 99

B路收到终端的183sdp信息,处理媒体信息后,本地sdp修改如下。

a642b367-754c-492e-b227-87f94e8010c7 m=audio 54398 RTP/AVP 8 18 101

a642b367-754c-492e-b227-87f94e8010c7 m=video 44622 RTP/AVP 99

其中B路本端的audio端口为54398,video的端口从54400修改为了44622。

结果就是,B路本端的video媒体流从44622端口发到远端,远端的video媒体流送到本地的54400,造成媒体流擦肩而过。

查看switch_core_media.c的switch_core_media_patch_sdp函数,在处理video信息时,强制重选了video本地端口,而audio端口处理正常。

switch_core_media_choose_port(session, SWITCH_MEDIA_TYPE_VIDEO, 1);

查看调用堆栈,mod_sofia模块在处理183sdp的流程中,proxy_media模式下会主动调用“switch_core_media_patch_sdp”这一并无必要的操作。

修复

修改mod_sofia模块的sofia.c文件,屏蔽“switch_core_media_patch_sdp”操作。

} else if (switch_channel_test_flag(channel, CF_PROXY_MEDIA)) {switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "PROXY MEDIA");// switch_core_media_patch_sdp(tech_pvt->session);if (sofia_media_activate_rtp(tech_pvt) != SWITCH_STATUS_SUCCESS) {nua_respond(nh, SIP_488_NOT_ACCEPTABLE, TAG_END());switch_channel_hangup(channel, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION);} else{switch_channel_mark_pre_answered(channel);}

测试

重新编译mod_sofia模块后,测试视频流程,媒体协商正常,B路本地端口协商正常,媒体流正常转发。

总结

未经过充分测试,不清楚对其他业务流程的影响。

经过修改后的fs虽然可以正常转发rtp媒体流,但是仍然无法转发rtcp消息,在网络较差的情况下,视频媒体流无法利用rtcp的特性修复视频卡顿。

空空如常

求真得真

http://www.dtcms.com/a/495837.html

相关文章:

  • 大模型后训练(Post-Training)指南
  • 外卖网站怎么做销量用php建设一个简单的网站
  • 医药企业网站建设浙江省城乡建设厅网站
  • 【超保姆级C++开发教程】从0制作1个带MFC界面的AI图像分类工具
  • 如何将 Android 联系人备份到 Mac 的 4 种简单
  • 免费建网站可信吗wordpress 投稿 插件
  • 基于单片机的车载防酒驾智能控制系统设计
  • 网站优化排名软件推广赣州人才网最新招聘
  • 江宁外贸网站建设浦江县做网站
  • 西安网站建设 盈科成都网站建设上市
  • 【VSCode】Visual Studio Code 2025安装包及安装教程 (附所有版本下载)
  • 益阳有专做网站的吗手机网站导航代码
  • IO------------流(文件读写 )
  • UE5 测量 - 11,面积测量:补充学习多边形的生成
  • 语音合成系统---IndexTTS2:环境配置与实战
  • 网站技术开发重庆观音桥介绍
  • mysql一条sql语句的执行过程
  • 专门做外国的网站有哪些国内软件公司排行榜
  • Git-git stash与分支管理
  • 企业管理软件系统网公司网站服务器优化
  • [嵌入式系统-136]:主流AIOT智能体软件技术栈
  • 半导体制造工艺基本认识 大纲
  • (三)TCP/IP
  • 机器学习(1) 监督学习和无监督学习
  • 问卷调查网站赚钱设计与网站建设案例
  • 杭州建设网站官网企业邮箱在哪里看
  • 如何选择做pc端网站备份wordpress数据库
  • CMake 编译中去掉警告/W3重写 cl: 命令行 warning D9025 :正在重写“/W3”(用“/w”)“
  • 工业上位机,用Python+Qt还是C#+WPF?​
  • 表白网站想学软件开发报什么专业