m3u8視頻格式簡介css
鑑於 m3u8 以上特色,沒法簡單經過視頻連接下載,需使用特定下載軟件。html
【解析下載】輸入 m3u8 連接,點擊下載視頻。
【跨域複製代碼】當資源出現跨域限制時,點擊複製頁面代碼,在視頻頁面的控制檯輸入。將工具注入到視頻頁面中,解決跨域問題。
【從新下載錯誤片斷】當部分視頻片斷下載失敗時,點擊該按鈕,從新下載錯誤片斷。
【強制下載現有片斷】將已經下載好的視頻片斷強制整合下載。能夠提早觀看已經下載的片斷。該操做不影響當前下載進程。
【片斷Icon】對應每個 .ts 視頻片斷的下載狀況。「灰色」:待下載,「綠色」:下載成功,「紅色」:下載失敗。點擊紅色 Icon 可從新下載對應錯誤片斷。vue
找到目標m3u8文件,查看文件內容,是否符合格式。git
【沒法下載,沒有顯示片斷Icon】github
【下載後的視頻資源不可看】ajax
【下載並解析 m3u8 文件】算法
【隊列下載 ts 視頻片斷】chrome
xhr.responseType = 'arraybuffer'
【組合 ts 視頻片斷】json
const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' })
【自動下載】跨域
URL.createObjectURL(fileBlob)
a.click()
。完成文件自動下載。
【整合及自動下載】
// 下載整合後的TS文件 downloadFile(fileDataList, fileName, fileType) { this.tips = 'ts 碎片整合中,請留意瀏覽器下載' const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' }) // 建立一個Blob對象,並設置文件的 MIME 類型 const a = document.createElement('a') a.download = fileName + '.' + fileType a.href = URL.createObjectURL(fileBlob) a.style.display = 'none' document.body.appendChild(a) a.click() a.remove() },
是的,涉及新知識點的部分只有上面一小段,其餘的都是 JS 的基礎應用。
除了 vue.js 文件,本工具代碼均包含在 index.html 文件裏面。包括換行,一共 540 行代碼,其中 css 樣式 190 行,html 標籤 30 行。JS 邏輯代碼 300 行。
羅列這些代碼量只是想代表,本工具運用到的都只是 JS 的常見知識,並不複雜。鼓勵你們多嘗試閱讀源碼,其實看源碼並無想象中的那麼困難。