• 如何下载某些 flash 在线视频 并使用ffmpeg下载分段并加密的m3u8视频流


    有些网站使用 flash 在线播放视频,不方便进行下载。

    可以使用 Chrome 的 Developer Tools 模拟成 iOS 设备(通过修改 User Agent),然后取得 h.264 视频流的地址。

    取得 h.264 视频流的地址

    1. 在页面上打开 Developer Tools (开发者工具),点击坐上的"手机"按钮(如下图)。

     

    2. 在左边 "Device" 选择 "Apple iPhone" 或 "Apple iPad" 等设备,刷新页面。

    3. 这时页面应该会提供 html5 的视频播放支持,定位到播放器元素,找到数据源链接(通常是一个 m3u8 文件)。

    如何下载分段并加密的 .m3u8 视频流

    1. 下载一个编译好的 ffmpeg 可执行文件(http://ffmpeg.org)。

    2. 使用命令 ffmpeg -i http://...m3u8 -c copy out.mkv 将视频流下载并合并成 out.mkv。

    4. 如果视频流并未加密,或者加密密钥(URI 存在于 m3u8 中)可以直接通过 http 访问到,通常可以正常下载(这种情况一般也可以用各种浏览器视频下载插件下载),但如果 URI 通过 https 协议,或者有 cookies 验证等机制,则需要手动下载密钥。

    5. m3u8 中的密钥通常是这样的:#EXT-X-KEY:METHOD=AES-128,URI="https://xxx" 这时需要用能够在线观看到这个视频的浏览器会话去访问这个 URI (通过 cookies 验证),并保存到本地,把 m3u8 也保存到本地,密钥的 URI 改为下载好的本地路径(一个 m3u8 中可能有多个密钥,需要一一处理)。

    6. 再次执行 ffmpeg 的命令,即可正常下载。

     

    注:

    使用 ffmpeg 无法直接下载 m3u8 内容的情况:

    1. m3u8 中的密钥的 URI 是走 https 协议的(这时 ffmpeg 一般会提示不支持 https 协议,但可以通过自己编译一个 ffmpeg 来打开 https 的支持)。

    2. URI 有 cookies 认证(这种情况应该只能用浏览器先下载密钥了)。

     

  • 相关阅读:
    js随机生成
    黑客代码雨效果
    HTML5 <details> 标签
    fieldset标签——使用(很少使用)
    jQuery总结
    vue element Cascader 级联选择器 选择任意一级选项 点击收起,点击label选中等问题详解
    Vue、element-ui的resetFields()方法重置表单无效问题及解决办法
    常用正则表达式(字符)
    一、日常经验记录
    python-opencv学习第二章
  • 原文地址:https://www.cnblogs.com/fatlyz/p/4293669.html
Copyright © 2020-2023  润新知