python3_m3u8download_m3u8下载_m3u8的python爬虫

python3_m3u8download_m3u8下载_m3u8的python爬虫

HLS简介

HLS(HTTP Live Streaming):基于HTTP的自适应码率流媒体传输协议,通过将流媒体切分为多个小的 .ts 片段(每个小片段大概只有十几秒,但时长不定)
这些小片段通过存储在一个m3u8文件中供客户端解析播放

HLS作用

1.嘎嘎提升用户体验,我们不需要等待整个视频加载完毕后才能播放,可以一边播放一边提前加载后面的片段,做到边下边播
2.但是如果有下载/缓存该视频的需求,
有些手机浏览器可以缓存但是无法导出为MP4文件,
有些手机/电脑浏览器只能下载到一个名为xxx.m3u8(10kb左右)的文件,打开后并没有视频可以播放,
如果手机上需要保存为mp4类型的文件就(可能)需要借助一些其他的软件,如:IDM+,电脑上则(可能)需要借助IDM,XDM等软件,
使很多人想保存却没有门路,一些人知道是依靠一个拓展名为m3u8的文件播放的,却离下载/缓存成功仅一步之遥却远隔千里

m3u8的简介

在视频的播放页面,浏览器会请求一个或多个m3u8文件,通过该文件内携带的相关信息去服务器内找相应的ts片段加载播放,如下图可能不太美观,见谅哈:

m3u8指示
这里只需要关注红线以上的部分,
它携带了一个个ts文件的位置,如下图:

请添加图片描述

m3u8文件的格式

ps:" -*- “该字符串在下面的内容等价于”:"
#EXTM3U -*- 所有的m3u8文件开头都是这个格式(这不是我们关心的)
#EXT-X-VERSION:3 -*- 指明版本,我暂时没有发现有其他的版本,可能是我见识少(这不是我们关心的)
#EXT-X-TARGETDURATION:17 -*- 指明每个ts最大的时长,每个ts文件的时长可以不相等,但是不能大于该值,我记得我好像见过有一个m3u8文件最大的时长就是它整个视频本身的时长,里面就包含了一个ts文件位置,狸谱(这也不是我们关心的)
中间还有各种各样的标识(但我们都可以不care)
#EXTINF:16.666667 -*- 指示在它底下的ts文件的时长(也不用管太多)
#EXT-X-ENDLIST -*- 所有的m3u8文件结尾都是这个格式(这更不是我们需要关心的)
下面的这个标识,如果没有,那时最好的;如果有,它是一定需要我们去关注的
我们可以通过这个标识里的内容,对ts文件进行解密
假如我们忽略这个标识,下载后的每一个ts文件是不能合成一个完整的mp4文件的
#EXT-X-KEY -*- 首先定义加密方法,一般默认是AES-128(对称密钥算法),其次是用来展示加密ts文件的密钥的URL,最后是IV加密向量。(这才是我们需要去关心的)
eg:
#EXT-X-KEY METHOD=AES-128,URI=“https://xxx.xxx.xxx”,IV=0xdebe4444e66b56e5ecfe0000ca3f89f5

ps:如果没有IV值,则使用16个0即可(00000000000000)

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值