更新时间:2023-02-20 22:38
Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用于网络上低延迟的即时声音传输,标准格式定义于RFC 6716文件。Opus格式是一个开放格式,使用上没有任何专利或限制。
Opus集成了两种声音编码的技术:以语音编码为导向的SILK和低延迟的CELT。Opus可以无缝调节高低比特率。在编码器内部它在较低比特率时使用线性预测编码在高比特率时候使用变换编码(在高低比特率交界处也使用两者结合的编码方式)。Opus具有非常低的算法延迟(默认为22.5 ms),非常适合用于低延迟语音通话的编码,像是网上上的即时声音流、即时同步声音旁白等等,此外Opus也可以透过降低编码码率,达成更低的算法延迟,最低可以到5 ms。在多个听觉盲测中,Opus都比MP3、AAC、HE-AAC等常见格式,有更低的延迟和更好的声音压缩率。
Opus可以处理各种音频应用,包括IP语音、视频会议、游戏内聊天、流音乐、甚至远程现场音乐表演。它可以从低比特率窄带语音扩展到非常高清音质的立体声音乐。支持的功能包括:
Opus被提出用于在IETF上标准化新的音频格式,最终被IETF编解码器工作组接受和授予。它基于Xiph.Org基金会和Skype技术公司两项最初分开的标准提案。其主要开发人员包括Jean-Marc Valin(Xiph.Org,Octasic,Mozilla Corporation),Koen Vos(Skype)和Timothy B. Terriberry(Xiph.Org,Mozilla Corporation)。其中包括Juin-Hwey(Raymond)Chen(Broadcom),Gregory Maxwell(Xiph.Org,Wikimedia)和Christopher Montgomery(Xiph.Org)也参与其中。
CELT的发展部分格式可以追溯到Vorbis的继任者的工作名称Ghost下。作为Xiph.Org基金会的新一代语音编解码器,Opus取代了Xiph的较早的语音编解码器Speex,该版本是Jean-Marc Valin先前的一个项目。CELT自2007年11月起开始工作。
SILK部分自2007年1月起一直在Skype开发,作为其SVOPC的继任者,该公司是一个内部项目,使公司独立于iSAC和iLBC等第三方编解码器和相应的许可证付款。
2009年3月,Skype建议在IETF内开发和规范宽带音频格式。近一年来,成立了一个适当的工作组,进行了大量辩论。参与专利保护竞争格式标准化的几家公司的代表表示反对开始免版税格式的标准化过程:Polycom和爱立信的代表(G.719的创始人和许可人)以及法国Télécom,华为和橙色实验室(法国Télécom部门),参与创建G.718。
2010年7月,提出了一种混合格式的原型,将两种提出格式的候选者SILK和CELT相结合。2010年9月,Opus作为标准化提案提交给IETF。在短时间内,格式在2010年10月获得现有名称之前,以Harmony的名义出现。2011年2月初,比特流格式暂时冻结,但有待最后更改。2011年7月底,Jean-Marc Valin被Mozilla公司雇用,继续从事Opus。[20] 2011年11月,工作组最近发出了关于比特流格式的更改的通知。比特流自2012年1月8日以来已被冻结。2012年7月2日,Opus被IETF批准用于标准化。参考软件中输入8月8日发布的候选状态最后的规范发布的RFC 6716于2012年9月10日,和版本为1.0和1.0.1 参考实现被释放一天之后。
2013年7月11日,Opus 1.0.3带来了错误修复和一个新的Surround声音API,可以提高音轨分配和质量,特别是低频音轨(LFE)。
2013年12月5日,Opus 1.1发布,整体速度提升和显著的编码器质量改进:调谐估计提高了以前有问题的样本的比特率和质量(如大键)、自动语音/音乐检测提高了混合音频的质量、中端立体声降低了许多歌曲的比特率需求、提高瞬态带宽精度、以及DC抑制低于3 Hz。增加了两种新的VBR模式:不受限制的更一致的质量以及时间VBR,可以提升响亮的画面,并通常提高清。
Opus 1.1.1于2015年11月26日发布,并于2016年1月12日发布了1.1.2,同时增加了速度优化和错误修复。2016年7月15日发布版本1.1.3,并包含错误修复、优化、文档更新和实验性的Ambisonics工作。
2017年6月26日,Opus 1.2.1版本发布,精简了音频文件体积,改善了音频质量,增强了部分情况下的安全性,编解码器效率提升。准备推动RFC 6716标准更新,标准未更新之前继续兼容RFC 6716。此版本也带来了面向VR的立体声音频解决方案。
Opus在更高的比特率下,已被证明具有优异的音质,而它的音频格式比AAC、HE-AAC和Vorbis更具有竞争力。
在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 格式使用了 Ogg 容器,所以继承了Vorbis注释。建议的标签如下(大小写无关,多用大写):
与ID3
格式和算法是公开记录的,参考实现是作为自由软件发布的。Xiph的参考实现称为libopus,一个名为opus-tools的包提供命令行编码器和解码器实用程序。它是根据BSD授权条款发布的。它是用C语言编写的,可以针对具有或不具有浮点单元的硬件架构进行编译。随附的诊断工具opusinfo报告有关Opus文件的详细技术信息,包括有关比特流格式标准匹配性的信息。它是基于ogginfo从因此,与编码器和解码器不同,vorbis-tools可以在GPL第2版的条款下使用。
RFC 6716包含用C编写的参考实现的完整源代码。FFmpeg的项目和GStreamer的项目具有编码器和解码器的实现不是从参考库的。libopus引用库已作为名为Concentus的项目的一部分移植到C#和Java。这些端口牺牲了性能,以便轻松集成到跨平台应用程序中。
该GatesAir Intraplex IP Link和Tieline广播IP音频编解码器的梅林和向导族和Tieline报告-IT移动编解码器添加到嵌入式和移动设备的作品的支持。Digital Radio Mondiale - AM频率的数字无线电格式 - 可以使用Dream 软件定义的无线电广播和接收Opus音频(尽管在官方标准中未被识别)。在维基媒体基金会赞助的免费和开源的在线的JavaScript作品编码器,浏览器支持所需的HTML5功能。信号从Speex切换到Opus音频编解码器,在2017年初提供更好的音频质量。
操作系统支持
大多数最终用户软件依赖于操作系统提供的多媒体框架。Native Opus编解码器支持在类Unix操作系统的大多数主要多媒体框架中实现,包括GStreamer,FFmpeg和Libav库。
谷歌在Android 5.0(“Lollipop”)中添加了对Opus音频播放的原生支持。将载体限定,然而,对作品的音频包封在Matroska的容器,如.mkv和.webm文件。Android 6.0(“Marshmallow”)和Android 7.0(“Nougat”)增加了对封装在Ogg容器中的Opus音频的支持。
由于在Apple的WebKit渲染引擎中增加了WebRTC支持,macOS High Sierra和iOS 11为封装在核心音频格式(Core Audio Format)容器中的Opus音频提供原生播放支持。
在Windows 10上,Microsoft为封装在Matroska中的 Opus音频和Windows 10周年更新(1607)设备的WebM文件提供本机支持。Web Media Extensions提供了对封装在Ogg容器中的Opus音频的支持,Web Media Extensions是Windows 10 Fall Creators Update(1709)设备的可选附件。在Windows 8.1及更早版本中,第三方解码器(如LAV过滤器)可用于提供有限的支持。
媒体播放器支持
虽然多媒体框架中的支持自动支持Opus对基于此类框架构建的软件的支持,但是一些应用程序开发人员为在其软件中支持Opus音频格式做出了额外的努力。这种支持被添加到AIMP, Amarok,cmus,音乐播放器守护进程,foobar2000,Mpxplay,MusicBee,SMplayer,VLC多媒体播放器, Winamp和Xmplay音频播放器; Icecast,Airtime(软件)音频流软件; 和Asunder音频CD,CDBurnerXP CD刻录机,FFmpeg,Libav和MediaCoder媒体编码工具。流媒体Icecast无线电试验自2012年9月和2013年1月开始实施。SteamOS使用Opus或Vorbis进行流式音频。
浏览器支持
对于WebRTC实现,Opus支持是强制性的。Opus在Mozilla Firefox,Chromium和Google Chrome,基于Blink的Opera,以及依赖GStreamer支持多媒体格式的类Unix系统的所有浏览器中得到支持。虽然Internet Explorer不会本机提供Opus播放,但Microsoft Edge浏览器和VP9内置了对格式的支持,以提供完整的WebM支持。Safari支持iOS 11和MacOS High Sierra的Opus。
VoIP支持
参见:VoIP软件的比较
由于其能力,Opus从VoIP软件供应商那里获得了早期的兴趣。几个SIP客户端,包括Acrobits Softphone,Bria X-Lite,CSipSimple(通过附加插件),Empathy(通过GStreamer),Jitsi,Tuenti,Line2(目前仅在iOS上),Linphone,Phoner和PhonerLite,SFLphone,Mumble,Discord和TeamSpeak 3语音聊天软件也支持Opus。TrueConf在其VoIP产品中支持Opus。由于法律原因,Asterisk缺乏内置的Opus支持,但第三方补丁可供下载并且2016年9月增加了通过二进制blob的官方支持。Tox P2P视频会议软件使用Opus只。分类广告分布式消息传递应用程序在其VoIP实现中在TLS套接字内发送原始opus帧。的PlayStation 4游戏机也采用了CELT /电视剧编解码器,其系统党的聊天。
从版本3.13开始,Rockbox在支持的便携式媒体播放器上播放Opus ,包括Apple的iPod系列产品,iriver,Archos和Sandisk制造的设备,以及使用“Rockbox as a Application”的Android设备。所有最近的Grandstream IP电话都支持Opus音频编码和解码。OBihai OBi1062,OBi1032和OBi1022 IP电话全部支持Opus。最近的BlueSound无线扬声器支持Opus播放。