Pages

Saturday, 20 July 2013

音频格式AAC的终结者——新一代音频格式霸主Opus完全使用指南

继Beta版支持Opus音频格式后,Foobar2000 1.1.14正式版已经放出,我认为,Opus格式已经成熟,是时候让更多的人认识这个AAC终结者了。

一、Opus格式简介:

Opus是一款开源、免费、自由度高的有损音频编解码器,融合了Skype的SILK和XVID的CELT 技术,拥有比AAC、OGG等其它有损格式更大的压缩率。它已经被标准化互联网组织IETF认证通过,是AAC后新一代的编码格式,目前处在开放阶段就已 经获得foobar、Skype、Firefox等的大力支持和推广,并且为HTML5标准加入了一股重要力量。
官方网站:opus-codec, 内有源代码下载。

二、特性

Opus的前身是celt编码器。在当今的有损音频格式争夺上,拥有众多不同编码器的AAC格式打败了同样颇有潜力的mpc、ogg等格式,而在Opus 格式诞生后,情况似乎不同了,Opus单单是在目前的开发阶段就已经取得了技术上诸多的优势。通过诸多的对比测试,低码率下Opsu完胜曾经优势明显的 HE AAC,中码率就已经可以媲敌码率高出30%左右的AAC格式,而高码率下更接近原始音频。
Opus的优势可以参看官方的测试对比:https://people.xiph.org/~greg/opus/ha2011/ 以及著名的hydrogenaudio论坛的公开测试:http://listening-tests.hydrogenaudio.org/igorc/results.html

三、播放

Opus格式音频可以使用gstreamer, libavcodec,Foobar2000,Firefox(15 Beta或更新)等播放,推荐Foobar2000 1.1.14 beta 1或者更新的版本播放。我这样的Firefox高度依赖者用Firefox播放也很爽,只是不能控制音量。

四、编码(含教程)

编码毫无疑问是重头戏,同AAC一样,Opus支持vbr cbr cvbr三种编码模式,vbr当然依旧是编码效率最高的模式。不同于Itunes AAC动不动就是20Kbps的码率估算差值,Opus的VBR码率控制的非常出色,平均码率和估算值一般只有4Kbps以内。
Opus的码率支持6 kbps到510 kbps,采样率支持8 kHz到48 kHz(这点和qtaac相似,但都比不上Nero aac最高的96kHz,不过一般的CD级别的足够了)最大支持255声道……
值得注意的是,普通的CD级音频所用的44.1kHz采样率通过Opus编码后会重采样到48kHz,至于为什么这么做OpusFAQ上有解释,下面的测试环节同样证明重采样到48kHz并无任何坏处。

http://www.saunalahti.fi/~cse/Opus/
有国外的网站出了一个相当详细的转换教程,不过适用于自定义编码需要输入命令行(用熟练了推荐命令行,非常方便)。附上命令行参数:
Quote:
Usage: opusenc [options] input_file output_file.opus

Encodes input_file using Opus. It can read the WAV, AIFF, or raw files.

General options:
-h, --help This help
-v, --version Version information
--quiet Quiet mode

input_file can be:
filename.wav file
- stdin

output_file can be:
filename.opus compressed file
- stdout

Encoding options:
--speech Optimize for speech
--music Optimize for music
--bitrate n.nnn Encoding bitrate in kbit/sec (6-256 per channel)
--vbr Use variable bitrate encoding (default)
--cvbr Use constrained variable bitrate encoding
--hard-cbr Use hard constant bitrate encoding
--comp n Encoding complexity (0-10, default: 10)
--framesize n Maximum frame size in milliseconds (2.5, 5, 10, 20, 40, 60, default: 20)
--expect-loss Percentage packet loss to expect (default: 0)
--downmix-mono Downmix to mono
--downmix-stereo Downmix to stereo (if >2 channels)
--max-delay n Maximum container delay in milliseconds (0-1000, default: 1000)

Diagnostic options:
--save-range file Saves check values for every frame to a file
--set-ctl-int x=y Pass the encoder control x with value y (advanced)
Preface with s: to direct the ctl to multistream s
This may be used multiple times
--uncoupled Use one mono stream per channel

Metadata options:
--comment Add the given string as an extra comment This may be used multiple times
--artist Author of this track
--title Title for this track

Input options:
--raw Raw input
--raw-bits n Set bits/sample for raw input (default: 16)
--raw-rate n Set sampling rate for raw input (default: 48000)
--raw-chan n Set number of channels for raw input (default: 2)
--raw-endianness n 1 for bigendian, 0 for little (defaults to 0)
--ignorelength Always ignore the datalength in Wave headers

新版的Foobar已经有了更简单的可视化转换界面,下面就分步骤详细讲解:
1、从http://opus-codec.org/downloads/下载最新版的Windows平台的opus工具包。



2、解压工具包,将其中的opusenc.exe程序放置到Foobar根目录下。





3、打开Foobar,打开转换器设置界面,在“输出格式”中打开“新建”。




4、在“编码器”中选择“Opus”,“比特率”选项中选择合适的码率(无损转换Opus推荐选择256,下面的对比测试中会解释的),“比特率管理”中用默认的VBR即可,“调整”选项中最好选择“音乐”





5、点击确定,你就可以在“选择输出格式”中看到“Opus”啦,然后转换即可。





五、对比测试

测试条件(都是些低端但有口碑的设备,见笑了):
声 卡——乐之邦 茉莉
耳 机——拜亚动力DT235
操作系统——Windows 7 Ultimate 32bit SP1
播放软件——Foobar2000 1.1.14a Final
音 源——无损音轨:
Coldplay - Viva La Vida《Greatest Hits》16Bit/44.1KHz
Coldplay - Yellow《Greatest Hits》16Bit/44.1KHz
Coldplay - Clocks《Greatest Hits》16Bit/44.1KHz
Vivaldi - 4 Seasons Spring Allegro《Gala Stradivarius Concert》16Bit/44.1KHz
Gamma Ray - My Temple《Majesty》16Bit/44.1KHz
Eric Clapton - Wonderful Tonight《Slowhand》(Stereo SACD) 24bit/88.2KHz
Hans Zimmer & James Newton Howard - Why So Serious《The Dark Knight OST》24bit/96kHz
所选曲目有流行、古典、民谣、金属等,覆盖范围较广。
测试方法——
44.1KHz采样的音源直接用Foobar转换成VBR模式的苹果Quciktime aac(简称qtaac)和opus,高于48KHz的音源SSRC重采样到16Bit/48KHz的Wave,再用生成的Wave用Foobar转换成 VBR模式的qtaac和opus,进行盲听测试。

测试结果——
从听感来讲,256K的Opus让我虎躯一震,它蕴含的音频素质超过了我的预期,低频上同qtaac对比好不少,与Lame编码的MP3格式刻意下潜的低 频不同,Opus饱满丰盈的低频与无损差别甚微,中频扎实,既没有Nero稍稍的刻意渲染也无削弱感,高频没有qtaac稍稍毛刺那样的感觉,干净利落, 一句话概括,opus的特点就是扎实,还原度非常优秀。



对众多的频谱党来说,这才是他们关心的环节。我再次(也不知多少次)强调:频谱和听感是完全不同甚至多数时候是完全相反的!!无损的频谱好看,那是因为有 充足的码率,对于码率有限的有损音频来说,频谱几乎是一无是处!!!同编码器、同码率的有损音频,频谱越好看听感其实越差,与其将码率用于人耳难以分辨的 20KHz以上远远不如省下码率用在20KHz以下!
现在我还是要将无损、qtaac和Opus的频谱做对比,是用来解释为什么Opus的声音素质要强于qtaac,同时也能看到Opus令我极为惊讶的超强表现!!
频谱图赏析:
1、同码率下qtaac的范围到了22KHz,Opus到20KHz,Opus的实际听感更好。
2、Opus的音乐模式编码和默认模式编码的频谱看不出有丝毫的不同,但是用hash工具又能得出两个文件并不一样。
3、仔细对比一下,Opus的频谱图就像是无损的频谱图等比缩放到20KHz以内,强悍到令人震惊啊!!我捣鼓有损音频格式也有些年头了,还真是第一次见到和无损音频如此接近的频谱图,其它有损格式即使码开到最高,频谱图也有很大的改变。

再把无损转化为48K 80K 128K 192K 224K 288K 320K 512K,分析频谱图(不贴图了,所有原图可以在下面的链接中下载)+盲听可以得到三点结论:
1、频谱范围全在0-20KHz之间,可以说从频谱上看不出音质好坏。
2、从我的设备上讲192K以上的编码想要听出差别已经相当难了。
3、320K以下的编码在频谱上有些异同,而320K以上几乎没有异同了。
结论:码率选择最好在192K-320K之间,所以256K很合适。


再看看这两张频谱图,你能想像的到有一张是40K的码率一张是512K码率的吗?频谱党们开开眼界吧。

更多的频谱对比原图下载链接:http://dl.vmall.com/c01djlgha1


六、结束语
不可否认,在AAC已经很难有进步的现在,Opus格式的发展潜力是巨大的,虽然现在还处在开发阶段,目前很多移动设备和解码工具并不支持,但目前的形势 相当乐观,无论是技术的先进性还是foobar、Skype、Firefox等的大力支持和推广,都昭示着新一代的音频格式Opus很有可能在未来替代 AAC成为音频格式霸主。


:在mp3上,著名第三方rockbox固件已经支持opus格式。