Archive for June, 2010


iPad

IPAD到手已经好几天了,今天才有时间好好摸一摸,没干别的什么事,也不想花钱到APPLE STORE买东西,于是GOOGLE了一把,下了不少的免费软件。在这里记录一下,以后有更多的再慢慢汇报。总之,IPAD就是一个大玩具,上网看书巨爽,其他功能有待发掘。

软件:

iBooks, Stanza, TweetDeck, Twitterrific, AirVideoFree, AccuWeather, Big Calc Free, Dropbox, Colors Pro, WSJ, iPDF, iWallpapers, uploadingit, Photo Frame, MobileNoter, FeeddlerRSS,

游戏:

Gravity HD, New York, RushHrFree, Busy Harbor, Shanghai Lite, Air Hockey, 10 Pin Lite, Newton’s, Hit Tennis 2, PokerFreeHD, Manic Marble, KarateKid, Sudoku Tablet, Checkers, ChessBorda, Clickomania, JirboSays, JirboBreak, iMahjong, Snowboarding, BumperBoats, Pukk HD, GodFinger, Tic Tac Toe, TeragatiFree, BMS Lite, Bubble Snap, Tap Fish, Farm Story, We Rule, TunesAttack, PaperFootball, Doons, Cogs HD Lite, Chicktionary, Radiation, Harbor Master, Aurora Feint 3, CastleCraft, Legends, Labyrinth Lite

关注孤军

有这样一支部队,他们不被国民党要,不被共产党要,流落在金山角地区,缅甸泰国政府亦不要。当年残存的93军,如今成为了孤军,孤独地生活在异国他乡。

互联网中的视频(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支持任意数目的音频轨道。

互联网中的视频(HTML5) — (1)

自从上个月Google IO以来,对于HTML5的讨论是越来越多,而其中十分重要的一个部分就是视频Video。作为内嵌进入HTML的新的标记,Video将在HTML5中发挥其核心的作用,将互联网的表达能力继续提升。

不过在实际中,有很多人对于视频的了解还很浅显,对于WebM等这些新的名词到底代表的什么意思,以及和以前的MP4,AVI等有什么关系是完全的一头雾水。在这里找到了一篇很好的文章,直接翻译过来,希望对大家都有所帮助。至少我在读完这篇文章之后,对于Video的确是有了更为清晰的认识。

文章的网址在http://diveintohtml5.org/video.html,是一本新书的其中一个章节。

每一个在过去四年中访问过YouTube的人都应该知道你可以将视频内嵌在网页中。但是在HTML5之前,是没有一个标准的方式来完成这件事情的。实际上,所有你在网络上所观看的视频,都是通过的第三方插件 - 或许是QuickTime,或许是RealPlayer,或许是Flash(YouTube使用的是Flash)。这些插件能够很好的和你的浏览器结合,以至于很有可能你都意识不到你在使用它们,直到你试图观看一个视频但是你的平台不支持这个插件的时候。

HTML5定义了一个标准,使用<video>符号来在网页中内嵌视屏。目前对<video>的支持还在慢慢发展,当然这只是对其还无法使用的一个礼貌的说辞。至少,它现在还不能在所有的地方使用。但是不要灰心,还是有很多的替代,退路和选择存在。

<VIDEO> 的支持

IE9    IE8    IE7    FX3.5    FX3.0    SAF4    SAF3    CHROME     OPERA
yes                              yes                          yes        yes           yes              yes

不过支持<video>仅仅只是这个故事中的很小一部分。在我们开始讨论HTML5视频之前,你必须对视频本身有一定的了解。

视频容器

你可以把视频文件看做是AVI文件或者是MP4文件。在现实之中,AVI和MP4仅仅只是视频容器的格式。就像一个ZIP压缩文件可以存储任意的文件在其中一样,视频容器格式只是定义了如何在容器中存储东西,而不是什么类型的数据可以进行存储。(当然这个可能稍微要复杂一些,因为不是所有的视频流都和所有的视频容器格式所匹配的,不过暂时不要担心这些)

一个视频文件通常会包括几个轨道 - 一个视频轨道(没有音频),加上一个或者多个的音频轨道(没有视频)。 轨道通常是互相关联在一起的。一个音频轨道之中存储着标记来帮助和视频同步。单一的轨道可以包含元数据,比如视频的标题,视频的封面,集数(对于电视剧而言),还有很多很多。

视频的容器格式有很多很多,其中最为重要的一些包括:

  • MPEG4,通常是.mp4或者.m4v的扩展名。MPEG4容器时基于苹果公司老的QuickTime(.mov)容器的。在苹果公司网站上的电影片头,仍然使用的是QuickTime容器格式,但是从iTunes上下载的电影已经是MPEG4容器模式了。
  • Flash,通常以.flv结尾。Flash视频是,不意外的,被Adobe Flash所使用的。在Flash9.0.60.184之前(也就是Flash Player 9 Update 3),这是Flash唯一所支持的格式。现在的新版本Flash同时也支持MPEG4容器。
  • Ogg,通常是以.ogv作为其扩展名。Ogg是一个开放标准,开源并且没有任何专业牵连的标准。FireFox3.5, Chrome 4, 还有Opera 10.5都直接支持Ogg容器,Ogg视频(被称作Theora)和Ogg音频(被称作Vorbis),而不需要任何插件。在PC中,Ogg能够被所有的主流Linux直接使用,同时你可以在Mac和Windows上通过安装QuickTime Components或者DirectShow filters来使用。它同时可以通过VLC在各个平台上播放。
  • WebM是一个新的容器格式,从技术的角度来说,它和Matroska非常相似。WebM在Google I/O 2010中被发布,它是通过VP8视频编码器和Vorbis音频编码器来实现的(等会会有更多提到)。WebM将会被下个版本的Chromium, Google Chrome, Mozilla Firefox, 和Opera内置直接支持而不需要任何插件。Adobe也声称将在下个版本的Flash中支持WebM视频。
  • Audio Video Interleave, 通常以.avi结尾。AVI容器格式是微软在早期的时候当播放视频还被认为是十分惊喜的时候发明的。它并没有官方支持很多最新的容器格式,它也不官方支持各种元数据,它甚至不支持很多现在的视频和音频编码器。很长一段时间以来,各个公司通过各种方法来扩展AVI使其能够和各种格式相匹配,目前它仍然是很多著名的编码器的默认格式比如MEncoder.

视频编码器

当你谈到观看视频的时候,你通常所说的应该是一个视频流和音频流的组合。但是你并没有两种不同的文件,你只有一个视频文件。可能是AVI,也可能是MP4。这些仅仅只是容器的格式,就像ZIP压缩文件可以存放各种文件一样。视频容器格式定义了如何在单一文件中储存视频和音频流。

当你观看视频的时候,你的视频播放器在同时做以下几件事:

1. 通过对视频容器格式的解析,来判断哪种视频和音频轨道,和他们是如何存储在这个容器之中的,从而可以将这些数据找出并进行解码。
2. 对视频流进行解码并将一帧一帧的图像播放在屏幕上。
3. 对音频流进行解码并将声音送到喇叭中。

一个视频编码器指的是一个视频流进行编码的算法,它规定了如何完成上述的第二步。(词语Codec是一个合成词,他是编码coder和解码decoder的合成)。你的视频播放器通过视频编码器将视频流进行解码,然后播放一些列的图像或者帧在屏幕上。当今大多数的视频编码器使用了各种技巧来减少大量的播放帧之间的信息。比如,仅仅只存储两帧图像之间的差异,而不是完完全全存储两帧单独的图片。大多数的视频在两帧之间的变化都很小,这样就能够使用高压缩来产生更小的文件大小。

有损耗和无损耗两种类型的编码器。无损耗的视频太大而不适于在网络上使用,所以我们将更多的目光放在损耗的编码器上。一个有损的编码器说明信息在编码的时候会不可挽回的丢失。比如从一个磁带中拷贝时,你将会丢失原有的信息降低音频的质量,并且在每一次的编码中都会发生。除了音频中的zizi的声音之外,多次的视频编码会使得图像看上去更块状,特别是在有很多运动的场景之中。(事实上,这也可能发生在直接从原视频中进行编码,当你使用一个很差的编码器,或者传错了参数的时候发生)。从另一面来说,有损的视频解码器仍够提供很好的压缩器,同时很多提供了一些技巧使得块状的视屏仍够不那么容易被人的眼睛所发觉。

视频编码器的种类有很多很多,三个最为著名的分别是H.264, Theora和VP8.

H.264

H.264也通常被视为MPEG-4 part 10或者MPEG-4 AVC或者MPEG-4 Advanced Video Coding. H.264是被MPEG公司研发,在2003年标准化的。它的目标是提供向低带宽,低CPU设备(手机)或者高带宽,高CPU设备(现代PC)以及所有两者之间的所有设备的一个单一的编码器。为了完成这个目的,H.264标准被划分问profiles,用来定义一些列的可选的属性来再文件大小和复杂程度之间进行选择。高Profiles使用了更多的附加属性,提供了更好的视频效果,花费更多的时间进行编码,并且需要更多的CPU进行实时解码。

为了给大家一个粗略的profiles范围的概念,Apple公司的iPhone使用Baseline profile,AppltTV使用Baseline和Main profile,PC中的Adobe Flash使用Baseline, Main和High profile. YouTube使用H.264来编码高分辨率的视频,通过Adobe Flash来播放。YouTube同时也提供H.264编码的视频给移动设备包括苹果的iPhone和Google的Android。同时H.264也是蓝光Blue-Ray格式所指定的编码格式,蓝光一般使用High profile.

大多数的非PC设备在播放H.264视频的时候(包括iPhone和蓝光),实际上使用的是一个专门的芯片来进行解码,因为它们的CPU还没有强大到能够在实时对视频进行解码。大多数的PC的显卡也支持硬件H.264解码。还有很多H.264解码器的竞争者,包括开源的x264 library。H.264标准是受专利保护的,通过MPEG LA建团所代理。H.264视频可以集成在绝大多数的视频容器格式之中,包括MP4和MKV.

THEORA

THEORA是从VP3解码器发展而来,而如今被Xiph.org Foundation所支持。Theora不像其他的VP3专利,是完全免费没有任何专利保护的编码方式。尽管这个标准从2004年以来就没有变化,Theora项目仅仅只在2008年11月和2009年9月发布了1.0和1.1版本。

Theora视频可以被集成到任意的视频容器格式之中,尽管大多数时候是在Ogg容器中。所有的主流Linux都内置支持Theora,并且Mozilla Firefox 3.5也内置支持。内置支持,我指的是不需要任何插件就可以进行播放。同时Theora视频也可以在Windows和Mac OS X中通过安装Xiph.org的开源解码器软件来进行播放。

VP8

VP8是另外一个On2公司的视频编码器,它们同时也最初研发了VP3(后来的Theora)。从技术上讲,VP8的视频质量类似于Baseline profile的H.264,同时有着很大的提升的潜力。

在2010年,Google收购了On2公司,并且将视频编码器标准和编码解码的样例进行了开源。同时,Google还通过宣布其完全免费打开了所有On2在VP8上的专利。(这也是最好的办法,因为你无法解除任何专利)。

  • English Version

    • Cannot read Chinese? Please take a look at my English site, hope you can find more you need there!
  • 感谢支持

  • twitter

    facebook

    linkedin

  • Categories