總結一下m3u8格式相關問題

1.m3u8格式解讀

本小節摘自:m3u8視頻文件詳解

m3u8不是一種視頻格式,而是一種純文本文件。

m3u8視頻文件格式中 存放了視頻的基本信息 和 分段視頻的索引地址 (將一整個視頻分成了時長不同的很多小段)。當播放m3u8視頻時,就是按順序下載播放索引列表的視頻,從而完成一部完整視頻的播放。

維基百科對m3u8的定義

M3U8: m3u8 是一種純文本文件,採用UTF-8編碼,是一種Unicode版本的m3u文件。
M3U : m3u 是一種播放多媒體列表的文件格式,可以指定一個或多個多媒體文件的位置,它的設計初衷是爲了播放音頻文件。比如MP3,但是越來越多的軟件現在用來播放視頻文件列表。
M3U文件是記錄了一個索引純文本文件,打開它時播放軟件並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。
HLS :m3u 和 m3u8 文件都是蘋果公司使用的HLS (HTTP Live Streaming)格式的基礎,這種格式可以在iPhone和Macbook等設備播放。——HLS 點播是常見的分段 HTTP 點播,就是將視頻流分成不同的片段,客戶端不斷的去下載該片段,由於片段之間的分段間隔時間非常短,所以看起來是一條完整的播放流

2.m3u8格式怎麼播放、播放原理

(1)只有m3u8文件的【鏈接】時,可以瀏覽器插件Native HLS Playback 或者 vlc播放器播放
https://blog.csdn.net/saddyyun/article/details/85157709
沒有瀏覽器插件Native HLS Playback時在地址框輸入m3u8的鏈接會默認是下載那個m3u8文件,有了插件則是播放。

(2)只有m3u8【文件】時
注意不要是“.local.index.m3u8”那種,否則你就像只拷貝出個快捷方式在另一臺電腦上,詳見(3)。

另外,視頻如果掛了那也沒轍,畢竟那只是存儲在服務器的文件,不讓訪問就訪問不了了。

用文本文檔形式打開如果是 非本地的*.ts目錄序列,注意還有一個坑,
是“M3U8批量下載器”教我的,叫做“相對鏈接”
在這裏插入圖片描述
下面截取一段那個m3u8片段

#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-ALLOW-CACHE:YES
#EXTINF:3.000,
/amplify_video/1228050294535282694/vid/0/3000/1280x720/_x6v6S8Jhz5tpqhM.ts
#EXTINF:3.000,
/amplify_video/1228050294535282694/vid/3000/6000/1280x720/7mwaVhHeIYdjPn48.ts
#EXTINF:3.000,
/amplify_video/1228050294535282694/vid/6000/9000/1280x720/-vhJ_5vdtWcl2Yjk.ts

我發現裏面的片段直接複製到地址欄寫找不到,我尋思着這也能訪問啊,爲啥下載不了?還有啥貓膩?
於是我搜索了其中一段(如下鏈接),發現老外這個有個我沒有的【前綴】啊!
https://superuser.com/questions/1033563/how-to-download-video-with-blob-url

在這裏插入圖片描述
↑於是我回來再找那個視頻,發現確實有前綴,這就是“相對鏈接”報錯的原因吧。然後我加上了標紅的這段,合成了個鏈接

https://video.twimg.com/amplify_video/1228050294535282694/vid/6000/9000/1280x720/-vhJ_5vdtWcl2Yjk.ts

輸入地址框,果然能下載了!ts單個片段也可以播放!
在這裏插入圖片描述

其他方式:百度一下並使用專用工具(挺多的,自己百度吧)

(3)有【m3u8文件】又有【全是*.ts文件(或者沒有後綴名時)的文件夾】時
這種情況一般就是我們手機下載下來的形式,用qq瀏覽器和UC下載經常有這種格式,m3u8這是播放列表文件,一般只能看出幾十KB大小,用普通播放器卻不能正常播放,帶着的文件夾貌似全是緩存卻束手無策(我們保存的視頻不能永遠放在同一個手機上不動吧……)
直接打開

用文本編輯器打開m3u8文件(我用的是vscode),會發現幾個標籤和一大串地址序列,這和我們之前介紹的“索引地址”一致。

【摘自:https://www.jianshu.com/p/e97f6555a070】
標籤的類型可分爲五種類型:基礎標籤(Basic Tags),媒體片段類型標籤(Media Segment Tags),媒體播放列表類型標籤,主播放列表類型標籤 和 播放列表類型標籤。其具體內容如下所示:
基礎標籤(Basic Tags):可同時適用於媒體播放列表(Media Playlist)和主播放列表(Master Playlist)。具體標籤如下:
EXTM3U:表明該文件是一個 m3u8 文件。每個 M3U 文件必須將該標籤放置在第一行。
EXT-X-VERSION:表示 HLS 的協議版本號,該標籤與流媒體的兼容性相關。該標籤爲全局作用域,使能整個 m3u8 文件;每個 m3u8 文件內最多隻能出現一個該標籤定義。如果 m3u8 文件不包含該標籤,則默認爲協議的第一個版本。
…………(詳情請參照源鏈接)…………

在這裏插入圖片描述
我用文本方式打開m3u8發現是一串目錄,估計是拷貝到電腦上由於絕對目錄發生改變導致無法播放了,在vscode裏用【編輯】->【替換】,將其換成現在所在的真正位置目錄,然後保存,發現可以播放了!!!
在這裏插入圖片描述
文件夾裏的【.index.m3u8】和【.local.index.m3u8】應該是對應於【網絡索引】和【本地索引】,
將改過的m3u8文件無論放在哪,只要是裏面索引的東西位置是對的就都能播放。(其實ts單個片段也可以播放,m3u8只是相當於一個“播放列表”,想合成一個就用二進制的方法拼接一下即可,詳見後面的“已經下載好的m3u8格式怎麼合併轉換成其他格式”)

在這裏插入圖片描述
播放成功!但是是一段段的,每段就【幾秒】,會按照【播放列表】順序播放下去(上圖就是【47段中的第12段在播放,文件名爲11.ts的】)
想要進行合併可以往下翻到“已經下載好的m3u8格式怎麼合併轉換成其他格式”那一節。

3.網頁上是m3u8的源怎麼下載成其他格式保存

(1)M3U8 Downloader:M3U8下載器 - Chrome插件

(2)GetThemAll - Chrome插件
這個插件獲取各種王爺資源十分好用,圖片支持批量打包成zip,視頻也能抓到源鏈接,遇到m3u8文件也可以進行【錄製】——點擊【start record】等幾秒之後就會彈出保存MP4文件的提示了(注意要驗一下,有時候只錄制了一部分)
在這裏插入圖片描述

4.網頁上視頻是m3u8的格式怎麼直接下載

(1)一般是手機uc的視頻緩存,這個我就不做解釋了,視頻播放時有個緩存箭頭,然後在“已緩存”中找到並播放,不多講了。

(2)播放完一整段後,網絡設置,查看緩存……或者f12啊啥的找唄,這段以後再補……

5.已經下載好的m3u8格式怎麼合併轉換成其他格式(以MP4爲例)

https://jingyan.baidu.com/article/00a07f380cd30f82d128dc4f.html
其中的關鍵命令行是

copy /b 0+1+2+3 new.ts

新建文本,輸入相應的內容,然後保存,將文本文檔後綴改成bat格式。打開即可將目錄下的ts文件以二進制順序合併爲new.ts文件。

根據m3u8生成內容的序列(利用原序列)

百度經驗那位提供的方法是用excel製表然後合成文本,我尋思,何不直接藉助m3u8文件這個“播放列表”直接生成合並文本?
┏ (゜ω゜)=☞來,說幹就幹。
在這裏插入圖片描述
↑首先打開一個m3u8文件,發現簡單的查找-替換是不行的,因爲每行前的標籤都不一樣,於是我想到了正則表達式(vscode是支持正則匹配尋找的,文本文檔不行……)
感謝這位老哥:正則表達式匹配兩個特殊字符中間的內容

匹配兩個字符串A與B中間的字符串包含A與B: 
表達式: A.*?B(“.“表示任意字符,“?”表示匹配0個或多個) 

於是爲了匹配所有“#”和“,”之間的內容,正則表達式這麼寫

#.*?,

執行之後賊爽,全乾淨了
在這裏插入圖片描述
然後把那個長長的前綴查找-替換成“+”
在這裏插入圖片描述
注意,在命令行裏換行就直接算執行了,我們需要把他們首尾相接去掉換行符(記得把最開始那幾個頭標籤刪掉)
在這裏插入圖片描述
這樣就生成了我們需要的形式,處理完複製出來,粘到命令行後面再回車即可
總結一下:去不重複的標籤、去前綴、去換行符。

執行一下:
在具體文件處呼出Powershell
在這裏插入圖片描述
先輸入cmd換成命令行,否則不管用,【命令行】和【powershell】有些差別不能當做同一個工具來用

在這裏插入圖片描述

然後把命令輸入(複製索引時不要把回車粘上,否則會當作已經輸入完畢),執行。

重命名內容後根據以往做好的列表(改文件名)
另一種方法就是將文件改名:全選,右鍵第一個,重命名。這樣會按照當前排序順序命名,然後用你之前做好的長列表截取需要的一段當做中間的索引也可以。

還有直接使用工具的方法:
如何快速把多個ts轉去mp4格式 - 無需安裝

6.其他

網上的“m3u8視頻下載合併工具”不一而足,在這裏也不多加介紹了
其中很多工具都是基於Ffmpeg做成的:http://ffmpeg.org/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章