python實戰(zhàn)案例:解析m3u8視頻文件
實戰(zhàn)案例內容
目前大多是網站都是使用m3u8文件格式來獲取視頻文件,將視頻文件切分成很多個小的ts文件,在用戶發(fā)送播放網絡請求時不需要一次性返回整個視頻文件,而是一個一個放回ts文件,這樣就大大減小的網絡傳輸?shù)膲毫?,同時也優(yōu)化了用戶體驗感,而m3u8文件就是存儲了每個ts文件的名稱和播放順序。今天這個實戰(zhàn)案例就是通過python解析m3u8文件。
?整體思路
m3u8維基百科定義
> M3U8是 Unicode 版本的 [M3U],用 UTF-8 編碼。"M3U" 和 "M3U8" 文件都是蘋果公司使用的 [HTTP Live Streaming(HLS)]協(xié)議格式的基礎,這種協(xié)議格式可以在 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文件的名稱,這時候就需要我們去瀏覽器的開發(fā)者工具->NetWork中獲取ts文件存儲的網址,網址具體位置如下圖:

下載m3u8文件
直接到瀏覽器的開發(fā)者工具->NetWork中獲取m3u8文件的網址,然后進行下載
通過python發(fā)送網絡請求下載m3u8文件
解析m3u8文件獲取ts文件路徑列表
我這里采用讀取文件的方式貨期的文件路徑列表,其實python有一個第三方庫m3u8可以解析m3u8文件。

通過文件列表批量下載ts文件
這一步就是通過網址,利用request庫發(fā)送網絡請求獲取ts文件

合并
將下載的ts文件安裝m3u8中的排列順序進行合并,存儲到mp4文件中
代碼如下:
