【转载】在Android上使用HTML5观看视频 | 维奇@HOME
我希望让更多的人能够了解一种将取代 Flash 的东西,所以我尽量写的比较直白——即使程序员的逻辑在常人看来已经完全属于“异类”了。@_@
Adobe 公司放弃移动平台的 Flash 支持已经是板上钉钉的事了,Google Play 的 Flash 插件也会在 8 月份下架,这在一定程度上也会促进 HTML5 的发展和普及,因此我个人还是对 Adobe 的做法十分赞赏的。
当然,仍然有不少不明真相的用户对失去 Flash 伤心不已。之所以说“不明真相”,因为用户自然是不了解软件行业的技术更迭。对于普遍使用第 4 代 HTML 技术组织网页的时代,Flash 的出现着实丰富了用户的体验,让人眼前一亮。Web 前段开发者需要把 Flash 嵌入 HTML 代码中,而编写 Flash 时则是另一套语法代码,这是不协调、也是不便于维护的。加之 HTML 中的元素与 Flash 内容进行交互也是一个不可逾越的屏障。就好像一个做了隆鼻手术的美女,表面看上去很美,可是她自身的皮肤组织与这个鼻子磨合的并不好。另外,Flash 也是有名的耗电大户,这在靠电池支撑的移动平台尤为伤不起,而 HTML5 则要省电的多。这些问题一定程度上催生了 HTML5,当然,HTML4 的问题还远不止的这些。
在 UC、海豚等国产浏览器的宣传语中,支持 HTML5 已然成为了宣传重点,对 HTML5 的支持情况也成了浏览器是否优秀的重要标准。Flash 在逐渐被边缘化直到被完全替代。Google 推出的浏览器 Chrome for Android 就率先做了表率:不支持 Flash,并且其对 HTML5 特性的支持十分优秀,它仅能运行在搭载 Android 4.0 以上的设备(在我看来,4.0 才是 Android 真正该有的样子,Google 在这个版本才真正找到方向。扯远了~)。自从这款浏览器面世以来,我就一直在使用,它的清爽与快速让我爱不释手(我在 Windows 和 Ubuntu 都在使用 Chrome,顺便也推荐给各位)。
那么如何利用 Chrome for Android 观看在线视频呢?
Apple 的已故 CEO 乔布斯一直认为 Flash 是垃圾,所以 iPhone、iPad 从来就不支持 Flash,为此国内的视频网站(优酷、土豆、酷6、新浪等)对广大 iOS 用户进行了优化,当判断用户是通过 iOS 设备访问时,即切换到用 HTML5 实现的页面,HTML5 技术会调用系统中的视频播放器播放视频。目前 Android 的主流版本还在 2.3,该版本是支持 Flash 的,所以如果通过 Android 设备访问时,并未强制使用 HTML5,如果未安装 Flash,便会提示“找不到插件”之类的问题而无法观看视频。那么我们如果把 Android 伪装成 iOS 设备,即可无需 Flash 插件播放视频了。
要知道如何伪装,首先需要简单了解视频网站是如何判断我们手中的设备的。在我们访问一个 Web 页面的时候,浏览器会将一段称为“User-agent”的信息传送给网站,User-agent 按照一定的格式组织了操作系统以及浏览器类型和版本等等信息,例如下面这段即是 iPhone 的 User-agent:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3
视频网站根据此 User-agent 可以知道访问者来正使用 iPhone。你可以使用任意的浏览器访问 http://www.whatsmyuseragent.com/ 来察看你当前的 User-agent。
下面我们只需要修改浏览器的默认 User-agent 即可。这里以修改 Chrome for Android 举例,其他浏览器请自行搜索修改方法。在手机的 /data/local 目录下新建文件”chrome-command-line”(需 Root,如何 Root 手机请自行搜索),内容为chrome 的命令行字串,例如伪装成 iPhone 的 User-agent,可以写:
chrome --user-agent="Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3"
然后结束掉 Chrome for Android 进程,重新运行,访问 http://www.whatsmyuseragent.com/ 看看是不是已经变成 iPhone 的 User-agent 了。至此就可以免去 Flash 插件看优酷、土豆、酷6等视频了。
对于日常使用来说,这已经足够了,但对于我这种喜欢折腾的人来说,这还有些美中不足——User-agent 中还包含了所使用的界面排版引擎、浏览器内核版本等等信息,完全替换成 iPhone 的 User-agent 还是和 Chrome 本身的信息略有些差异。经过我的测试发现其实只要 User-agent 中包含“iPhone”或“iPad”一词,都可以被识别为 iOS 设备。我通过访问 http://www.whatsmyuseragent.com/ 记录下 Chrome for Android 原始的 User-agent 为:
Mozilla/5.0 (Linux; Android 4.1; Galaxy Nexus Build/JRN84D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19
然后根据其略作修改,将”chrome-command-line”文件内容改为:
chrome --user-agent="Mozilla/5.0 (Linux; Android 4.1; Galaxy Nexus Build/JRN84D, compatible iPhone) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
可以看到我在中间加入了“compatible iPhone”,由于这段 User-agent 包含了“iPhone”自然就可以“兼容iPhone”了 :),另外手机型号 Galaxy Nexus,系统 Android 4.1,Build Tag 是 JRN84D,这些信息都完整保留了下来。
更多关于 Chrome for Android 的 User-agent 可以参考这里: https://developers.google.com/chrome/mobile/docs/user-agent,
至此,我的问题就完美解决了。
最后,也许有人还会问网页 Flash 游戏怎么办?虽然我不用手机玩 Flash 游戏,我想答案只能是等待游戏开发者提供 HTML5 的版本。处在 2 种技术的切换时期,这种情况在所难免。当然,还没有必要现在就去担心这些,毕竟你仍可以使用手中的 Android 2.2/2.3/4.0 配合 Flash继续“偷菜”(看视频还是使用 HTML5 为好,别忘了“省电”)。又或者等到 HTML5 普及了,会出现大量更加优秀的游戏,你就会忘了你那片儿菜地了……