博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Freeswitch 音视频编码支持
阅读量:3749 次
发布时间:2019-05-22

本文共 2466 字,大约阅读时间需要 8 分钟。

关于编码理论,可以看维基 

1. freeswtich对高清(HD)语音编码的支持

freeswitch支持 大部分高清语音编码,包括Speex,G.722,G.722.1(Siren) 及SILK,与之对比,asterisk 1.8版本之前只支持采样为8000的常用语音编码,1.10后asterisk开始从新架构其media codec模块,以全面支持高清等宽频语音编码。

2.有些语音编码以模块方式加载(G729等),有的则属于freeswitch core部分(G711),系统默认不加载所有语音编码,对于没有加载的编码,可以通过配置modules.conf.xml配置,在fs_cli上 执行 "show codec" 会显示当前系统已经加载的编码:

type,name,ikeycodec,ADPCM (IMA),mod_spandspcodec,AMR,mod_amrcodec,G.711 alaw,CORE_PCM_MODULEcodec,G.711 ulaw,CORE_PCM_MODULEcodec,G.722,mod_spandspcodec,G.723.1 6.3k,mod_g723_1codec,G.726 16k,mod_spandspcodec,G.726 16k (AAL2),mod_spandspcodec,G.726 24k,mod_spandspcodec,G.726 24k (AAL2),mod_spandspcodec,G.726 32k,mod_spandspcodec,G.726 32k (AAL2),mod_spandspcodec,G.726 40k,mod_spandspcodec,G.726 40k (AAL2),mod_spandspcodec,G.729,mod_g729codec,GSM,mod_spandspcodec,H.261 Video (passthru),mod_h26xcodec,H.263 Video (passthru),mod_h26xcodec,H.263+ Video (passthru),mod_h26xcodec,H.263++ Video (passthru),mod_h26xcodec,H.264 Video (passthru),mod_h26xcodec,LPC-10,mod_spandspcodec,PROXY PASS-THROUGH,CORE_PCM_MODULEcodec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULEcodec,Polycom(R) G722.1/G722.1C,mod_sirencodec,RAW Signed Linear (16 bit),CORE_PCM_MODULEcodec,Speex,mod_speexcodec,iLBC,mod_ilbc

以模块方式加载的编码在目录 src\mod\codecs下面,所以如果我们想添加自己的编码,在此目录下参考其他实现即可,freeswitch对新编码的添加接口也及其简单,主要为注册几个四个回调,init,encode,decode,destroy,然后通过 switch_core_codec_add_implementation 把这几个回调的实现注册进去。

3. 设置编码的优先级

vars.xml可以设置系统默认使用的编码,为全局设置,下面两个变量,一个表示呼入,一个表示呼出。

同时,不同的协议类型(SIP,和H323等)可以设置自己的编码优先级,比如采用SIP协议时,可以在

sofia.conf.xml

这里,SIP协议类型继承了vars.xml的全局设置(呼入,呼出)。

4. 对编解码转换的支持

(1)作为B2BUA,freeswitch支持大部分音频编码的转换,但无视频编码转换功能。
(2)对于语音编码 G721 / G728 / G719 / AMR,只支持转发,不支持转换。
(3)freeswitch支持的视频编码 (只转发)

  • H261 - H.261 Video
  • H263 - H.263 Video
  • H263-1998 - H.263-1998 Video
  • H263-2000 - H.263-2000 Video
  • H264 - H.264 Video
    • Provided by mod_h26X.
  • Theora passthrough.
    • Provided by mod_theora.
  • MP4 Video passthrough.
    • Provided by mod_mp4v.

(4)媒体代理

freeswitch对媒体的处理有三种方式:

a.默认方式:媒体通过freeswitch,

RTP被freeswtich转发,
freeswitch控制编码的协商并在协商不一致时提供语音编码转换能力,
支持录音,二次拨号等。

b.代理模式: 媒体通过freeswitch转发,但是不处理媒体

   RTP通过freewtich转发(只改动sdp c= ip)
   freeswtich不控制 sdp参数,只是转发。
   通话的终端必须有一致的语音或者视频编码,因为freeswitch此时不支持转码(适合视频编码)
   不支持录音, 二次拨号等功能

c.不转发也不处理媒体

此模式下freeswitch更像是一个信令proxy,媒体不会通过freeswitch,sdp消息体也不做修改,没有录音,二次拨号等功能。

三种方式在不同应用场景下各有优点,对于a,也是默认方式,更适合呼叫中心等富功能应用,但性能相比其他两个也是最差的,对于b,更适合处理nat问题,
可以考虑用这种模式做一个session border controlor,也适合于外部MCU配合做为视频会议,性能也明显好于a,对于 c,更像是一个信令代理,性能最高,但提供的功能有限。

转载地址:http://aqcsn.baihongyu.com/

你可能感兴趣的文章
路由器的搭建虚拟机上网及DHCP服务、dns解析
查看>>
linux系统的定时、延迟任务管理
查看>>
linux系统的磁盘管理方式
查看>>
管理lvm(Logical Volume Manager)
查看>>
yum源的配置及第三方软件仓库的管理、yum命令、rpm命令的使用
查看>>
linux系统的selinux管理
查看>>
linux系统的网络桥接配置及链路聚合
查看>>
关于DNS部署
查看>>
类的内存模型(二)
查看>>
生产者消费者模型
查看>>
#剑指offer Day2 一类可以用“框架”快速搞定的二叉树问题
查看>>
#剑指offer Day3 一类 “ 斐波那契 ”问题
查看>>
#剑指offer Day4 一类 “ 双指针 ”问题
查看>>
#剑指offer Day5 # 分享两个题的其他解法
查看>>
缓存淘汰算法的实现与应用介绍(LRU,LFU)
查看>>
JZ15. 反转链表
查看>>
1. 两数之和
查看>>
2. 两数相加
查看>>
JZ1.二维数组的查找
查看>>
String 类
查看>>