likes
comments
collection
share

python实战案例:解析m3u8视频文件

作者站长头像
站长
· 阅读数 11

实战案例内容

目前大多是网站都是使用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文件存储的网址,网址具体位置如下图:

python实战案例:解析m3u8视频文件

下载m3u8文件

  • 直接到浏览器的开发者工具->NetWork中获取m3u8文件的网址,然后进行下载
  • 通过python发送网络请求下载m3u8文件

解析m3u8文件获取ts文件路径列表

我这里采用读取文件的方式货期的文件路径列表,其实python有一个第三方库m3u8可以解析m3u8文件。

python实战案例:解析m3u8视频文件

通过文件列表批量下载ts文件

这一步就是通过网址,利用request库发送网络请求获取ts文件

python实战案例:解析m3u8视频文件

将下载的ts文件安装m3u8中的排列顺序进行合并,存储到mp4文件中

代码如下:

python实战案例:解析m3u8视频文件