VoIP与常见编码的带宽计算

简介: VoIP与常见编码的带宽计算

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情


VoIP(Voice over IP,基于IP的语音通信)通信需要一定的网络传输质量保证,但目前的Internet不能满足这一要求,导致当前的VoIP业务在稳定性和服务质量上不如人意。因此需要针对实时语音通信的特点设计合适的协议和通信机制,以最大限度地提高业务质量。具体来说,与实时语音通信有关的QoS包括带宽、延时和丢失率三方面。


1、带宽


为了保证语音质量不致太差,需要保证在任何情况下语音传输也能获得一定带宽。然而当前Interent并不提供这样的保证,而且由于传统路由器不提供拥塞控制功能,因此过大的语音流量将导致路由器的拥塞雪崩,使传输效果迅速恶化。


voip带宽计算方法与所选用的编码方法有关,而与哪个厂家的没有什么关系。语音编码的带宽和实际所占用的带宽是不同的,语音编码的带宽是实际语音包的带宽,而语音包在IP网络上传输时,还需要增加各种包头,如RTP包头、UDP包头、IP包头。由于语音包本身很小,所以相对而言这些额外的带宽是很可观的。公式如下:


带宽 = 包长度×每秒包数(1000/打包间隔ms)

= 包长度×(每秒包数)

= (Ethernet头 + IP头 + UDP头 + RTP头 + 有效载荷) ×(每秒包数)

= (208bit + 160bit + 64bit + 96bit + 有效载荷) × (每秒包数)

= (528bit + 采样数据个数×采样数据长度 ) × (每秒包数)

= (528bit + (采样频率/每秒包数)×采样数据长度 )× (每秒包数)

= (528×1000/打包间隔ms)bit + 采样频率×采样数据长度

= (528/打包间隔ms + 采样速率)Kbit/s

根据各种编码方式,得出:

G711:20ms打包,带宽为 ( 528/20 + 64) Kbit/s=90.4 Kbit/s

G729:20ms打包,带宽为 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s

G723:5.3k,30ms打包,带宽为 ( 528/30 + 5.3 ) Kbit/s=22.9 Kbit/s


打包时间越长,所占用的实际带宽越小,但时延越大。业界一般按照下表提供的IP网带宽系数(IP包大小)和以太网带宽系数(Ethernet帧大小)来设计网络带宽:

编解码技术 速率(Kbps) 打包周期(ms) IP网带宽系数 以太网带宽系数
G.711 a/u  64 20 1.25  1.41
G.729 a/b 8 20  0.38 0.54
G.723.1(5.3kbit/s)  5.3 30 0.27 0.37
G.723.1(6.3Kbit/s) 6.3 30 0.25 0.36
H.263(384Kbit/s)  ≈384 10  6 6.2

备注:采用某种编码方式时,用64K乘以相应的带宽系数就可以得出其实际占用的带宽。当然如果是中继接口,还需要考虑信令占据一定的带宽,一般按照2.5%来计算。

 

2、延时

传输一般数据时没有延时的限制,但实时语音传输要求端对端时延不能太大。对于语音业务这类实时性要求非常高的业务,要保证语音的质量,语音的全程往返时延应当控制在450ms内为宜(根据ITU-T标准)。这有两个原因:

  • 一个原因是因为语音必须在接收端连续地放出来,如果语音包不及时到达,播放便会停下来,人耳便会感觉到语音的间断,这是不能接受的。
  • 另一个原因是因为在实时通信中,延误太久才到达的语音包对收听者来说已失去意义了,和丢失没有两样,这也是不能接受的。

\

3、丢失率

VoIP利用RTP实时传输协议传送数据。RTP是一个基于无连接UDP的应用协议,UDP是无连接的,它不会对数据包的传送提供应答和跟踪,这样RTP也不会重新传送网络的丢包,这就要求网络传输中应尽可能减少数据包的丢失。

\

4、RTP


TCP是面向连接的,它提供高可靠性服务;UCP是无连接的,它提供高效率的服务。高可靠性的TCP用于一次传输要交换大量报文的情况,高效率的UDP用于一次交换少量的报文或实时性要求较高的信息。 实时传输协议RTP提供具有实时特征的、端到端的数据传输业务,可以用来传送声音和活动图像数据。通常RTP的协议数据单元是用UDP分组来承载的。而且为了尽量减少时延,话音净荷通常都很短。这种IP话音分组的开销很大,约为66%~80%。


RTP本身没有提供任何确保及时传送的机制,也没有提供任何传输质量保证的机制,因而业务质量完全由下层网络的质量来决定。同时,RTP不保证数据包按序号传送,即使下层网络提供可靠性传送,也不能保证数据包的顺序到达。包含在RTP中的序列号就是供接收方重新对数据包排序之用。与RTP相配套的另一个协议是RTCP协议,RTCP是RTP的控制协议,它用于监视业务质量并与正在进行的会话者传送信息


相关文章
|
XML Java 数据格式
Spring源码分析
Spring源码分析
|
C++ Python Perl
终于解决VScode中python/C++打印中文全是乱码的问题了
终于解决VScode中python/C++打印中文全是乱码的问题了
1421 0
终于解决VScode中python/C++打印中文全是乱码的问题了
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
《打破知识壁垒:解锁自然语言处理模型跨领域知识图谱关联与推理密码》
在人工智能快速发展的背景下,自然语言处理(NLP)技术成为各行业智能化变革的关键。知识图谱作为结构化的语义知识库,通过“实体-关系-实体”三元组描绘现实世界的概念及其关系,为NLP模型提供背景知识和推理依据。然而,随着多领域知识的爆发式增长,如何实现不同领域知识图谱的有效关联与推理成为亟待解决的问题。本文探讨了理解领域特性、实体对齐、关系映射与融合及深度学习推理模型构建等关键步骤,旨在打破领域间知识壁垒,提升NLP技术的智能化水平,推动其在智能问答、推荐、决策辅助等领域的广泛应用。
455 1
|
9月前
|
分布式计算 物联网 虚拟化
《深度揭秘:软总线如何实现异构网络组网及其独特优势》
软总线技术是解决异构网络组网难题的关键力量,通过协议抽象与归一化、总线中枢智能解析、动态拓扑构建及设备虚拟化管理等方式,实现高效互联。它降低开发复杂度,提升设备兼容性与扩展性,保障数据传输的高效性与稳定性,为万物互联提供坚实支撑。在智能家居、智能工厂和交通等领域,软总线展现出强大优势,推动多设备协同与智能化发展,助力数字化转型与未来创新。
458 3
|
Ubuntu 安全 Docker
【DevOps】Docker 最佳实践指南(绝对干货)
祝您的 Docker 之旅一切顺利!
584 4
|
Ubuntu Linux Shell
Sentieon软件快速入门指南
Sentieon为纯CPU计算加速软件,完全适配主流CPU计算架构:Intel、AMD、海光等X86架构CPU,华为鲲鹏、阿里倚天等ARM架构CPU。可灵活部署在实验室单机工作站、HPC集群、超算中心和云计算中心,保持同一套流程下不同规模数据计算结果的一致性。Sentieon软件团队拥有丰富的软件开发及算法优化工程经验,致力于解决生物数据分析中的速度与准确度瓶颈,为来自于分子诊断、药物研发、临床医疗、人群队列、动植物等多个领域的合作伙伴提供高效精准的软件解决方案,共同推动基因技术的发展。
572 4
Sentieon软件快速入门指南
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
本文介绍了在Vue3 + ElementPlus项目中如何使用`el-autocomplete`控件实现自动补全输入功能,并探讨了不同版本ElementPlus中`clearable`属性的兼容性问题。
1378 0
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
|
API Python
​不用SMTP实现联系表单提交后发送邮件到指定邮箱
构建网站时,联系表单可通过邮件API(如SendGrid、Mailgun、Amazon SES)或第三方自动化服务(Zapier、Integromat)无需SMTP发送邮件。使用API服务,如SendGrid的Python示例,可直接集成到表单提交流程。第三方自动化服务允许表单提交触发邮件发送。后端脚本,如PHPMailer,也可用于邮件发送。这些方法简化了邮件发送并提高了效率。AokSend提供触发式接口和独立IP的高触达发信服务。
|
机器人 API
(对接API火币/币安/OK/欧易交易所)合约跟单成熟技术及方案/开发稳定版/详细案例/源码功能
  现货合约量化交易所机器人系统是指通过计算机程序实现自动化交易的系统,它可以根据事先设定的交易策略和规则进行自动交易。
|
机器学习/深度学习 PyTorch 算法框架/工具