【问题标题】:Get video file from flash player objective-c从 Flash Player Objective-C 获取视频文件
【发布时间】:2011-08-26 21:32:52
【问题描述】:

有谁知道如何从这个网址获取视频文件的网址:

http://vk.com/video_ext.php?oid=6492&id=141771975&hash=a984f2edb68fc4f7

它返回带有视频的 Flash 播放器,但 iphone 不支持 flv 格式,我想知道视频是 flv 还是 mp4 文件。如果有人知道如何在线播放 flv 视频,我正在听 :)

【问题讨论】:

    标签: objective-c video-streaming vk


    【解决方案1】:

    使用 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 文件,它们都是不同的后缀)并且您应该能够在您的苹果手机。如果是这种情况,您应该能够从上面提到的部分编译 URL 并加载它。

    //Pseudo-code
    url = video_host + video_uid + "/video/" + video_vtag + ".m4v"
    

    要评估这是否真的有效,您需要调查该网站上的大量视频。

    另外,请注意,若要实施您通过此类逆向工程获得的知识,并在其发布环境之外显示视频,可能会违反该网站的服务条款,并且可能是以下行为重罪。

    【讨论】:

    • 哦,对不起。我应该认为这就是您想要的,因为这毕竟是一个编程站点(即使您没有明确声明要编写一个程序来执行此检查。)编辑我的回复。
    • 题名:Get video file from flash player objective-c :)
    • 编辑了我的答案,添加了关于如何以编程方式解决此问题的想法。
    • 谢谢你,理查德。我会试试这个:)
    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2017-12-10
    • 1970-01-01
    相关资源
    最近更新 更多