kamailio+rtpengine对sdp的处理

news/2025/11/6 19:10:38/文章来源:https://www.cnblogs.com/qiuzhendezhen/p/19197533

头图-80

 

概述

使用kamailio+rtpengine的过程中,默认会使用rtpengine处理sdp信息,同时又需要对sdp信息定制,就需要对cfg配置流程中做特殊处理才能实现。

环境

CentOS 7.9

kamailio:5.8.3-bullseye docker

rtpengine:mr13.1.1.6-4 docker

需求

kamailio 5.8.3 + rtpengine 13.1.1.6,媒体代理模式。

需求点

1,需要使用rtpengine修改sdp信息中的ip地址为代理ip

2,需要对sdp信息中的“s=CounterPath eyeBeam 1.5”替换为“s=gw001”

3,需要对sdp信息中的“a=alt:1 1 : IvxRyFPx cTd2qu0Q 10.9.0.30 23592”做删除操作

 

方案1,在rtpengine_manage之后对“$avp(sdp)”做处理。

$avp(sdp) = $(avp(sdp){re.subst,/^a=alt:1.*//});

$avp(sdp) = $(avp(sdp){re.subst,/^a=alt:1.*\r\n//});

$avp(sdp) = $(avp(sdp){re.subst,/^a=alt:1.*\r?\n?//});

测试结果,处理后的sdp中删除了“a=alt:1”行,但是对于行尾换行符的处理不够充分,\r\n对应的"0d 0a"会删除“0d”,保留“0a”,造成sngrep和wireshark的抓包信息展示不美观。

 

image

 

方案2,在rtpengine_manage之前对“原始sdp”做处理,并需要提交修改。

replace_body("^a=alt:1.*\r\n","");

msg_apply_changes();

测试结果,处理后的sdp正确删除了“a=alt:1”行,换行符的处理也符合预期。

配置

测试结果使用方案2更符合需求预期。

方案2的cfg配置更复杂,也更绕,主要是“replace_body”等函数对sdp的处理并不会直接生效,而是需要调用“msg_apply_changes”提交修改生效。

修改kamailio.cfg文件,主要修改如下。

...
loadmodule "textops.so"
loadmodule "textopsx.so"
...
loadmodule "rtpengine.so"
loadmodule "sdpops.so"
...
# ----- rtpengine params -----
modparam("rtpengine", "rtpengine_sock", "udp:127.0.0.1:2223")
modparam("rtpengine", "read_sdp_pv", "$avp(sdp)")
modparam("rtpengine", "write_sdp_pv", "$avp(sdp)")
...if (is_method("INVITE|UPDATE|ACK")) {		# proxy media route(RTPENGINE);}
...
route[RTPENGINE] {xinfo("route[RTPENGINE]\n");# check if have sdpif (!has_body("application/sdp")){xinfo("!has_body(application/sdp)\n");return;}if(ds_is_from_list("3060") || ds_is_from_list("3061")){# xinfo("route[RTPENGINE1], sdp(body)=$sdp(body)\n");replace_body("^s=CounterPath.*","s=SBC-GW001");replace_body("^a=alt:1.*\r\n","");sdp_remove_codecs_by_id("18");msg_apply_changes();# xinfo("route[RTPENGINE2], sdp(body)=$sdp(body)\n");sdp_get("$avp(sdp)");# xinfo("route[RTPENGINE3], avp(sdp)=$avp(sdp)\n");xinfo("route[RTPENGINE], 3060|3061\n");# from pub, to privrtpengine_manage("replace-origin replace-session-connection direction=pub direction=priv ");# xinfo("route[RTPENGINE4], avp(sdp)=$avp(sdp)\n");set_body("$avp(sdp)", "application/sdp");}else if(ds_is_from_list("5060")){replace_body("^s=pjmedia.*","s=SBC-GW001");replace_body("^b=AS:84.*\r\n","");replace_body("^a=X-nat:0\r\n","");msg_apply_changes();sdp_get("$avp(sdp)");xinfo("route[RTPENGINE], 5060\n");# from priv, to pubrtpengine_manage("replace-origin replace-session-connection direction=priv direction=pub ");set_body("$avp(sdp)", "application/sdp");}return;
}

测试

重启kamailio,发起呼叫。

从信令中看到,经过kamailio处理的sdp信息符合预期。

image

 

总结

kamailio+rtpengine作为媒体代理的方式简单易用,转发效率高,不会修改媒体包的内容,rtp和rtcp都可以正常透传转发。

kamailio的cfg配置实例在网上较少,需要对照官方文档反复测试试验。

 

空空如常

求真得真

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软工团队项目第一次作业

软工团队项目第一次作业作业所属课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/作业要求 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13573作业的目标 团队展示+选…

低代码权限管理安全合规指南:守住数据安全的 “最后一道防线”

随着数据安全法、个人信息保护法的落地,企业对系统权限管理的合规要求越来越高。低代码平台作为企业数字化的核心工具,其权限管理不仅要保障数据不泄露、操作不越权,还要满足行业监管和法律法规的要求。 很多企业误…

2025-11-06

2025-11-06CF补题 Problem - 515C - Codeforces(1400)(string+a little factorial) 这题妙在把各个数字阶乘转换成仅含有2 3 5 7 数字,然后直接求解 要对每个数的阶乘进行换算[!tip]9 is 7!*8*9=7!*3!*3!*2!8 is …

低代码权限管理常见场景解决方案:精准适配不同业务需求

低代码平台的核心优势是 “快速适配多元业务”,而权限管理作为保障业务安全的关键,必须跟着场景走。很多企业在设置权限时,容易陷入 “一刀切” 的误区 —— 用一套权限配置应对所有业务场景,结果要么出现 “权限不…

不适用模型的简易ai交互页面

不适用模型的简易ai交互页面 一.形式import streamlit as st st.title("测试标题") st.divider() prompt=st.chat_input("请输入你的问题") if prompt:#如果问题不为空才输出答案st.chat_message(…

关于waybar状态栏颜文字乱码问题

也就差个字体的事: sudo pacman -S nerd-fonts

自己的火印

/*** Modified by Noivelist,* Luogu:https://www.luogu.com.cn/user/700335* Marsoj:http://marsoj.com/user/252* “倘若梦境醒来,执念破去,我们再谈救赎”* Working on Project: [ ]**/

P10277 [USACO24OPEN] Bessies Interview S 题解

P10277 [USACO24OPEN] Bessies Interview S 题解P10277 [USACO24OPEN] Bessies Interview S 题解 题目传送门 我的博客 思路 首先这道题第一问非常好做。只需要按照题目描述的那样模拟即可。即用优先队列存每个奶牛的面…

基于AIGC的图表狐深度评测:自然语言生成专业级统计图表的高效的技术实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AI 时代的数据库进化论 —— 从向量到混合检索

AI 时代的数据库进化论 —— 从向量到混合检索说明:本文只是关于数据库发展趋势的个人见解,没有特别深入的向量和混合检索的实现原理,属于很浅显易懂的科普类文章,几乎不需要任何背景知识,大家可以放心阅读。 关于…

深入解析:操作系统基础:了解进程、线程、协程,理解I/O模型(阻塞/非阻塞,同步/异步)。

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vue 3.x 前端导出功能

首页安装插件 npm install xlsx 在当前页面中引入import * as XLSX from xlsx点击事件<a-button :disabled="orderList.length === 0" :size="small" @click="exportExcel"><…

最高法-合同目的的认定

最高法-合同目的的认定2025-11-06 18:48 wwx的个人博客 阅读(0) 评论(0) 收藏 举报(2023)最高法民申2327号 天府某公司、西藏某公司等技术服务合同纠纷民事申请再审审查民事裁定书 本院认为: (一)关于涉案合…

2025年恒温恒湿机标杆厂家最新推荐:中焓环境,档案室恒湿机/精密恒温恒湿机/吊顶恒温恒湿机/档案室恒温恒湿机,定义环境控制精准新标准

随着社会对文物保存、精密制造、数据中心运维及工业生产的环境要求日益严苛,恒温恒湿设备已从特定领域专用设备,扩展至博物馆、档案馆、数据中心、医药、电子等多个关键行业。2025年,市场需求预计将持续增长,但随之…

2025年恒温恒湿厂家及恒湿设备标杆之选:中焓环境,适配机房/档案室/展柜等场景

随着各行业对环境温湿度精准控制需求的不断提升,尤其是机房、档案室、展柜等特殊场景对环境稳定性要求趋严,以及环保与节能理念在设备领域的深入渗透,恒温恒湿机、恒湿机等相关设备已从专业领域逐步拓展至更多行业应…

酸角糕行业发展趋势解析:2025年十大品牌综合测评与选择指南

酸角糕行业发展趋势解析:2025年十大品牌综合测评与选择指南【摘要】 酸角糕作为一种传统健康零食,近年来在消费升级和健康饮食潮流推动下,行业规模持续扩大,预计年增长率超过15%。本文基于第三方调研数据、用户口碑…

2025年11月酸角糕行业十大厂家排行榜:探索健康零食的新趋势与优选指南

2025年11月酸角糕行业十大厂家排行榜:探索健康零食的新趋势与优选指南随着消费者对健康食品需求的增长,酸角糕行业近年来蓬勃发展,成为休闲零食市场的新宠。本文基于行业数据分析及市场调研表单(包括消费者偏好、销…

mysql 查看数据库大小

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.tables GROUP BY table_schema;

2025年11月酸角糕厂家综合评测:健康零食新风向与选购全攻略

2025年11月酸角糕厂家综合评测:健康零食新风向与选购全攻略【摘要】 酸角糕行业正迎来快速发展期,随着消费升级和健康饮食理念的普及,这一传统零食焕发新生。本文基于行业调研数据及消费者反馈表单(包括产品口感测…