关于编码理论,可以看维基 http://en.wikipedia.org/wiki/Codec

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,ikey
codec,ADPCM (IMA),mod_spandsp
codec,AMR,mod_amr
codec,G.711 alaw,CORE_PCM_MODULE
codec,G.711 ulaw,CORE_PCM_MODULE
codec,G.722,mod_spandsp
codec,G.723.1 6.3k,mod_g723_1
codec,G.726 16k,mod_spandsp
codec,G.726 16k (AAL2),mod_spandsp
codec,G.726 24k,mod_spandsp
codec,G.726 24k (AAL2),mod_spandsp
codec,G.726 32k,mod_spandsp
codec,G.726 32k (AAL2),mod_spandsp
codec,G.726 40k,mod_spandsp
codec,G.726 40k (AAL2),mod_spandsp
codec,G.729,mod_g729
codec,GSM,mod_spandsp
codec,H.261 Video (passthru),mod_h26x
codec,H.263 Video (passthru),mod_h26x
codec,H.263+ Video (passthru),mod_h26x
codec,H.263++ Video (passthru),mod_h26x
codec,H.264 Video (passthru),mod_h26x
codec,LPC-10,mod_spandsp
codec,PROXY PASS-THROUGH,CORE_PCM_MODULE
codec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULE
codec,Polycom(R) G722.1/G722.1C,mod_siren
codec,RAW Signed Linear (16 bit),CORE_PCM_MODULE
codec,Speex,mod_speex
codec,iLBC,mod_ilbc

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

3. 设置编码的优先级

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

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G722,PCMA,PCMU,GSM"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=G722,PCMA,PCMU,GSM"/>

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

<settings><param name="inbound-codec-prefs" value="$${global_codec_prefs}"/><param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
</settings>

这里,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,更像是一个信令代理,性能最高,但提供的功能有限。

Freeswitch 音视频编码支持相关推荐

  1. android音视频指南-支持的媒体格式

    android音视频指南-支持的媒体格式 本文描述了Android平台提供的媒体编解码器.容器和网络协议支持. 作为应用程序开发人员,您可以使用任何可以在任何Android设备上使用的媒体编解码器,包 ...

  2. 各品牌手机音视频格式支持一览表收藏

     各品牌手机音视频格式支持一览表收藏 <script></script> 三星 SGH-P738:视屏H.263, M-PEG4 ,音频3GPP,ARM-NB,AAC 三星 S ...

  3. 视频教程-FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和FFMpegSDK-C/C++

    FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和FFMpegSDK 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟 ...

  4. 走进音视频的世界——音视频编码

    音视频流是通过特定编码器压缩,由一系列的压缩图像/语音帧组成.当然可能存在多种语言多音轨,每个音轨之间的音频流相互独立.还可能存在内置字幕,常见的字幕格式有sub.smi.ssa.srt等.但是,本篇 ...

  5. FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和FFMpegSDK-夏曹俊-专题视频课程...

    FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和FFMpegSDK-3798人已学习 课程介绍         本课程讲解的是基于流行的直播技术 FFMpeg3.3音视频处理框架,和应用广的 ...

  6. FFmpeg源码分析:avcodec_send_frame()和avcodec_receive_packet()音视频编码

    FFmpeg在libavcodec模块,旧版本提供avcodec_encode_video2()作为视频编码函数,avcodec_encode_audio2()作为音频编码函数.在FFmpeg 3.1 ...

  7. 各品牌手机音视频格式支持一览表

    三星 SGH-P738:视屏H.263, M-PEG4 ,音频3GPP,ARM-NB,AAC 三星 SCH-E159 :MPEG4 三星 SCH-F209:MPEG4 三星 SCH-i539:支持流媒 ...

  8. MediaCodec 、x264、faac 实现音视频编码并通过 rtmp 协议实现推流

    前言 咱们回顾一下前面 2 篇文章,主要讲解了如何搭建 rtmp 直播服务器,和如何开发一款具有拉流功能的 Android 播放器.那么现在有了播放端和直播服务器还缺少推流端.该篇文章我们就一起来实现 ...

  9. 音视频基础概念(3)——音视频编码与音视频容器

    这里的编码与第二章节音频中提到的"数字化编码"不是同一个概念,是特指压缩编码. 计算机中,所有数据都是由0和1组成的,音频和视频数据也不例外.由于音视频的数据量庞大,如果按照裸流数 ...

最新文章

  1. 快速理解VirtualBox的四种网络连接方式
  2. Oracle SQL Developer中进行存储过程调试
  3. 能源路由器 :分布式智能电网应用的混合通信体系结构
  4. Redis 连接命令
  5. (L)小写l和(i)大写I的区分方法
  6. 计算机配件价格上涨,显卡涨价风声再起 PC配件涨价什么时候是个头
  7. 本科计算机专业是机试,华东师大计算机专业复试上机复习攻略+机试技巧
  8. ps 给渐变的背景色换一个颜色
  9. ogg19.1.0.0.4打补丁
  10. Java中的finalize方法
  11. elo算法c语言,王者荣耀Elo机制?你中招了吗?
  12. vue 首页白屏优化
  13. MA模型自协方差证明
  14. Atitti 住房部建设指南
  15. MK60DX256VLQ10(256KB)MK60DN256VLQ10 Kinetis K60 MCU FLASH
  16. 4-Arm PEG2000-EP,环氧基修饰的多臂PEG,4-Arm PEG2000-Epoxide
  17. w3c JS测试
  18. 三菱q系列plc连接电脑步骤_三菱q系列plc cc-link通讯方法的实现-说明书.pdf
  19. Iterm2使用指南
  20. 电脑无法连接到个别的无线网络

热门文章

  1. TG Pro实时温度
  2. java实验报告mydate,java基本类实验报告
  3. Java微服务 面试题
  4. 如何成为一名业余程序员
  5. 贝壳、58、我爱我家们,还有没有出路?
  6. oracle报表软件,盘点5款工厂报表软件,测评哪一款最好?
  7. (附源码)计算机毕业设计ssm 个人资金账户管理
  8. Maven下载+配置+idea配置
  9. [转帖]K8H3D 病毒 腾讯御剑的解析
  10. 50句最伤感的话,哪段让你流泪