近些年,比较火的应用场景有这么几类:
  • 游戏,比如多人在线对战游戏、狼人杀等,多人组队,还需要实时语音;

  • 互动直播,比如主播与观众连麦、主播与其他主播进行跨直播间连麦,需要实时的互动;

  • 在线教育,其中有很多细分的场景,1 对 1、1 对多、双师等,在当前互动网络教育中最难解决的问题还是实时性,就是老师跟学生怎么能够更好的互动。

以上这些实时互动场景,在当前网络环境下,给技术提出了更高的要求,既要低延时,又要实现高质量的音视频互动。但是,如果承载信息的包没有按时到达,即出现丢包,就会产生声音断断续续、音质低等情况,直接影响实时互动的质量。然而,传统的抗丢包策略不是会浪费带宽,就是会影响音频质量。在此窘境之下,声网Agora结合信源和信道编码的特点,利用充分包交换网络的特性,研发了一款声网新的编解码器。在10月24日,RTC 2019 第五届实时互联网大会的编解码技术专场上,声网Agora技术VP高泽华正式宣布,开源声网自研抗丢包音频编解码器——Agora SOLO!
Agora SOLO 是什么?
Agora SOLO(以下简称“SOLO”)是由声网Agora自主研发的一款面向不稳定网络的音频编解码器,它以 Silk 为基础,融合了带宽扩展(BWE)和多描述编码(MDC)等技术,使其能在较低复杂度下拥有弱网对抗能力。SOLO 编解码器兼容WebRTC,可集成到基于WebRTC 自主研发的产品中。
图 1. SOLO 编码器架构
图 2. SOLO 解码器架构
SOLO的抗丢包策略与传统方法不同。从通信原理来说,信源编码是尽可能去追求高压缩比,去冗余。而信道编码是追求强纠错,靠加冗余来实现纠错。Agora SOLO™就是把加冗余和减冗余结合起来,不重要的地方减冗余,重要的地方加冗余。
在传输过程中,它会将一个包拆分为两个进行传输,如果对端收到其中一个,则解码恢复出一个有限失真的信号;如果对端收到两个包,则可解码恢复出一个高质量的信号。即 SOLO 不需要等待对当前网络丢包状态的统计,只需要直接把抗丢包做到编解码内部。好处有三点:
  • 可实现更低延时;

  • 可实现更高质量,当收到一个包时质量达到的普通编解码器水平,收到两个包达到高质量编解码水平;

  • 可面向多人环境。

SOLO 关键技术
带宽扩展
SOLO 使用带宽扩展的主要原因是希望减少计算复杂度,在 Silk WB 模式中,16khz 的信号都会进入后续处理模块,而对于语音来说,8khz 以上的信息是非常少的,这部分信息进入到后续处理模块,会带来一定的计算资源浪费。MDC 因为要引入额外分析模块处理多条码流,又会引入额外的复杂度,这是 MDC 在近些年来落地不顺畅的重要原因之一。为了减少复杂度,我们在编码宽带信号前,将其分为 0-8k 的窄带信息和 8-16k 的高频信息。只有窄带信息会进入到后续正常分析、编码流程中,这样后续的计算量就减少了一半,同时得益于带宽扩展算法,整体质量不会有明显下降。高频信息部分,SOLO 使用独立的分析与编码模块,默认将高频信息压缩成1.6kbps 的码流。这部分高频信息可以在解码器内结合低频信号恢复出高频信号。
结合delay-decision 的 MDC
在 Silk 中,delay-decision 模块是一个滞后计算编码误差的模块,它可以从多个候选码流中选择误差最小的码流作为编码输出,一定程度上来说,它使得标量量化拥有了矢量量化的性能。SOLO 利用delay-decision 模块,实现了多描述码流的分析与构建。SOLO 的MDC主要作用于滤波器输出的残差信号, SOLO 会根据当前信号状态,对残差信号做多增益控制:计算出 MD 增益 a(0<a<1),将 a 作用于奇数子帧,并将(1-a)作用于偶数子帧以产生两段互补的残差信号,这里记作residual 1 和residual 2。
图 3. 多描述残差信号产生
随后,这两段残差信号会进入到新的delay-decision 模块中,每个残差信号使用不同的抖动和量化方法,一共可以产生 8 种不同的备选状态,两两组合起来共有 64 种备选合成状态,新的delay-decision 模块会对每个残差信号的独立误差和两个残差信号的合成误差进行加权求和,决定出最佳的两个残差信号进入到编码模块。
输出码流组包
图 4. 编码器码流整合及组包
SOLO 默认配置为每次输入 40ms(2 帧),输出两段互补的多描述码流,解码器接收到任一段码流,即可解码出40ms 的信号。为了方便接收端区分码流的顺序,码流第一个字节的右数第 4 个 bit 是码流顺序标志位,第一段码流标志位的值是 0,第二段码流标志位的值是 1。接收端在进行码流处理时,可依据此标志位进行码流顺序判断。
集成方法已经详细写在Github 中,地址如下:https://github.com/AgoraIO-Community/Solo,欢迎 Star。
【END】

Python的前景怎么样?就业薪资高吗?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

一文了解超级账本DLT、库、开发工具有哪些, Hyperledger家族成员你认识几个?

点击阅读原文参与问卷,好礼送不停!

你点的每个“在看”,我都认真当成了喜欢

对抗弱网下的音视频难题,声网正式开源抗丢包音频编解码器 Agora SOLO!相关推荐

  1. 实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器

    本文整理自声网Agora.io编解码算法工匠高泽华在RTC2017实时互联网大会和QCon上海2017上的技术分享.本文仅讨论技术,无关商业因素,请从技术角度理解文中的分享内容即可,如给您带来误导,请 ...

  2. 即时通讯音视频开发(十八):详解音频编解码的原理、演进和应用选型

    1.引言 大家好,我是刘华平,从毕业到现在我一直在从事音视频领域相关工作,也有一些自己的创业项目,曾为早期Google Android SDK多媒体架构的构建作出贡献. 就音频而言,无论是算法多样性, ...

  3. Android音视频学习系列(十) — 基于FFmpeg + OpenSL ES实现音频万能播放器

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  4. 【音视频开发系列】一学就会,快速掌握音视频开发的第一个开源项目FFmpeg

    快速掌握音视频开发的第一个开源项目:FFmpeg 1.为什么要学FFmpeg 2.FFmpeg面向对象思想分析 3.FFmpeg各种组件剖析 视频讲解如下,点击观看: [音视频开发系列]一学就会,快速 ...

  5. 海外弱网下的在线视频平台优化实践​

    正文字数:10745  阅读时长:16分钟 在弱网下,视频启动时间和播放卡顿都会增加.为提升弱网用户体验,需要识别出主要问题再针对性调优.本演讲将结合四达时代在非洲建设"StarTimesO ...

  6. Android 音视频编辑经验总结及开源工程分享

    提到音视频编辑方案,大家最容易搜到的可能是ffmpeg这个牛X的开源方案.ffmpeg 是基于C语言的著名视频编解码方案.国内有也有不少的公司将ffmpeg 移植到iOS和android 平台进行视频 ...

  7. LiveVideoStack线上分享第四季(十二):实时音视频抗丢包的实践

    12月26日 19:30,LiveVideoStack线上分享第四季,第十二期,我们邀请到了好视通 音视频开发工程师 何永德分享"好视通"如何通过FEC.NACK .带宽自适应等技 ...

  8. 音视频开发系列(15)使用SDL播放音频

    前言   对于Qt应用来说,为了更大的跨平台通用性,使用SDL播放音频,同时也能做更多的扩充操作. 声波   声音是通过空气传播的一种连续的波,简称声波.声音的强弱体现在声波压力的大小上,音调的音调体 ...

  9. iOS 音视频开发:Audio Unit播放FFmpeg解码的音频

    本文档描述了iOS播放经FFmpeg解码的音频数据的编程步骤,具体基于Audio Toolbox框架的Audio Session和Audio Unit框架提供的接口实现.在iOS 7及以上平台Audi ...

最新文章

  1. Java -- 基于JDK1.8的LinkedList源码分析
  2. delete from t引发的血案
  3. 8086 c语言,2016年上海大学机电工程与自动化学院微机硬件及软件(包含8086微机和C语言)之C程序设计考研复试题库...
  4. python网课一般多少钱-学习python的时候观看网课学习还是买书学习效率高?
  5. 不用光盘安装系统的问题
  6. Python学习:元组
  7. some understanding of《Inferring Decision Trees Using the Minimum Description Length Principle*》
  8. 如何处理UI5一般性错误Cannot read property md of undefined
  9. Linux 系统应用编程——网络编程(I/O模型)
  10. Win7如何快速打开本地连接
  11. mysql执行sql批处理
  12. 软件 测试试用期转正申请,软件工程师试用期工作总结及转正申请
  13. 【笨木头Cocos2dx 038】战争迷雾效果 第01章_要探索,不要地图全开!
  14. excel公式编辑器_让同事看傻,用Excel制作 “抽奖”小软件
  15. 人人都在谈的 “数据驱动” 到底是什么?你确认自己做的是数据驱动吗?
  16. Java-Tcp/Ip-CS控制台聊天应用Demo
  17. 纺织ERP系统_纺织ERP软件_纺织面料系统
  18. 人脸识别考勤系统安卓APP(手把手教学-手动滑稽)
  19. HTML视频无法自动播放问题
  20. 基于android的网上点餐系统设计,基于Android的点餐系统设计与实现

热门文章

  1. 基于visual Studio2013解决C语言竞赛题之0203格式化输出
  2. 编程之美--高效率算出1的数目之扩展问题
  3. 看看什么样的人适合网上开店( 转载)
  4. 最近很火的数据动图python_12个流行的Python数据可视化库总结
  5. keras编写自定义的层
  6. php调用sqlldr失败,php system()命令调用sqlplus导致php挂起
  7. Flutter进阶—布局一个控件
  8. 2021年中国带LED显示屏的温度调节器市场趋势报告、技术动态创新及2027年市场预测
  9. 服务器ip维护无法登录,用DHCP解决服务器硬件管理口没有设置IP无法登录的问题...
  10. 一文讲透 Serverless Kubernetes 容器服务