SIP中的早期媒体与回铃音的产生

FreeSWITCH媒体绕行 本文简要说明在我个人使用过程中涉及的一些情况,并非是完全涵盖的技术文档,仅供参考。 涉及参数 bypass_media bypass_media_after_bridge bridge_early_media ignore_early_media 在diaplan中实现 在拨号计划(diaplan)中,实现方式比较简单,只需要设置bypass_media=true,之后再通过bridge的... 阅读详情

转自 http://www.ring180.com/sip/28-pstn-interworking/59-sip 

1、早期媒体

无论是在PSTN还是在VoIP网络中,一个呼叫的最终目的让两个用户进行交谈(conversation)。这里我们将由用户之间的交谈所产生的媒体称为常规媒体(“regular media”)。

早期媒体(“early media”)是与常规媒体相比而言的。

通常,主叫用户发起呼叫后用户交谈并不会立即开始(甚至可能最终没有开始),等待时间一般是几秒到几十秒,这完全取决于被叫用户的何时应答。在被叫应答之前,主叫用户与网络之间也可以有媒体流产生,与常规媒体相区别,这种媒体被称为早期媒体。

最典型的早期媒体就是回铃音。其他形式的早期媒体还有排队提示等等。早期媒体通常都是单向的(网络>主叫),在SIP中也可能会有双向的早期媒体。

 

2、早期媒体的传送

要传送媒体首先要建立一个媒体会话(Session)。建立媒体会话实际上就是通过SDP offer/answer交换进行就会话的媒体参数进行协商的一个过程。在SIP中,媒体会话的建立过程通常首先伴随着一个SIP对话(Dialog)的建立过程,一般情况下,媒体会话和SIP对话是同时建立的(通过SIP 200或ACK消息携带SDP answer)。这种情况下,媒体会话直到被叫用户摘机以后才能建立起来,只能用户传送用户媒体,显然无法传送早期媒体。

要传送早期媒体,必须在SIP对话尚未完全建立之时,即所谓的SIP早期对话状态,完成媒体会话的建立。

怎样在早期对话状态建立媒体会话呢?SIP中支持两种做法。

这两种做法的关键不同在于:是否将传送早期媒体的会话与传送之后的通话媒体的会话明确地划分清楚,区别开来。具体到协议上看,两种做法都利用了200之前的SIP消息,比如1xx-rel、PRACK、Update等等,来传送SDP offer/answer, 但是这些SDP offer/answer在SIP消息中的标明类型和处理指示是不同的。

做法1没有明确区分出用于早期媒体的会话,实际上始终只有一个会话。具体到协议上看,用于建立(或修改)这个会话的SDP offer/answer 在SIP消息中的处理指示都是“Session”。

做法2专门建立一个用于传送早期媒体的会话,并称之为早期会话(“early-session”)。具体到协议上看,用于建立(或修改)早期会话的SDP offer/answer SIP 消息中的处理指示是“early-session”。并且,在一个SIP消息中可以同时携带处理指示分别为“Session”和“early-session”的两个SDP消息,各自独立地用于早期会话的协商和正常会话的协商。

如下图所示。在做法1中,用同一个会话(在不同的时间段里)来传送早期媒体和通话媒体。在被叫摘机之前,这个会话可用于传送早期媒体,在被叫摘机之后,这个会话又用于传送通话媒体。倘若早期媒体和通话媒体的参数不同的话,需要重新进行媒体传输参数的协商,这需要一定的时间,可能会带来媒体删剪(media clipping)的问题。在做法2中,同时会存在两个会话,分别用于传送早期媒体和通话媒体,在被叫摘机之后,终端可以迅速从早期会话切换到正常会话,不会带来媒体删剪的问题。

image002

根据它们的适用场景的不同,这两种做法分别被称为网关模式和应用服务器模式。

3、回铃音的产生

一个呼叫被发起之后,当被叫终端振铃时,主叫也会听到某种声音,提示正在等待被叫应答,这就是所谓回铃音。回铃音通常是某种标准的音频信号,也可能是被叫用户指定的某种特殊的声音文件,例如音乐等等。在PSTN中,回铃音通常是被叫的本地交换机产生,然后通过已建立的单向话路传送给主叫话机,由主叫话机播放给主叫。

在SIP网络中,被叫侧可以早期媒体的形式向主叫提供回铃音(如果被叫侧不提供回铃音,则主叫SIP终端会在本地产生回铃音)。究竟使用前面所述的两种做法的那一种来传送早期媒体,下面分别讨论。

3.1.网关模式

网关模式适用于被叫(即UAS)为一个SIP网关的情形。具体的可能的情况通常如下图所示:一个用户在SIP终端上呼叫一个PSTN用户,这个呼叫通过了一个SIP网关。就SIP呼叫而言,网关是被叫。

image004

在这里,回铃音是由PSTN网产生的。但是在SIP域,SIP网关需要以早期媒体的形式将从PSTN网络收到的回铃音媒体传送给主叫SIP终端。

这种情况下,从SIP域来看,回铃音媒体流和之后的被叫媒体流的产生是同源的,都在SIP网关上。当被叫用户摘机时,回铃音媒体流自然地变成了用户媒体流,因此可以使用网关模式,而不会带来媒体删剪的问题。

信令流程如下图:

image006

其中消息简单说明如下:

1) INVITE请求中含有SDP offer,其处置类型为“Session”。
网关收到INVITE后向PSTN发送IAM消息,然后在PCM话路上收到回铃音,同时在信令上收到ACM消息。

2) 183响应中含有SDP answer,其处置类型为“Session”。
此时,UAC与网关之间媒体会话建立,同时将回铃音在这个会话上传送给UAC。

3) UAC发送PRACK

4) 网关返回针对PRACK的200响应。

5) 被叫用户应答,网关收到ANM后向SIP UAC返回200 INVITE响应。同时到SIP UAC上的会话上的回铃音自动变成了从PSTN上收到的用户话音。主被叫用户开始双向通话

6) SIP UAC发送ACK。

3.2.应用服务器模式

image008

应用服务器模式适用于被叫(即UAS)是一个应用服务器的情形。具体的可能的情况通常如上图所示:一个SIP用户希望由运营商网络(而非终端)来产生回铃音。运营商通常使用网络上的一个MRF资源提供回铃音,并且需要一个应用服务器其来控制回铃音的产生。

这种情况下,回铃音媒体流与之后的被叫媒体流分别在MRF与被叫SIP终端上产生,显然是不同的源。如果使用网关模式的话,将回铃音媒体切换为被叫媒体流必须在会话上进行媒体更改,媒体更改不能立即完成,这将会带来媒体删剪的问题。

使用应用服务器模式,则是同时建立了两个会话,将回铃音媒体切换为被叫媒体流可以通过将当前会话从早期会话切换到正常会话上即可,能够立即完成。

信令流程如下图:

image010

简单说明如下:

1) INVITE请求中携带一个SDP作为常规会话的offer
其Supported头域中包含一个选项标签“early-session”,表示主叫终端支持早期会话。

2) INVITE请求中携带之前收到的offer

3) 183响应中携带一个SDP作为常规会话的answer。

4) 183中含有两个SDP:

a) 一个是之前从被叫那里收到的,作为常规会话的answer;
此时常规会话被建立,但并没有媒体被传送。

b) 另一个作为要建立的早期会话的的offer.

5) PRACK中携带一个SDP,作为早期会话的answer
此时早期会话被建立,且有被早期媒体(回铃音)传送。

6) AS向被叫发送PRACK

7) 被叫向AS返回200 PRACK

8) AS向主叫返回200 PRACK

9) 被叫摘机,向AS发送200响应

10) AS向主叫发送200响应
此时常规会话上将会有媒体传送,主叫UA播放常规会话上的媒体。

4、关于目前多媒体彩铃的实现的简单说明

目前中国网通及中国移动的多媒体体彩铃业务的实现都主要采用了网关模式的实现方案(详细流程参见相关技术规范),原因是很多SIP终端都不支持“early-session”选项标签,无法使用应用服务器模式。

实际上,采用网关模式实现彩铃会导致媒体删剪等一些问题,最终应该会逐步过渡到理想的方案 – 应用服务器模式。

【VOLTE】Early media VS Later Media Early Offer和Later offer决定了编码内容,但并没有决定合适开始传输媒体内容。 Early media是在被叫没有应答通话之前传输的媒体 Later media是在被叫确认通话之后传输的媒体。 Early/Later offer和 Early/Later media一般没有什么关系   一般通话有3个阶段的声音 第一阶段:用户拿起终端,进行拨号,会听到呲呲、按键等声音,这些不是媒 阅读详情

相关推荐

volte的sip信令流程_VoLTE主叫信令流程详解(有抓包截图详细介绍)

VoLTE主叫信令流程详解(有抓包截图详细介绍):注册的目的是信息登记,并为后续的主被叫提前进行了相应的寻址。例如,主叫流程中信令所经历的网元路径就是在注册阶段被分配好的,并在该UE注册期间保持不变。IMS域的的主叫信令流程总览如下:1、首先UE向P-CSCF发出SIP INVITE请求,包含初始SDP消息,该初始SDP消息包含一个多媒体会话的一个或多个媒体流。UE需要在INVITE消息了嵌入Ac...

weixin_39984963的博客 2711

早期媒体

早期媒体 早期媒体的概念比较泛,只要处于早期对话内的媒体交互都属于早期媒体。 根据方向性,早期媒体可以分为前向早期媒体、后向早期媒体,当然也可能出现双向早期媒体。当前我们主要关注后向早期媒体。 根据目前RFC标准规范定义,早期媒体有Gateway模式、App模式,目前《中国电信IMS网络SIP协议总体技术要求》必须支持Gateway模式,对于App模式没有做特别说明。当前我们

技术人生 1万+

FreeSWITCH早期媒体完全指南:从180/183响应到彩铃实现的底层原理

本文深入解析FreeSWITCH早期媒体机制,从SIP协议中的180/183状态码差异到彩铃业务实现原理。详细探讨了早期媒体在回铃音、彩铃等场景中的应用,包括SDP协商、媒体流控制及FreeSWITCH源码级操作指南,帮助开发者优化通信系统性能与用户体验。

weixin_42524276的博客 760

回铃音问题

拨号成功后听到的回铃音由谁来播放是服务器和设备协商决定,终端根据服务器回复的18X消息来判断是服务器放回铃音还是终端放回铃音,标准规范中主要参考服务器回的18X消息中是否携带SDP消息,以及P-Early-Media的参数值,由于现网中部分服务器没有按照规范执行,主要表现为该服务器放彩铃或者回铃音,服务器没有放,由于服务器不修改,只能终端自己播放,故我司设备添加sip early-media开关,...

lsn630LSN的博客 6135

FreeSWITCH实战指南:巧用mod_tone_stream解决回铃音丢失问题

本文针对FreeSWITCH在外网部署时常见的回铃音丢失问题,深入剖析了其根源在于SIP早期媒体协商与防火墙/NAT对RTP流的拦截。文章重点介绍了利用mod_tone_stream模块生成本地回铃音的实战解决方案,通过配置ringback、transfer_ringback等通道变量,并结合ignore_early_media策略,有效补偿因网络或协议差异导致的回铃音缺失,确保主叫用户体验。

weixin_29224309的博客 135

SIP协议实战解析:从核心原理到GB28181与故障排查

会话初始协议(SIP)作为应用层控制协议,是构建实时音视频通信、IP电话和物联网信令交互的基石。其核心采用无状态的请求/响应事务模型,并通过有状态的对话(Dialog)管理会话生命周期,实现了多媒体会话的创建、修改与终止。该协议的技术价值在于其标准性、灵活性以及对NAT穿透(如STUN/TURN/ICE)的成熟支持,使其在需要标准化信令交互的场景中不可或缺。典型的应用场景包括企业语音通信、视频会议系统,以及安防领域的GB/T 28181视频监控平台。本文将聚焦于SIP协议的关键头字段解析,如`Session

weixin_34259232的博客 370

java sip 携带sdp_SIP中的SDP offer/answer交换初探

1、早期媒体无论是在PSTN还是在VoIP网络中,一个呼叫的最终目的让两个用户进行交谈(conversation)。这里我们将由用户之间的交谈所产生的媒体称为常规媒体(“regular media”)。早期媒体(“early media”)是与常规媒体相比而言的。通常,主叫用户发起呼叫后用户交谈并不会立即开始(甚至可能最终没有开始),等待时间一般是几秒到几十秒,这完全取决于被叫用户的何时应答。在被...

weixin_39726408的博客 975

中文版RFC5009

RFC 5009:针对早期媒体授权的会话发起协议的隐私头部信息扩展 该备注为互联网组织提供信息。它没有定义任何一种互联网标准。备注的分类是没有限制的。

SIP中的早期媒体early media与回铃音

1、早期媒体 无论是在PSTN还是在VoIP网络中,一个呼叫的最终目的让两个用户进行交谈(conversation)。这里我们将由用户之间的交谈所产生的媒体称为常规媒体(“regular media”)。 早期媒体(“early media”)是与常规媒体相比而言的。 通常,主叫用户发起呼叫后用户交谈并不会立即开始(甚至可能最终没有开始),等待时间一般是几秒到几十秒,这完全取决于被叫用户的何

840

SIP中的早期媒体机制与回铃音的产生

转载网络上的,由于http://blog.youkuaiyun.com/liaoxinmeng/article/details/6949351 无图不方便,找齐图片版的(但仍然感谢)。还有 http://blog.sina.com.cn/s/blog_6b10255301012kzw.html 感谢以上博客,还有其他相关博客。在此借花献佛了。

PostgreSQL数据库全攻略:从入门到精通

本文是一份PostgreSQL数据库综合指南,涵盖安装配置、基础操作和高级管理。主要内容包括:1) PostgreSQL简介与各平台安装方法;2) 数据库基本操作,如创建数据库/表、CRUD操作、用户权限管理;3) 高级功能包括索引优化、事务控制、视图、存储过程、触发器和扩展模块;4) 数据库管理维护,涉及配置调优、备份恢复、性能监控和日常维护;5) 安全设置与高可用方案。指南提供了从入门到进阶的实用知识,强调结合官方文档进行深入学习,帮助用户高效使用这一功能强大的开源关系型数据库系统。

索大神的博客 1970

SIP中的SDP offer/answer交换初探(转载)

1.引言 SDP的offer/answer模型本身独立与于使用它的高层协议。SIP是使用offer/answer模型的应用之一。RFC 3264 [3]定义了offer/answer模型,但没有规定使用那个SIP消息来携带一个offer或answer。这些被定义在SIP基本部分(RFC3261)及其扩展RFCs中。 理论上,任何SIP消息的正文中都可以包含会话描述部分。但是,一个SIP中的会话

liaoxinmeng的专栏 6287

AWS RDS 介绍 三)创建 RDS 实例

AWS RDS 介绍 共分为 7 个部分, 其中 第 3部分重点介绍,如何创建一个RDS 实例。 三) AWS RDS 试用MySQL http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.

XuYongshi02的专栏 7646

SIP中的SDP offer/answer交换初探

1.引言 SDP的offer/answer模型本身独立与于使用它的高层协议。SIP是使用offer/answer模型的应用之一。RFC 3264 [3] 定义了offer/answer模型,但没有规定使用那个SIP消息来携带一个offer或answer。这些被定义在SIP基本部分(RFC3261)及其扩展RFCs中。 理论上,任何SIP消息的正文中都可以包含会话描述部分。但是,一个SIP中的会

phymat.nico的专栏 3723

STK传感器约束设置保姆级教程:从方位角到传播延迟,手把手教你避开新手常见坑

本文详细解析了STK传感器约束设置的关键技巧,涵盖方位角、仰角、高度及传播延迟等核心参数。通过实战案例和代码示例,指导用户避开常见误区,优化卫星通信和航天任务仿真精度,特别适合STK新手和需要提升传感器配置效率的工程师。

weixin_33701294的博客 392

三. zemax光学设计流程+案例

文章目录zemax 基本操作:1. 建立光学基本模型2. 像质评价3. 优化(重点)4. 公差分析简单镜头设计 zemax 基本操作: 1. 建立光学基本模型 2. 像质评价 3. 优化(重点) 对系统设定的约束条件或目标值 统称为操作数。 操作数: 光学特性参数(焦距EFFL,近轴放大率PMAG,入瞳位置EMPP) 像差参数(球差SPHA,彗差COMA,像散ASTI) 边界条件(中心厚度值CTVA,边缘厚度值ETAV) 优化的主要步骤: 设置评价函数和优化操作数 一般小像差系统采用波像差 构建

Taiiiii的博客 8054

SIP中的早期媒体early media与回铃

转载至:http://blog.sina.com.cn/s/blog_6b10255301012kzw.html 1、早期媒体 无论是在PSTN还是在VoIP网络中,一个呼叫的最终目的让两个用户进行交谈(conversation)。这里我们将由用户之间的交谈所产生的媒体称为常规媒体(“regular media”)。 早期媒体(“early media”)是与常规媒体相比而言

kafeiwuzhuren的专栏 1万+

【OpenArm|Control】openarm机械臂ROS2仿真控制

openarm_ros2 存储库包含用于 ros2_control 的包集合。 它抽象化了硬件控制,将手臂公开为接收位置、速度和扭矩命令并输出关节状态的接口。 openarm_bringup 包提供了通过包与 ROS2 控制框架集成的启动文件。该软件包提供启动文件和配置,用于启动硬件接口、加载控制器以及将物理臂连接到 ROS2 生态系统。启动后,您可以使用标准 ROS2 控制工具和接口来命令手臂并接收反馈。openarm_bringup bringup 包支持模拟硬件(用于模拟/测试)和通过硬件插件的真实

ai领域探索者,欢迎一起交流,目前从事具身智能行业。 2958

揭开回铃音 (Ringback Tone) 的神秘面纱:从 SIP 信令到音频底层参数

摘要: 回铃音(Ringback Tone)是电话呼叫等待时的提示音,其实现涉及复杂的SIP信令和音频处理技术。本地回铃音由主叫终端生成(如180响应),而网络回铃音(如183响应)通过早期媒体流传输彩铃。不同国家/地区的回铃音参数(频率、节奏)差异显著,开发中需遵循ITU-T标准。C++实现需处理正弦波生成、状态切换和防爆音优化。常见问题包括鬼影回铃音、波形切断爆音和媒体剪裁,需通过优先级管理、淡入淡出和平滑切换解决。回铃音虽小,却是通信系统中信令、媒体流与DSP协同的典型案例。

greenspan的专栏 510

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

念兮为美 2281

卫朋:IPD流程落地——产品计划阶段拆解

IPD计划阶段拆解

产品线负责人 957

SIP交换中的SDP及RTP的工作过程

下面是一个典型的SIP会话   要传送媒体首先要建立一个媒体会话(Session)。建立媒体会话实际上就是通过SDP offer/answer交换进行就会话的媒体参数进行协商的一个过程。但在SIP中没有规定使用哪个SIP消息来携带一个SDP(offer或answer)。理论上,任何SIP消息的正文中都可以包含会话描述部分。但是,一个SIP中的会话

一个人的旅行的博客 2万+

Windows11上pip安装IsaacSim5.1.0与IsaacLab

本文详细介绍了CUDA Toolkit 12.8.0、IsaacSim和IsaacLab的安装过程。首先从NVIDIA官网下载并安装CUDA Toolkit 12.8.0,然后通过miniforge创建conda环境(env_isaacsim)安装IsaacSim相关Python包,解决了Windows长路径问题。成功运行IsaacSim后,克隆IsaacLab仓库并完成安装验证,最后通过创建空场景测试环境配置。整个安装过程包含详细的命令行操作和问题解决方法,为机器人仿真开发环境搭建提供了完整指导。

拥抱具身智能,昇腾Ascend C 378
上一篇: MSDN使用的一点注意
下一篇: CentOS 5.0下安装NS-2
weide001
博客等级 码龄19年 74粉丝 95原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值