zoukankan      html  css  js  c++  java
  • 网络视频m3u8解密及ts文件合并

    网络视频m3u8解密及ts文件合并

    参考了两篇博客:

    https://blog.csdn.net/weixin_41624645/article/details/95939510

    https://blog.csdn.net/u014484783/article/details/79350392

    再加上了自己的办法写的更详细了一点:

    直接用ffmpeg下载是排队逐个下载,嫌慢就写了个脚本多线程下载能快一些,,然后用ffmpeg合并ts文件。 

    进入chrome开发者模式,然后Network选项卡,如果文件已经加载就刷新下页面,可以看到以下文件列表:

    需要下载两个文件:.m3u8 文件和 .key 文件(一般名称为:index.m3u8 和 key.key 

    注:.ts文件就是视频文件。

    上面所示,index.m3u8有两个同名文件,都下载下来看看哪个文件有下面的信息就用那个,文件名称改为 index.m3u8。

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:13
    #EXT-X-MEDIA-SEQUENCE:0
    
    //这里是注释,真实文件里不会有的,
    //看看你的m3u8文件里有没有这一行,如果有的话,那么恭喜你这个m3u8文件是加密的,请继续往下看
    //如果没有这行的话,特别是没有这个#EXT-X-KEY,那么同样恭喜你,这个m3u8没有加密,你直接百度vlc下载合并就行,也可根据本文章进行合并
    #EXT-X-KEY:METHOD=AES-128,URI="http://www.example.com/20180125/key.key"
    
    #EXTINF:12.5,
    //下面的这个其实才是视频真正的地址,你放在浏览器地址栏上直接回车是可以直接下载的
    //不过这样的链接在m3u8文件里会有很多,建议使用工具下载(迅雷)、ffmpeg、vlc等
    //这里还可能出现GBDYO3576000.ts这种情况,其实是把前面的路径省略了,可根据m3u8文件的路径自行加上
    http://www.example.com/20180125/GBDYO3576000.ts
    #EXTINF:12.5,
    http://www.example.com/20180125/GBDYO3576001.ts
    #EXTINF:12.5,
    http://www.example.com/20180125/GBDYO3576002.ts

    如果你的文件是加密的,那就用到key.key文件。将下载好的所有的ts文件、index.m3u8、key.key放到一个文件夹中。

    将URI改为你本地路径的key文件(同目录下直接填写key.key),将所有ts也改为你本地的路径(同目录下ts直接文件名,省略目录名)。

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:13
    #EXT-X-MEDIA-SEQUENCE:0
    #EXT-X-KEY:METHOD=AES-128,URI="/home/user/xxx/key.key"
    #EXTINF:12.5,
    /home/user/movie/GBDYO3576000.ts
    #EXTINF:12.5,
    /home/user/movie/GBDYO3576001.ts
    #EXTINF:12.5,
    /home/user/movie/GBDYO3576002.ts

    接下来还需要下载一款工具ffmpeg,下载Static的那个版本就可以,安装完成之后重启。

    重启之后打开你index.m3u8所在的文件执行

    ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy out.mp4

    如果报错了执行

    ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.mp4

    如果这里报错了,那么打开你的index.m3u8文件,修改URI的路径为网络路径(你下载时的路径),然后执行

    ffmpeg -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.ts

      

    【ffmpeg网络下载】

    注意:下面就是直接用ffmpeg 从网络下载合并,不过单线程排队下载太慢,不知道有没有并行下载命令没研究过

    ffmpeg -i "http://www.example.com/index.m3u8" -c copy out.ts

    【我的方法】

    是一般脚本执行把所有ts文件下载到本地目录。

    将 index.m3u8 和 key.key 文件放到 ts 文件所在目录下,用下面命令解密合并:

    ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.mp4

      

  • 相关阅读:
    JVM概论
    设计模式之工厂模式
    Java基础之多线程简述
    设计模式之单例模式
    设计模式之模板方法模式
    设计模式之适配器模式
    设计模式之策略模式
    机器学习浅析之最优解问题(二)
    MapReduce架构与生命周期
    Hadoop系列之实验环境搭建
  • 原文地址:https://www.cnblogs.com/fieldtianye/p/12682920.html
Copyright © 2011-2022 走看看