互联网中的视频(HTML5) — (2)
音频编码器
除非你坚持观看1927年之前的电影,不然你一定会希望在你的视频中含有音频。和视频编码器一样,音频解码器也是一种算法来对音频流进行编码。同样和视频编码器一样,音频编码器也分为有损和无损两种类型。同样的原因,无损的音频是在是太大而很难再网络上使用,我们会更加关注有损音频。
事实上,我们关注的将要比这更窄,因为有损音频编码器有几种种类。音频在很多不需要视频的地方也在使用(电话,比如),于是存在着一整套关于如何对演讲进行编码优化的音频解码器。你不会使用这些编码器到音乐CD,不然结果就像是听到一个四岁的小孩在从话筒里唱歌一样。但是你会在Asterisk PBX中使用它,因为在这种情况下带宽是极其珍贵的,而这些编码器能够将人的演讲压缩的一般编码器的几分之一。不过,因为缺少浏览器和第三方的支持,演讲优化的音频编码器从来没有在网络上得到普及。所以我们将更加关注普通目的的有损编码器。
如果我再前面所提到的,当播放一段视频的时候,电脑同时在做几件事情:
1. 解释容器的格式
2. 解码视频流
3. 解码音频流并且传递到播放器中
音频编码器解决了上述的第三个问题 - 将音频流进行解码变成数据格式从而使得播放器可以播出。就像视频解码器一样,也有很多的技巧能够减小音频流中的数据存储量。也因为我们在讨论有损音频编码器,信息在录制-编码-解码-收听的循环中在不断丢失。不同的音频编码器会丢掉不同的东西,但是他们的共同目的是一样的,就是使得你的耳朵无法辨析出有东西在丢失。
有一个概念在视频中没有的是频道。我们把声音传送到喇叭中,那你有多少个喇叭呢?如果你坐在电脑前,极大的可能你只有两个,一个在左边,一个在右边。我的桌子上有三个,左边,右边,还有一个在地板上。被称作为环绕声系统的可以有六个或者更多的喇叭,被安排好而防止在房间里。每一个喇叭专门的播放一个频道,当你坐在六个喇叭中间的时候,你会被六个不同的喇叭轨道所环绕,你的大脑进行综合和感觉你就好像身临其境。有用么?至少这个几十亿美元的产业认为是。
大多数的普通音频解码器可以处理两个频道的声音。在录制的过程中,声音被分开到左音道和右音道中;在编码过程中,两个音道都被存放到同一个音频流中;然后在解码时,两个音道分别被送到合适的喇叭。有一些音频解码器可以处理多余两个的轨道,同时将他们传送到准确的喇叭中。
音频解码器有很多很多种,但是在网络中,真正只有三种是需要了解的:Mp3, AAC和Vorbis。
MPEG-1 Audio Layer 3
MPEG-1 Audio Layer 3 通常被称为MP3, 它被编码为不同的率,64kbps, 128kbps, 192kbps,还有的分布在32到320之间。更高的编码率代表着更大的文件和更好的音频效果,不过编码率和音频质量并不是线性关系:128kbps的声音比64kbps的要好绝不止两倍,但是256kbps没有128kbps的两倍好。此外,MP3允许多率编码,也就是说可以在音频的一部分使用一种编码率,而在另一部分使用另外一种编码率。比如,当两段对话之间的空白时,便可以使用很低的编码率,而在多种声音开始时使用更高的编码率。
MP3规范并没有完全意义上定义如何进行MP3的编码(不过定义了如何解码),不同的编码器使用不同的听觉心理学模型得到了很多不同的结果,但是他们都可以被同一个播放器所解码。开源的LAME项目是一个最好的免费编码器。
MP3格式在1991年标准化,同时也是受专利所保护的,这也解释了为什么Linux不同直接播放MP3的原因。绝大多数的移动音乐播放器都支持单独的MP3文件,同时MP3音频流也可以被内嵌在任意的视频容器中。Adobe Flash既可以播放单独的MP3文件,也可以将MP3内嵌到MP4视频容器之中。
ADVANCED AUDIO CODING
AAC于1997年标准化,它在被Apple选中成为其iTunes商店的默认格式后得到了极大的发展。最初,所有的从iTunes商店购买的AAC文件都是被Apple的DRM所加密的,被称之为FairPlay。现在iTunes商店的很多歌曲已经没有了这层保护,被Apple称为iTunes Plus。AAC格式是受专利保护的。
AAC是被设计用来提供一个在同样解码率下比MP3音质更好的格式,并且能够在任意的编码率下编码音频。(MP3只能限制在几种编码率下,并且上限是320kbps)。AAC可以最多编码48个频道的声音,尽管在实践中不会有人真的这样去做。AAC格式另一个和MP3不同的地方在它也定义了多Profiles,类似于H。264。低复杂度的profile被设计用来在实时的系统中低CPU功耗的播放,而高Profile则被用来提供更好的音质通过更慢的编码和解码来换取。
所有当前的Apple产品,包括iPods, AppleTV, 和QuickTime支持一定profiles的AAC格式在单独的音频文件或者被内嵌在MP4视频容器中。Adobe Flash支持MP4中的各种Profiles的AAC,开源的播放器mplayer和VLC播放器也是。对于编码而言,FAAC库是一个开源的选择。
VORBIS
Vorbis也经常被叫做”Ogg Vorbis”, 尽管从技术角度来说是不正确的。(”Ogg”只是一个容器格式,而Vorbis音频流还可以被内嵌在其他的容器之中)。Vorbis不被任何专利所限制,因此它被绝大多数的Linux系统和移动设备直接支持。Mozilla Firefox 3.5 支持Vorbis音频文件在Ogg容器中,或者Ogg视频中包含着Vorbis音频轨道。Android移动手机可以播放单独的Vorbis音频文件。Vorbis音频流通常被内嵌在Ogg或者WebM容器中,但是他也可以被内嵌在MP4或者MKV中。Vorbis支持任意数目的音频轨道。



