jkkj1630
没什么
展开
-
FreeSwitch使用opencore进行AMR-NB解码过程中,出现解码函数死循环问题
本篇文章介绍一个AMR-NB编码使用opencore解码时的死循环bug解决思路,并未从根源上解决问题,而是采取了特殊方式达到了解决问题的目的。发现问题的版本是FreeSwitch的1.10.9版本,经过了较多改动,但未影响到编解码部分,此bug非改动后新产生的bug,原版FreeSwitch也会携带此bug。原创 2025-01-16 19:52:23 · 56 阅读 · 0 评论 -
FreeSwitch代码中2个常修改的具体代码具体位置和简介
FreeSwitch在各种实际应用场景中,在不修改代码的情况下完整的支持业务场景是一件不容易的事情,大部分实际应用场景需要修改FreeSwitch的代码。所以了解清楚FreeSwitch代码是一件FreeSwitch应用必备的技能,本文将对FreeSwitch常修改和调试的常见位置进行介绍。原创 2024-05-11 19:30:26 · 296 阅读 · 1 评论 -
使用FreeSwitch的hangup命令拒绝一个INVITE请求时,指定INVITE的响应码。
假设在FreeSwitch的dialplan中使用hangup命令拒绝一个呼叫时,默认使用480响应码来拒绝一个INVITE消息。当然,FreeSwitch支持使用hangup的参数来决定使用指定的响应码来回复INVITE消息。FreeSwitch自带一些指定的响应码,如果想增加自己的响应码,可修改FreeSwitch代码来增加自己的响应码。原创 2024-05-11 18:13:53 · 1238 阅读 · 2 评论 -
FreeSwitch在B腿回复422消息时,透传Min-SE字段给A腿
FreeSwitch当使用bridge方式桥接起AB腿时,B腿回复的部分状态码中携带的某些字段,并不会透传给A腿,由于部分字段的缺失会导致A腿方向的会话无法确定异常的状态原因,以422消息举例:本文章是在FreeSwitch 1.10.9的代码基础上进行的改动,过早的版本,或者过于未来的版本可能有改动,如果时间不长应该大同小异。当uac发起初始INVITE请求时,会携带Session-Expire头域指定会话的刷新时间和刷新方,格式为:上面的例子代表,会话刷新消息的超时时间为90秒,由uac来刷新消息。原创 2024-05-11 17:14:47 · 206 阅读 · 1 评论 -
FreeSwitch的AMR/AMR-WB编码通话因解码问题导致通话杂音
FreeSwitch在解码AMR和AMR-WB编码部分直接对读取到的switch_frame_t结构体内的数据进行unpack操作,对于将要传输的原始数据进行了位移修改,导致了被叫侧发出去的数据是被位移函数破坏的数据,产生了杂音。FreeSwitch使用自带的AMR和AMR-WB编解码器BUG,双方通话协商为AMR或AMR-WB时,通话在录音的情况下可能变为杂音,导致无法正常通话。当协商为带宽效率模式(BE)时,会对每个RTP报文的CMR后面的F、FT、Q位进行位移。带宽效率模式(BE)原创 2024-05-11 16:30:36 · 1182 阅读 · 1 评论 -
FreeSwitch 修改代码使UPDATE消息和对应的SDP进行A到B腿透传功能
FreeSwitch默认收到A-leg的UPDATE消息后不会发送给B-leg,通过修改代码的方式增加一个update_passthrough变量字段来控制UPDATE消息A到B腿转发的功能。如果是在早期媒体阶段也需要转发UPDATE消息,可以通过update_passthrough_on_early来控制是否在早期媒体阶段转发UPDATE消息。由于A腿和B腿之间使用消息队列进行通信,UPDATE消息一般使用SWITCH_MESSAGE_INDICATE_DISPLAY消息进行传输,即A腿向B腿发送原创 2022-04-06 14:23:01 · 2697 阅读 · 5 评论