iTunes LP 的内部结构

原文链接;本文经由 Jay Robinson (杰伊·鲁滨逊)许可发布。

网页开发师杰伊·鲁滨逊对 iTunes 新增入的 LP 功能很感兴趣,他想要了解一下里面的结构,因此不妨跟随他一起,来一次虚拟拆解吧。

 

基本情况

iTunes LP 文件是一个超过 500MB 大小的,扩展名为 .ITLP  的封包。当你在 iTunes 中打开它的时候,将会借由浏览器来显示并占据整个窗口,接着照片淡入,音乐响起。页面中的链接将把你带入到最主要的功能之中,例如照片、视频以及歌词。
 
LP 的框架大小看上去像是 1280×720 ,不错的分辨率,但是纵向分辨率小于 842 像素的电脑会出现讨厌的滚动条,比如说 13 寸的 MacBook 。

下方是 Jay-Z 《蓝图3》专辑中的一些截图。 

itunes-lp-jay-z-intro.jpg 

itunes-lp-jay-z-photos.jpg

 

视觉化
 
有趣的是,当你点击「全部播放」的时候会呈现出视觉化的效果,这是颇具惊喜和创意的功能。Jay-Z 的这张专辑内置了三种视觉化效果,并会在其间切换。首先出现的是音频波形,不过可惜是固化效果,而非由音乐自动生成。三种效果的名称分别是:「波流」、「曲表」和「迷」。
 
然而,在欣赏 LP 曲目时还会带来意想不到的问题,Genius 合集中也有这样的情况出现,即无法得知目前正在播放歌曲是什么。这意味着除非退出 LP 模式,否则无法给歌曲评级或者查看其他相关数据。
 
这还会产生另外一个问题,退出 LP 并不会记录最后播放的信息,意味着当你想要在中途寻找某首歌曲的信息并重返 LP 时,要做好重新开始的准备。不过幸运的是这不会影响到播放计数功能。下方是「波流」效果的截图。 

itunes-lp-jay-z-visualizer-waves.jpg

 

WebKit 和 iTunes LP 内部结构
 
鲁滨逊反复表达了对 LP 内部结构的好奇,他料想这玩意应该和 iPhone 程序类似 (.IPA),于是他把 .ILTP 改成了 .ZIP ,结果没错,改名以后就可以一窥底细了。当然,也可以通过右键点击封包文件,再选择「检查包中内容」,不过估计苹果将在未来移除这项功能,而且改为 ZIP 也方便许多。下图是包内文件的截图。
 
itunes-lp-jay-z-internal-file-structure.jpg 
 
LP 采用的技术或标准有:HTML 4.01、CSS 和 JavaScript ,界面非常类似 Flash ,但看不到它存在的痕迹。CSS 动画精巧而顺畅,字体通过 @font-face 在 CSS 中引用,但似乎用处不大,因为大多数文字,甚至长如歌词,也是通过 PNG 文件来呈现的,鲁滨逊猜测苹果原先是打算用字体来渲染文字,但最后改变了主意。(纯文本效果不及要求?),在 The Doors 的专辑中他发现了一些痕迹,比如说原始文件的名字是「song13BackgroundClean.jpg」,但真正使用的是「song13Background.jpg」这张,你可以在下图中看到他们的差别。

itunes-lp-the-doors-font-face.jpg 
 
也许并不令人惊讶,LP 中的文件可以在最新版的 Safari (4.0.3)里很好的运行,除非某些请求 iTunes 响应的部分,例如电影文件。而 The Doors 的 LP 专辑中还遗留有开发时使用的文件,例如参考图片或是布局风格指南,见下图。
 
memGuide.jpg 
 
DRM
 
虽然用户的 iTunes 商店账号会被记录在 .PLIST 文件里,但是鲁滨逊并未发现 DRM (数字版权管理)的痕迹,即便在播放期间取消授权也依然能偶正常播放。他认为修改 .PLIST 文件也许可以将 LP 中的歌曲指向其他曲目。
 
总结
 
鲁滨逊对 LP 相当满意,而 LP 仅使用了 JavaScript 和 CSS3 提案中的部分功能就达到了这样的效果。视觉化提供了观赏音乐的另一种方式,有趣的是,许多人在观看 LP 中的 CSS 动画时,多以为是 Flash 制作出来的效果。