概念原理
 
Opus是一个有损音频压缩数字音频编码格式,由Xiph.Org基金会开发,之后由互联网工程任务组(IETF)进行标准化,目标是希望用单一格式包含声音和语音,取代SpeexVorbis,且适用于网络上低延迟的即时声音传输,标准格式定义于RFC 6716文件。Opus格式是一个开放格式,使用上没有任何专利或限制。
Opus集成了两种声音编码的技术:以语音编码为导向的SILK和低延迟的CELT。Opus可以无缝调节高低比特率。在编码器内部它在较低比特率时使用线性预测编码在高比特率时候使用变换编码(在高低比特率交界处也使用两者结合的编码方式)。Opus具有非常低的算法延迟(默认为22.5 ms),非常适合用于低延迟语音通话的编码,像是网络上的即时声音流、即时同步声音旁白等等,此外Opus也可以透过降低编码比特率,达成更低的算法延迟,最低可以到5 ms。在多个听觉盲测中,Opus都比MP3AACHE-AAC等常见格式,有更低的延迟和更好的声音压缩率。
 
技术特性
 
比较不同声音编码格式的比特率、采样率与延迟性。
Opus可以处理各种音频应用,包括IP语音、视频会议、游戏内聊天、流音乐、甚至远程现场音乐表演。它可以从低比特率窄带语音扩展到非常高清音质的立体声音乐。支持的功能包括:
  1. 6 kb/秒到510 kb/秒的比特率;单一频道最高256 kb/秒
  2. 采样率从8 kHz(窄带)到48 kHz(全频)
  3. 帧大小从2.5毫秒到60毫秒
  4. 支持恒定比特率(CBR)、受约束比特率(CVBR)和可变比特率(VBR)
  5. 支持语音(SILK层)和音乐(CELT层)的单独或混合模式
  6. 支持单声道和立体声;支持多达255个音轨(多数据流的帧)
  7. 可动态调节比特率,音频带宽和帧大小
  8. 良好的鲁棒性丢失率和数据包丢失隐藏(PLC)
  9. 浮点和定点实现
优点特色
 
Opus在更高的比特率下,已被证明具有优异的音质,而它的音频格式比AACHE-AACVorbis更具有竞争力。
在64kbit / s的听力测试中,与HE-AAC编解码器相比,Opus表现出更优异的音质,HE-AAC由于使用了专利的频谱带复制(SBR)技术,这些编解码器在以前占主导地位。在96 kbit / s的听力测试中,Opus显示出比Vorbis略高的音质,与AAC和MP3相比音质明显更好。
Opus具有非常低的算法延迟,作为低音频延迟通信链路一部分的必要性,可以在现场活动中允许自然对话,网络音乐表演或对嘴表演。音频格式的总算法延迟是无论处理速度和传输速度如编码器和实况音频流的解码器必须承担的延迟的总和,例如将音频样本缓冲到块或帧中,允许窗口重叠和可能允许对噪声整形在解码器中先行和任何其他形式的先行的,或用于将MP3编码器,使用的比特存储器。
150毫秒以下的单向延迟是大多数VoIP系统的首选目标,使自然对话与转向受到延迟的影响很小。音乐家通常会感觉到高达约30毫秒音频延迟的时间,大致符合Haas效果的融合时间,尽管将每个用户自己的乐器的播放延迟与往返延迟相匹配也可以有所帮助。音频╱视频同步,约45-100毫秒的音频延迟可能是可以接受的。
Opus允许减少质量或提高比特率以实现更小的算法延迟(最小5.0 ms)。虽然参考实现的默认Opus帧为20.0 ms长,但SILK层需要进一步5.0 ms的前瞻加1.5 ms进行重采样,默认延迟为26.5 ms。当CELT层处于活动状态时,默认情况下,为了与SILK层同步,窗口重叠需要2.5 ms的前视,其中添加了4.0 ms的匹配延迟。如果编码器在特殊限制低延迟模式下实例化,则删除4.0 ms匹配延迟,并禁用SILK层,允许5.0 ms的最小算法延迟。
 
参考文档:

opus编解码的特色和优点的更多相关文章

  1. android 音频编解码1

    1. Android 官方的 MediaCodec API 该 API 是在 Andorid 4.1 (API 16) 版本引入的 MediaCodec 使用的基本流程是: 1234567891011 ...

  2. 编译 Android 版本的 Opus 音频编解码库的方法

    Opus 音频编解码库是 Speex 音频编解码库的下一代版本,从编解码性能以及质量上来讲都有了长足的进步.Opus 的编译非常简单,但是官方并未给出详细的 Android 版本编译指南,查找了大量资 ...

  3. 集显也能硬件编码:Intel SDK && 各种音视频编解码学习详解

    http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...

  4. 我的Android进阶之旅------>Android中编解码学习笔记

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  5. IP通信中音频编解码技术与抗丢包技术概要

    此文较长,建议收藏起来看. 一.一个典型的IP通信模型 二.Server2Server技术分类 Server2Server这块也是一个专门的领域,这里只简单分个类. 1.同一国家相同运营商之间: 同一 ...

  6. 视音频编解码基本术语及解释&MediaInfo

    MEDIA INFO 下载: https://mediaarea.net/en/MediaInfo/Download/Windows 摘要:          整理了一些基本视音频术语,用于入门和查询 ...

  7. 【miscellaneous】各种音视频编解码学习详解

    编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...

  8. 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式

    目录(?)[-] 编解码学习笔记二codec类型 编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2 编解码学习笔记四Mpeg系列Mpeg 4 编解码学习笔记五Mpeg系列AAC音频 编解码学习笔 ...

  9. 编解码-protobuf

    Google的Protobuf在业界非常流行,很多商业项目选择Protobuf作为编解码框架,Protobuf的优点. (1)在谷歌内部长期使用,产品成熟度高: (2)跨语言,支持多种语言,包括C++ ...

  10. (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-1

    Google的Protobuf在业界非常流行,很多商业项目选择Protobuf作为编解码框架,这里一起回顾一下Protobuf    的优点.(1)在谷歌内部长期使用,产品成熟度高:(2)跨语言,支持 ...

随机推荐

  1. C# 通过VMI接口获取硬件ID

    使用C#语言实现通过VMI(虚拟机监控器)接口来获取硬件ID的过程.VMI是一种用于虚拟化环境的接口,用于管理虚拟机和宿主机之间的通信和资源共享.具体实现中,需要通过添加System.Manageme ...

  2. [zookeeper] 集群搭建及启动后查询服务器状态异常解决

    一.集群搭建 1.每台服务器上部署zookeeper 1.将zookeeper压缩包解压到指定位置,在zookeeper解压后目录下创建数据目录zkData 2.在zkData下创建myid文件,内容 ...

  3. 轻薄本杀入3000元档!真我笔记本Air评测:轻松实现12小时超长续航

    一.前言:真我笔记本Air带轻薄本杀入3K档位 拓宽产品线是如今各大数码品牌的核心策略之一,尤其是跨界,比如手机厂商,就不断在平板.智能穿戴.PC笔记本等领域延伸,甚至是新能源汽车. 现在,realm ...

  4. ”动态“修改MAC地址

    一:获取MAC地址 1.自定义的MAC地址 这里是例程中存放自定义MAC地址的位置,如果想修改MAC地址可以在此处修改.一般例程这里是灰色的需要在工程预编译处配置. 可以看到MCU.c文件中此处代码生 ...

  5. Python 国内常用python模块下载地址

    国内常用python模块下载地址 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 中国科技大学 https://pypi.mirrors.ustc.edu. ...

  6. Python-pymysql操作MySQL数据库

    一.安装pymysql py -m pip install pymysql; 二.pymysql数据库操作 1.简单示例 #coding=utf-8 import pymysql ## 打开数据库连接 ...

  7. CF1348

    传送门 A: 一个组 \(2^n+2^1+\dots+2^{\frac{n}{2}-1}\),另一个组剩下的. B: 考虑不停循环. 如果不同的数字超过 \(k\),无解. 否则先把原序列去重,然后把 ...

  8. QT & C++笔记

    语法 变量声明 直接声明的变量, 其赋值操作会产生值拷贝, 例如 QString b("some text"); QString a(b); int a = 10; int b = ...

  9. valueOf与toString

    valueOf与toString valueOf和toString是Object.prototype上的方法,在Js几乎所有的对象都会继承自Object,同样由于包装对象的原因,几乎所有的数据类型都能 ...

  10. IDEA从o开始的一系列操作及修改配置-快捷键汇总

    IDEA从o开始的一系列操作及修改配置-快捷键汇总 下载IDEA 启动idea 安装svn插件 功能快捷键 先设置提示快捷键(纯属个人喜好) 入门快捷键 查找 编辑 小功能 自动代码提示 自动导包 T ...