python实战案例:解析m3u8视频文件
实战案例内容
目前大多是网站都是使用m3u8文件格式来获取视频文件,将视频文件切分成很多个小的ts文件,在用户发送播放网络请求时不需要一次性返回整个视频文件,而是一个一个放回ts文件,这样就大大减小的网络传输的压力,同时也优化了用户体验感,而m3u8文件就是存储了每个ts文件的名称和播放顺序。今天这个实战案例就是通过python解析m3u8文件。
整体思路
m3u8维基百科定义
M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。"M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和 Macbook 等设备播放。
我们可以用记事本打开m3u8文件,文件内容和格式如下:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4.38,
https://e1.monidai.com/20210327/vXaL3ypQ/1000kb/hls/c1wXGS6116000.ts
#EXTINF:2.211,
https://e1.monidai.com/20210327/vXaL3ypQ/1000kb/hls/c1wXGS6116001.ts
#EXTINF:7.383,
https://e1.monidai.com/20210327/vXaL3ypQ/1000kb/hls/c1wXGS6116002.ts
...
从中我们可以大致了解到m3u8文件的内容,它给出了获取每个ts文件的具体网址和名称,这是最好情况,有时候它只会给出每个ts文件的名称,这时候就需要我们去浏览器的开发者工具->NetWork中获取ts文件存储的网址,网址具体位置如下图:
下载m3u8文件
- 直接到浏览器的开发者工具->NetWork中获取m3u8文件的网址,然后进行下载
- 通过python发送网络请求下载m3u8文件
解析m3u8文件获取ts文件路径列表
我这里采用读取文件的方式货期的文件路径列表,其实python有一个第三方库m3u8可以解析m3u8文件。
通过文件列表批量下载ts文件
这一步就是通过网址,利用request库发送网络请求获取ts文件
将下载的ts文件安装m3u8中的排列顺序进行合并,存储到mp4文件中
代码如下:
转载自:https://juejin.cn/post/7059403474772951076