记一次加密的ts视频下载

想要下载一个视频,但是网站上不能直接下载。试过IDM,以及Streaming Video Recorder 都不行。因为视频被加密了。

ts 是分片的视频文件,m3u8 是播放索引列表(还可配置其他参数,比如加密)。

未加密的 ts 视频下载方法

如果没有加密的话,那么直接下载所有ts文件,然后合并即可。

  • windows 下合并: copy /b D:\a\*.ts D:\b\new.ts
  • Unix 下合并:echo 'd9c25b2f8f666097d855bfffcb22f529_' {1..9}.ts | tr "" "\ n"> tslist 接着 while read line; do cat $line >> new.ts; done < tslist (参考如何用Chrome下载视频流

m3u8 文件中指定加密方式的 ts 视频下载

有加密的话,需要处理m3u8文件,并使用ffmpeg进行转换,具体步骤如下。 (参考m3u8加密文件的解密及ts文件的合并

有加密的视频如何判断,在m3u8文件中,有 EXT-X-KEY 的话就有加密,如下图,后面有加密方式以及密钥地址:

1595860320807

处理步骤:

  • 首先,下载所需文件:

    • 下载所有 .ts 文件;
    • 下载 .m3u8 文件(我这里命名a.m3u8);
    • .m3u8 文件中拿到 key,并保存,这里注意正确的 key 为16字节。(我本地命名 alikey)
  • 修改 .m3u8 文件,其中 key 的 URI 改为上一步保存本地的文件;ts是本地路径的文件,如果是同一个目录,只写名字即可。

    1595860458255

  • ffmpeg命令 ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i a.m3u8 -c copy new.mp4 就生成了所需要的视频文件。

报错:Error when loading first segment

把key保存起来,m3u8文件配置改好,用ffmpeg下载时候,报错

Error when loading first segment

搞了半天发现是下的key有问题,当时保存的是被压缩的。

1595858073203

1595858090830

原来是被压缩了,解码后的key就是正确的,共16字节。

多个ts文件批量下载

  1. 拿到 m3u8 中的ts文件名,然后拼接即可拿到所有url,粘贴到下载工具即可批量下载。

  2. 如果文件名是按序号递增的,那可以直接用迅雷批量下载:比如我们的文件名是 http://abc.com/0001.ts ... http://abc.com/0020.ts 共20个文件,迅雷可以使用通配符,直接指定范围和通配符长度,就可以批量下载

    1595861445892

posted @   姜小豆  阅读(8127)  评论(2编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2017-07-28 Echarts关系图-力引导布局
点击右上角即可分享
微信分享提示