文档章节

FreeSWITCH媒体处理

stache
 stache
发布于 2017/09/11 11:13
字数 1162
阅读 20
收藏 0
点赞 0
评论 0

一、基本概念

采样频率

音频编码最基本的两个技术参数就是采样频率和打包周期,采样频率越高,声音就越清晰,保留的细节也越多,当然它会占用更大的带宽。对于普通“人声”通话来讲,8000HZ就够了,但对于高品质的音乐来讲,就需要更高的采样率才能保证“悦耳”,比如我们通常说的CD音质的声音使用的就是44.1KHz采样率

打包周期

打包周期跟传输有关,打包周期越短,延迟越小,相对而言传输开销就会越多,因而需要更大的带宽;打包周期越长,带来的延迟就越大,如果传输过程中有丢包,对语音质量的影响也就越大。大部分编码都支持多种打包周期,最常见的是20ms,iLBC、G.723等默认使用30ms,更长的打包周期如60~120ms,通常用于卫星链路等高延迟、低带宽的场合

 

二、常用命令

#查看编码,每一行表示一个编码,编码的名称和参数以逗号隔开,如下可以看到G.711编码都是核心模块CORE_PCM_MODULE实现的
freeswitch@internal> show codec 
type,name,ikey
codec,ADPCM (IMA),mod_spandsp
codec,AMR,mod_amr
codec,B64 (STANDARD),mod_b64
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

#在实践中,当你不清楚某种编码所提供的各种参数时,可以尝试重新加载所属模块,如G729编码属于mod_g729模块
freeswitch@internal> reload mod_g729
freeswitch@internal> 2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 10ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 20ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 30ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 40ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 50ms
2017-09-11 02:04:43.068757 [INFO] mod_enum.c:880 ENUM Reloaded
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 60ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 70ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 80ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 90ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 100ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 110ms
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:944 Deleting Codec G729 18 G.729 8000hz 120ms
2017-09-11 02:04:43.068757 [CONSOLE] switch_loadable_module.c:1938 mod_g729 has no shutdown routine
2017-09-11 02:04:43.068757 [CONSOLE] switch_loadable_module.c:1955 mod_g729 unloaded.
2017-09-11 02:04:43.068757 [CONSOLE] switch_loadable_module.c:1465 Successfully Loaded [mod_g729]
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 10ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 20ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 30ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 40ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 50ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 60ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 70ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 80ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 90ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 100ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 110ms 8000bps
2017-09-11 02:04:43.068757 [NOTICE] switch_loadable_module.c:192 Adding Codec G729 18 G.729 8000hz 120ms 8000bps

#列出当前Profile的配置情况,如下(有删节),其中CODES IN、CODES OUT显示了呼入、呼出的编码设置
freeswitch@internal> sofia status profile internal
=================================================================================================
Name                    internal
Domain Name             N/A
Auto-NAT                false
DBName                  sofia_reg_internal
Pres Hosts              10.211.55.13,10.211.55.13
Dialplan                XML
Context                 public
Challenge Realm         auto_from
RTP-IP                  10.211.55.13
SIP-IP                  10.211.55.13
URL                     sip:mod_sofia@10.211.55.13:5060
BIND-URL                sip:mod_sofia@10.211.55.13:5060;transport=udp,tcp
HOLD-MUSIC              local_stream://moh
OUTBOUND-PROXY          N/A
CODECS IN               OPUS,G722,PCMU,PCMA,GSM
CODECS OUT              OPUS,G722,PCMU,PCMA,GSM

 

三、安装语音编码

在FreeSWITCH中,有些编码不是默认安装的,如果要使用这些编码,需要自己编译

#在源码目录下执行以下命令来安装相应的编码
make mod_celt-install #安装CELT编码
make mod_silk-install #安装SILK编码
make mod_isac-install #安装iSAC编码
make mod_opus-install #安装OPUS编码
make mod_codec2-install #安装CODEC2编码

 

四、相关配置

#在默认配置中,SIP Profile支持的媒体列表是在vars.xml文件中配置的,如下
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,GSM"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,GSM"/>

#如果需要增加其他编码支持(如G729),可以将上述配置项改为
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,GSM,G729"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,GSM,G729"/>

 

© 著作权归作者所有

共有 人打赏支持
stache
粉丝 1
博文 14
码字总数 17640
作品 0
南昌
FSGui是什么?

QQ群: FreeSWITCH+Kamailio+OpenSIPS,293697898 FSGui是由上海宁卫信息技术有限公司自主研发的新一代的呼叫平台,它将云呼叫、VOIP、PSTN、IMS、DID、IVR等集成在一起,实现将IP网络和传统...

上海李浩 ⋅ 2016/11/01 ⋅ 0

VoIP负载均衡方案

QQ群: FreeSWITCH+Kamailio+Opensips (293697898) 负载均衡方案 前言 由于甲方的并发需求和单机挂载数量较多,故而我们采用多机挂多机的方案来实现负载相对均衡,而又由于甲方要求我们必须...

上海李浩 ⋅ 2016/11/07 ⋅ 0

redis之主从同步简单设置

1、配置多个redis-conf 首先编辑多个redis-conf文件,将端口、守护进程、rdb、log、aof全部设置为自己的内容,方便观察不同的端口不同的区分内容 这里我配置啦三个端口的redis,分别是:637...

久违了java ⋅ 01/28 ⋅ 0

开源 VoIP 首个真正免费的 RTMP 解决方案

FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。 日前,FreeSWITCH ...

红薯 ⋅ 2011/06/15 ⋅ 5

免安装解压后,运行后即可用的WINDOWS FREESWITCH+ GUI PBX free download

QQ群: 293697898 FreeSWITCH+Kamailio+OpenSIPS FSGui是由上海宁卫信息技术有限公司自主研发的新一代的呼叫平台,它将云呼叫、VOIP、PSTN、IMS、DID、IVR等集成在一起,实现将IP网络和传统通...

上海李浩 ⋅ 2016/09/24 ⋅ 0

实用工具特别推荐 Autoruns

下载这篇文章的代码: Autoruns (490KB) 典型的运行 Windows? 的 PC 在启动时会加载一组项目,其中包括文件、驱动程序、任务和服务。在某些时候,您很可能需要查看并禁用某些启动项目,以排除...

技术小胖子 ⋅ 2017/11/10 ⋅ 0

FreeSWITCH 1.0.6 发布

FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。 该版本带来很多新的...

红薯 ⋅ 2010/04/07 ⋅ 0

开源SIP服务器OpenSIPS应用介绍

1、引入 随着通信IP化的发展,IP传输的高带宽、低成本等优势使得越来越多的企业、电信运营商加快建设基于IP的各种通信应用。在通信协议IP化发展中,SIP协 议毫无争议地成为各大电信运营商构建...

小编辑 ⋅ 2010/05/31 ⋅ 0

VoIP88 首届开源通信论坛邀请【深圳】

VoIP88开源通信论坛是VoIP88网站举办的一个线下技术交流活动,致力于推广Asterisk、Freeswitch等风靡世界的开源通信技术。首届我们将选择在通信技术交流最活跃的深圳举行。 VoIP88开源通信论...

红薯 ⋅ 2010/12/15 ⋅ 2

FreeSWITCH 与 Asterisk(译)

Anthony Minssale/文 Seven/译 VoIP通信,与传统的电话技术相比,不仅仅在于绝对的资费优势,更重要的是很容易地通过开发相应的软件,使其与企业的业务逻辑紧密集成。Asterisk作为开源VoIP软...

mickelfeng ⋅ 2013/03/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud构建微服务架构服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、...

明理萝 ⋅ 30分钟前 ⋅ 0

占位slot

一、为什么我们需要slot 假如我们有个需要,子组件中需要显示一段html内容,显示什么不是由子组件决定,而是由父组件传递什么决定,我们该怎么做 很挫的做法,我们使用组件间的数据传递 父组...

金于虎 ⋅ 30分钟前 ⋅ 0

Linux集群 NTP 时间同步

基于CentOS 7 规划 比如有2台机器 IP 主机名 说明 192.168.103.51 cdh51 本地NTP服务端 192.168.103.52 cdh52 本地NTP客户端 安装NTP服务 每台机器都安装ntp yum -y install ntp NTP服务端(...

囚兔 ⋅ 32分钟前 ⋅ 0

国际版链克口袋 获取方法

1 月16日,网心科技玩客云团队在官网发布了停止链克口袋转帐服务的通知。通知中表示迅雷将于1月25日在AppStore和官网,正式发布链克口袋新版本,新版本不支持迅雷及迅雷合作伙伴开发的应用场...

xiaogg ⋅ 33分钟前 ⋅ 0

Raft中Batching和pipelining到底是什么?

Raft supports batching and pipelining of log entries, and both are important for best performance. Many of the costs of request processing are amortized when multiple requests a......

黑客画家 ⋅ 34分钟前 ⋅ 0

Mybatis-Plus 之BaseMapper 方法详解

/** * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能 * 这个 Mapper 支持 id 泛型 * @author hubin * @Date 2016-01-23 */public interface BaseMapper<T> ...

干干 ⋅ 34分钟前 ⋅ 0

JVM笔记9-Class类文件结构

摘要: 1.Class类文件结构   Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中...

传授知识的天使 ⋅ 38分钟前 ⋅ 0

MySQL数据库之sleep线程过长如何处理?

  什么是sleep线程?   sleep线程长时间保持可客户端与服务端的连接状态   导致sleep过多的原因:   使用太多持久连接(高并发系统中 不适合使用持久连接)   程序中 没有及时关闭MyS...

老男孩Linux培训 ⋅ 39分钟前 ⋅ 0

转发和重定向的区别

转发在服务器端完成的;重定向是在客户端完成的 转发的速度快;重定向速度慢 转发的是同一次请求;重定向是两次不同请求 转发不会执行转发后的代码;重定向会执行重定向之后的代码 转发地址栏...

冯莉莉莉莉 ⋅ 40分钟前 ⋅ 0

go语言实现http proxy的关键一步

go语言自带包ReverseProxy 实现了proxy的功能。 但我希望proxy进程能够在代理的同时,完整的把请求和请求体记录在日志里。 仅使用ReverseProxy 包的话,uri记录没问题,但body只能被读取一次...

xuanzilie ⋅ 45分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部