T38与spandsp

前因:

最近解决了一个“踢皮球的bug”,为什么说他是踢皮球了

因为IPA这个平台功能一切正常,而ATCA平台有这个bug,而芬兰那边的DSP专家却说,他们的软件没问题,

于是乎,那么就弱势的一方,找找看是什么问题了

这我们的T38实现,尽然用的是开源的库,

天煞的,这下麻烦了,要啃没人支持的开源库了

终于在某天,发现了为啥会出现这天煞的bug,

原来还是DSP的问题

 

T38介绍:

传真大致上,分成2类,T30、T38

T30是用在PSTN上的,这个承载是TDM

T38是用在VOIP上的,这个承载是IP

2种面向的业务不一样,但是有个共同点,就是T38是基于T30的,也就是说,T30的状态机完全的适合T38

整体场景如下:

 



扫盲结束,那就讲讲T38里,2个比较重要的东西

1、  IFP 包

在IP网络里传包,并不像TDM里那样,它会有一定的包格式,那么这个IFP就是T38 的包格式了,而IFP里有种recovery的机制,如果你丢失了一个包,通过这个recovery就能找到丢失的包,而这种机制的实现也是非常的简单,就是IFP包里包含了上一个IFP包的数据部分,格式如下:

 

00  01 

01

02

00

01

01

01

Seq number

Data size

value

Flag

Number of redundancy

Size

data

Seq number:IFP 的包序号,一般从0开始

Data size:包的长度

Value:

Flag:00

Number of redundancy:冗余包的个数

Size:长度

2、流程图


                                               阶段图

  

                                                  消息流程图

 

 你也可以在“我的资源”里下载,整个T38流程的消息图,并用wireshark打开

http://download.youkuaiyun.com/detail/alajl/3664910



Spandsp:

说道T38,不得不说下,这个spandsp,这个东东的功能不要太强大,它支持许多的通信里用户面的东东,例如语音编码,传真等等,

有兴趣的同学可以从http://www.soft-switch.org/downloads/spandsp/去下载

然后编译部署调试它: http://www.soft-switch.org/installing-spandsp.html

 

 有兴趣的同学

 


<think>好的,我需要回答用户关于FreeSWITCH的技术介绍以及它实现传真功能的方式。首先,根据用户提供的引用资料,我需要先整理FreeSWITCH的基本概念和核心技术,然后转向传真功能的实现方法。 首先,根据引用[1],FreeSWITCH是一个功能强大的开源电话交换平台,支持多种协议,如SIP(引用[2])。这里需要强调其核心架构和模块化设计,可能包括软交换、媒体处理、协议支持等部分。同时,引用[3]提到用户可能更关注它能做什么,所以应用场景如语音通话、视频会议、IVR等也应该提到。 接下来关于传真功能。传统传真使用T.30协议,而现代可能使用T.38。需要解释FreeSWITCH如何支持这两种协议,可能通过模块如mod_spandsp来处理传真。此外,基于SIP的传真传输也是可能的,结合引用[2]提到的SIP核心协议的支持。 然后,按照用户的要求,生成相关问题。可能需要围绕传真协议、配置步骤、其他系统的集成以及常见问题来提问。 检查是否需要遵循格式要求,比如数学公式的格式,但这个问题可能不涉及太多数学内容,所以暂时没有问题。确保回答结构清晰,分点说明,并正确添加引用标识。 最后,确认引用的来源是否正确对应,避免错误引用。比如,引用[2]提到SIP是核心协议,所以传真部分涉及SIP的地方需要正确标注。</think>### FreeSWITCH技术介绍 FreeSWITCH是一款开源软交换平台,核心功能包括语音/视频通话、会议系统、IVR(交互式语音应答)等。其技术特点如下: 1. **模块化架构**:通过动态加载模块支持多种协议(如SIP、WebRTC)和功能扩展[^2][^3]。 2. **多协议支持**:SIP协议是其核心通信基础,用于处理呼叫控制、媒体协商等。 3. **媒体处理能力**:支持音频编码转换(如G.711、Opus)、DTMF检测、回声消除等。 4. **高灵活性**:可通过Lua、JavaScript等脚本语言定制逻辑,或通过API其他系统集成[^1]。 ### 实现传真功能的方式 FreeSWITCH通过以下两种主要方式支持传真: #### 1. **T.38协议传真** T.38是ITU定义的实时传真协议,适用于IP网络传输: - **原理**:将传真信号转换为数据包,通过UDP/TCP传输,避免传统PSTN网络的延迟问题。 - **配置步骤**: ```xml <!-- 启用mod_spandsp模块 --> <load module="mod_spandsp"/> <!-- 设置传真参数 --> <param name="fax-enable-t38" value="true"/> ``` - **优势**:抗丢包能力强,适合不稳定网络环境。 #### 2. **基于SIP的透传传真(T.30 over SIP)** 通过SIP协议直接传输传统T.30传真信号: - **原理**:将模拟传真信号编码为音频(如G.711),依赖网络稳定性。 - **配置示例**: ```xml <action application="rxfax" data="/path/to/save/fax.tiff"/> ``` - **限制**:网络抖动可能导致传真失败,需配合QoS策略使用。 ### 关键模块工具 - **mod_spandsp**:提供T.38/T.30支持,处理传真编解码[^1]。 - **rxfax/txfax命令**:用于接收和发送传真文件(如TIFF格式)。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值