有谁知道如何从这个网址获取视频文件的网址:
http://vk.com/video_ext.php?oid=6492&id=141771975&hash=a984f2edb68fc4f7
它返回带有视频的 Flash 播放器,但 iphone 不支持 flv 格式,我想知道视频是 flv 还是 mp4 文件。如果有人知道如何在线播放 flv 视频,我正在听 :)
有谁知道如何从这个网址获取视频文件的网址:
http://vk.com/video_ext.php?oid=6492&id=141771975&hash=a984f2edb68fc4f7
它返回带有视频的 Flash 播放器,但 iphone 不支持 flv 格式,我想知道视频是 flv 还是 mp4 文件。如果有人知道如何在线播放 flv 视频,我正在听 :)
使用 HTTP 流量嗅探器/代理来查看页面加载了哪些文件。许多浏览器都将它内置到他们的开发工具中(例如 Firebug 中的 net 选项卡),但我更喜欢使用Charles,它具有许多其他对 Web 开发人员有用的功能。
使用 Charles,我可以看到单击播放时加载的文件是http://cs12326.vk.com/u06492/video/ab94044f46.flv,这是一个 FLV 文件。
编辑:如果您想以编程方式执行此操作,您可能不走运,因为只有视频播放器(在 Flash 中实现)知道从哪个 URL 检索视频文件。你可以为这个特定的网站进行逆向工程(见下文),但它显然只适用于 vk.com 上的视频,甚至可能不适用于 vk.com 上的所有视频。
查看 HTML,我可以看到定义了四个看似重要的 javascript 变量:
var video_host = 'http://cs12326.vk.com/';
var video_uid = '06492';
var video_vtag = 'ab94044f46';
var video_no_flv = 0;
这些值可以在视频 URL 中找到,因此可以安全地假设通过解析这些变量定义的 HTML 文本,并使用这些值来编译 URL,您可以找到该文件。
我假设video_no_flv
在同一段代码中定义的变量指示视频是否为 FLV 文件。在此页面中,它设置为0
,所以我假设这意味着它是一个 FLV 文件。这意味着通过在 HTML 文本字符串中搜索子字符串video_no_flv
并在下一个后续内容之后解析整数=
将告诉您视频文件是否为 FLV 文件。
如果不是,可以安全地假设它是 MP4/F4V(对于同一类型的 MPEG-4 H.264 文件,它们都是不同的后缀),并且您应该能够在 iPhone 上播放它。如果是这种情况,您应该能够从上面提到的部分编译 URL 并加载它。
//Pseudo-code
url = video_host + video_uid + "/video/" + video_vtag + ".m4v"
要评估这是否真的有效,您需要调查该网站上的大量视频。
此外,请注意,若要实施您通过此类逆向工程获得的知识,并在其发布的上下文之外显示视频,可能会违反该网站的服务条款,并可能构成重罪。