媒体与媒体处理

媒体与媒体处理:

1 音频编码:

从模拟信号变成数字信号的过程称为模数转换(AD),AD转换要经过采样,量化,编码三个过程。编码(code)就是指按照一定的规则将采样所得的信号用一组二进制或者其他进制的数来表示。经过编码后的数据便于在网络上传输,到达对端以后,再通过解码(Decode)过程变成原始信号,进而经过数模转换(DA)再恢复为模拟量,即转换为人们能够感知的信号。
如果在网络上传输语音,则要将编码后的语音数据打包。通常使用的打包时间间隔为20ms,即将20ms的音频数据放到一个数据包里传送,也可以理解为每20ms打一个包。如果采样频率是8000HZ,那么1秒就能传输1000ms/20ms=50个包,每个包携带8000/50=160个采样数据。在PCMA或PCMU方式中,每个采样数据占1字节,因此一个20ms的pcm包的数据净荷就是160字节。

2 媒体工作机理和相关配置:
基于sip的通信中,媒体数据是在RTP流中传输的。
以pcm音频数据为例,如果打包周期是20ms,则每个音频包得到160字节的数据,在这些数据前面加上12字节的rtp包头,就成为了一个RTP包。
RTP包使用与sip不同的udp端口传输,因为在实际传输需要先通过sip信令与对方“协商”好该往哪个端口传送。
sip可使用tcp或udp承载,但RTP数据一般只使用udp承载。
这里写图片描述

3 媒体协商
不同的sip终端有不同的特性。支持不同的语音编码。所以不同的sip终端进行通信时需要先与支持的编码进行“协商”,以便双方相互能够“理解”对方发来的媒体流中的数据。
sdp采用offer/answer(请求、应答)机制来协商。请求发起的一方提供(offer)自己支持的媒体编码列表,被请求的一方比较自己支持的媒体列表最终选择一种(或几种)编码以应答(answer)方法通知请求者,然后他们就可以使用兼容的编码进行通信了。

这里写图片描述

从上面的协商log中可以看出,它也是将客户端的编码与服务器端的编码进行逐一比较,最后一行表示本次协商成功并把Channel的编码设为PCMA编码。

在完成sip以及sdp协商后,真正的语音数据是在RTP协议中传送的。即双方在前面的sdp协商中都已经获得了对方的ip地址,端口号,以及支持的媒体类型。接下来,就是将本地的媒体数据以指定的编码格式进行编码并通过RTP协议发送到对方去。

4 RTP和RTCP:
数据包传输协议。RTCP:实时传输控制协议是实时传输协议的一个姊妹协议,RTP使用一个偶数udp端口,而RTCP则使用RTP的下一个相邻的奇数端口。RTCP本身并不传输数据,但会和RTP一起协作将多媒体数据打包并发送出去。RTCP的主要功能是为RTP提供的服务的质量提供反馈信息。

5 转码
Freeswitch是一个b2bUA,因而在桥接两条腿时,如果两条腿分别使用不同的编码,则需要经过一个转码过程分别转成对方需要的编码。在需要转码时,freeswitch会将收到的音频数据转成一种中间格式,称为L16,即线性16位的编码。这种格式可以与其他各种编码进行切换。
另外,即使呼叫的双方采用同样的编码,但如果有ivr或录,放音等中间环节时,也需要转码。

6 透传,媒体绕过与媒体代理
Freeswitch 不支持g729转码。
透传是指在不经过转码的情况下,将从一方收到的媒体流原样转给另一方。
媒体绕过技术,即真正的媒体流使用点到点传输,根本不经过freeswitch。(2)

这里写图片描述

还有一种情况为媒体代理,即不管freeswitch是否支持对该种编码转码,他都对RTP数据在不进行任何处理的情况下发送给另一方,与透传的区别是:他只改变sdp中的“c=”部分。

视频编码的协商过程与音频类似,不同的是,由于视频不支持转码,因而必须保证两端都是用相同的视频编码才可以互相看到视频。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页