加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

iPhone能直接看YouTube,我们怎么办?

(2007-07-05 00:27:30)
标签:

iphone

youtube

flv

mpeg

2007年07月04日 星期三
天气:晴,闷热

 

独立日快乐,美国人民!

 

虽然我对iPhone根本不感兴趣,但事实上我有点羡慕iPhone直接观看YouTube这个功能。那些在YouTube上的视频虽然解析度不高,放在手机小小的屏幕上看还真是挺合适的。当然,现在国内的GPRS费用很高,如果直接看的话,我也承受不起。但这个功能真的很吸引我,嗯。

 

此外,我的电话上有一个TCPMP(The Core Pocket Media Player)播放器,它是不支持FLV格式的。后来下载了一个Adobe的Flash Lite,貌似也无法直接播放FLV视频。于是,问题就来了。如果我想在电话上看YouTube的话,我需要三个步骤:1,分析FLV源文件地址;2,下载FLV文件;3,转换成MPEG格式。

 

对于我这种懒汉来说,虽然可以一一操作起来,但不得不抱怨一句:这三个步骤太复杂了。有没有好的办法呢?肯定是有的。我就看到有这么一款软件,可以将YouTube上的视频直接下载到本地,然后转换成AVI格式。这样一来,你所需要做的事情就是:1,找到喜欢的视频内容;2,点击下载即可。很方便吧,呵呵。

 

如果事情简单到这个地步,那么我就不会写这篇Blog了。要知道我最不喜欢的就是安装软件了,尤其是为了一个芝麻大的一点事情去安装一个超过两兆的软件。要是绿色的还可以考虑,只有安装版?去死吧。

 

所以我决定自己写一个,懒汉版的YouTube下载+转换器。而且还要完全合法和免费,嗯……

 

说到这里我要再次跟大家赞一下Windows Script Host,用起来真的是太方便了。很多情况下,一些机械的事情完全可以彻彻底底地交给它去做,你只需要一步一步地把细化的步骤描述出来即可。这么说还有一个原因,我是在Windows平台下工作的。如果是其他的平台,我们也有其他的选择,比如Python,再比如Perl,甚至是批处理文件。

 

我的思路是这样的:假定我每次需要下载的YouTube视频有很多个,至少不止一个(其实就一个也无所谓,反正保证通用性就行)。我给这个程序一个文本文件的列表,然后双击一下我的脚本。程序就开始一个一个地找出YouTube上这些视频FLV文件的真实地址,然后生成一个临时的批处理文件(.BAT)。最后通过Shell调用这个临时的批处理文件,即可开始下载并转化。程序运行结束之后,之前生成的临时批处理文件会被删除掉。

 

以上就是我的思路,我觉得我应该已经表述清楚了,呵呵。接下来就是开始解决问题,嗯。

 

问题一,如何找到FLV源文件。对于YouTube来说,它的FLV源文件地址是比较好找的。如果你能得到一个标准的YouTube视频播放地址,比如:http://www.youtube.com/watch?v=Vy20b7pCcrY(一帮神经病把一台iPhone给砸了-。-)你会发现URL中含有一串字符“Vy20b7pCcrY”,不用分析都知道这就是Video ID。但仅仅通过Video ID是无法下载到FLV源文件的,你还需要得到另外一个叫做t的变量。

 

大多数视频分享站点都会有同样的问题,通过另外一个加密的值来防治源文件被随意下载。如果需要破解这些值的话,如果不知道算法的话,一般需要借助一些HTTP数据的嗅探工具。可是YouTube的做法让人称赞,它干脆就直接提供了这个值,呵呵。

 

查看一下HTML源文件,你应该能找到这么一行:
var fs = window.open( "/watch_fullscreen?video_id=Vy20b7pCcrY&l=59&t=OEgsToPDskLm0UBm_gQti2NXKLuwnUUm&soff=1&sk=yjy2ds8vWhkRdeNoQvRMywC&fs=1&title=" + "iPhone SMASH" ,

 

这里提供了我们需要的t值,在这个例子里,变量t等于OEgsToPDskLm0UBm_gQti2NXKLuwnUUm。接下来的事情,就是直接用天下人皆知的YouTube下载链接模版生成地址即可,最终的结果是:
http://www.youtube.com/get_video?video_id=Vy20b7pCcrY&t=OEgsToPDskLm0UBm_gQti2NXKLuwnUUm

 

事实上这还不是真正的下载地址,但是通过这个地址已经能够下载FLV源文件了,我们就不再继续深究下去。因为我的知识也仅仅这么多,继续下去我也不会了,呵呵。

 

问题二,如何下载FLV。我们有命令行工具Wget,这是自由软件基金会的工作成果,是自由软件。想下载FLV?使用最新版的Wget直接抓去上面我们得到的地址即可。

 

问题三,如何将FLV转换成MPEG。我们有命令行工具FFmpeg,这是一个开源项目,如果个人使用的话就是免费软件。想转换成MPEG文件?嗯,也许你需要仔细阅读一下FFmpeg的文档,呵呵。

 

至此,以上三个问题完全解决,我们就开始动手操作吧。YouTube终于可以登陆我的电话,我也能移动着收看YouTube了,嘿嘿。

 

源代码在这里,有兴趣拿去研究吧。如果发现Bug,欢迎留言给我。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有