FreeSwitch(八):媒体

一、媒体与媒体处理

        使用PCM方式对原始声音信号进行采样量化得到线性编码,然后再进行压缩,这种编码称为PCM编码。

        如果需要在网络上传输语音,则需要将编码后的语音打包。如果采样频率8000HZ,打包间隔20毫秒,那么一秒传输50个包,每个包包含160个采样数据。没个采样数据占一字节,则数据净荷160字节。

        FreeSwitch支持的其他语音编码:

FreeSwitch(八):媒体_第1张图片

         在freeSwitch中,编码名称格式为“名称@xxh@yyi”,h表示赫兹,i表示打包时间间隔。如下图列举了一些编码的详细参数。

FreeSwitch(八):媒体_第2张图片

      1.1、相关命令 

show codec  #查看freeswitch支持的编码类型。

reload mod_silk  #不清楚某些参数时,可以用reload

        频率越高,声音越悦耳,打包周期越短,延迟就越小,传输开销越多,需要更大的带宽。 

      1.2 媒体工作机理

         以PCM为例,每个音频包得到160字节数据,再加上12字节RTP包头,就成为了RTP包。RTP包头中携带了音频的编码类型以及时间戳,以便对方收到后进行同步。RTP包使用与SIP不同的UDP传送,因此在实际传输前需要SIP信令与对方协商使用哪个端口。RTP数据使用UDP承载。

FreeSwitch(八):媒体_第3张图片

二、媒体协商

        不同的SIP终端进行通信时,需要先与支持的编码进行协商。以便双方都能理解对方发来的信息。SIP采用offer/Answer的方式进行协商。请求对提供自己支持的编码列表,被请求方比较自己支持的列表以应答方式通知请求者。然后就可以使用兼容的编码进行通信。

      2.1 SDP在其编码协商中的作用

        一般的SIP的invite消息中都包含SDP,媒体类型是有SDP(会话描述协议)消息类型描述的。

FreeSwitch(八):媒体_第4张图片

         如上图所示,c=IN一行表示媒体所在机器的IP地址。m这一行描述音频数据。59820是RTP的端口号,用于收发RTP数据。使用RTP承载的AVP(audio profile).8表示PCMA代号,18表示G729.a那一行表示可以双向收发。

      2.2 协商的时机和策略

         freeSwitch的协商分为早协商和晚协商。某端口收到invite请求还未路由时候,就先行协商,称为早协商。等到路由再进行协商,称为晚协商。FreeSwitch协商的策略有:

        (1)generous:freeSwitch优先考虑客户端的感受。

        (2)greey:优先考虑自己的编码。

        (3)scrooge:强制使用自己的编码。

三、其他相关问题

      3.1 RTP与RTCP

        在完成SIP及SDP协商后,语音数据是在RTP中传送的。在SDP协商中都已经获得了对方的IP地址、端口号以及协议类型,接下来就是将本地的媒体数据以指定的编码格式进行编码并通过RTP发送出去。RTP包头长度12字节,如下:

FreeSwitch(八):媒体_第5张图片

FreeSwitch(八):媒体_第6张图片

FreeSwitch(八):媒体_第7张图片

        RTCP除了为RTP媒体流提供信道外的控制,RTCP本身并不传输数据。但是会和RTP协作 将数据打包发送出去。RTCP定期在多媒体会话参加者之间传输控制数据。RTCP主要功能是为RTP提供的服务的质量提供反馈信息。RTCP收集相关媒体连接的统计信息。例如传输字节数、传输分组数等。网络应用程序既可以用RTCP提供的信息控制传输品质。

      3.2 转码

        freeswitch是一个B2BUA,桥接两条腿时候,编码不同需要转码。当需要转码时,会将音频转成中间格式,称为L16,即线性16位编码。freeswitch默认的配置不支持转码,下次需要修改配置。

      3.3 Media Bug

        相当于水管的三通,在技术上是一个SIP chaanel,信号检测、录音可以这样实现。

 

 

 

你可能感兴趣的:(FreeSwitch)