当前位置: 首页 > news >正文

解决加密的HLS(m3u8)视频转换问题

下载视频,遇到一个问题,下载后无法播放,百度一下原来是HLS加密。

M3U8格式分析

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.key"   #这个就是密钥
#EXTINF:6.08,
000.ts
#EXTINF:10,
001.ts
#EXTINF:10,
002.ts
#EXTINF:10,
003.ts
#EXTINF:10,
004.ts
#EXTINF:10,
005.ts
......

看下key里是什么内容:

b47fa130f88e8e9a

先把所有的ts以及最重要的key.key都下载下来放到一个目录内。

然后修改m3u8,把里面的所有连接都改成本地相对连接。

F:\迅雷下载\XXXXXXXX>ffmpeg -i list.m3u8 -c copy -bsf:a aac_adtstoasc ALL.mp4
ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers
  built on Aug  3 2015 16:53:06 with gcc 4.9.1 (GCC)
  configuration: --arch=x86 --cross-prefix=/home/builder/mingw-w64-i686-3.6.4/mingw-w64-i686/mingw-w64-i686/bin/i686-w64-mingw32- --target-os=mingw32 --pkg-config=pkg-config --disa
ble-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv -
-enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-li
bopencore-amrwb --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-li
bvo-aacenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libxavs --enable-libxvid --enable-lzma --enable-zlib --enable-libfdk-aa
c --enable-nonfree --enable-dxva2 --disable-sse --disable-sse2 --disable-amd3dnow --disable-amd3dnowext --disable-sse3 --disable-ssse3 --disable-sse4 --disable-sse42 --disable-avx
--disable-os2threads --disable-ffplay --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --prefix=/home/builder/ffmpeg-i686-mw364-trunk --ex
tra-cflags='-m32 -I/home/builder/mingw-w64-i686-3.6.4/mingw-w64-i686/mingw-w64-i686/include' --extra-ldflags='-L/home/builder/mingw-w64-i686-3.6.4/mingw-w64-i686/mingw-w64-i686/lib
 -L/home/builder/mingw-w64-i686-3.6.4/mingw-w64-i686/mingw-w64-i686/bin -static-libgcc -static -lpthread'
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, hls,applehttp, from 'list.m3u8':
  Duration: 00:26:41.20, start: 1.459000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1080x608 [SAR 1216:1215 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 4 kb/s
Output #0, mp4, to 'ALL.mp4':
  Metadata:
    encoder         : Lavf56.15.102
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1080x608 [SAR 1216:1215 DAR 16:9], q=2-31, 25 fps, 90k tbn, 90k tbc
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 4 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 004c7a00] Non-monotonous DTS in output stream 0:1; previous: 63488, current: 63483; changing to 63489. This may result in incorrect timestamps in the output file.
frame=40030 fps=8265 q=-1.0 Lsize=  105439kB time=00:26:41.31 bitrate= 539.4kbits/s
video:91639kB audio:12393kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.353236%

命令:
ffmpeg -i list.m3u8 -c copy -bsf:a aac_adtstoasc ALL.mp4

红色的是关键部分

PS:我使用的版本是优酷 v7.5.5.5170自带的ffmpeg

其他参考:https://blog.csdn.net/cnhome/article/details/73250495

相关文章:

  • 再谈MTK的History机制
  • 在屏幕外的窗口,鼠标移动到屏幕边缘时自动把屏幕外部分拉回屏幕内怎么设置?
  • MTK的图片资源的修改与替换
  • [转]节省 3/4 的设计时间:14个设计神器
  • 转载一篇 EMI整改经验
  • Linux TIME_WAIT 太多 优化 解决
  • Sql Server 性能分析1 –查看数据库的相关信息
  • 某游戏公司的MYSQL配置文件
  • CentOS7 之系统优化方案
  • 存储过程中的行集作为子查询
  • CentOS6 下安装RabbitMQ和ErLang
  • MTK工作中可以使用的批处理脚本
  • PHP排列组合算法
  • 通信运营商如何理性应对带号转网(1)
  • 使用MySQL触发器自动生成日汇总表
  • [译]Python中的类属性与实例属性的区别
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android 架构优化~MVP 架构改造
  • C# 免费离线人脸识别 2.0 Demo
  • CSS实用技巧干货
  • ECMAScript6(0):ES6简明参考手册
  • gcc介绍及安装
  • Javascript 原型链
  • JS学习笔记——闭包
  • nfs客户端进程变D,延伸linux的lock
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • 浮现式设计
  • 给第三方使用接口的 URL 签名实现
  • 技术:超级实用的电脑小技巧
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 用mpvue开发微信小程序
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​插件化DPI在商用WIFI中的价值
  • # Java NIO(一)FileChannel
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (003)SlickEdit Unity的补全
  • (145)光线追踪距离场柔和阴影
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (ZT)一个美国文科博士的YardLife
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (七)Java对象在Hibernate持久化层的状态
  • (三) diretfbrc详解
  • (未解决)macOS matplotlib 中文是方框
  • (学习日记)2024.01.09
  • (一一四)第九章编程练习
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)fock函数详解
  • (转)创业家杂志:UCWEB天使第一步
  • *p++,*(p++),*++p,(*p)++区别?