如何通過m3u8文件下載電影視頻

2021-03-02 娜驛站
前言後臺有網友留言,問m3u8文件到底是什麼文件,為何有的瀏覽器能直接播放,但有的就只提示下載?其實m3u8文件是指用UTF-8編碼格式的M3U文件,而M3U文件則是記錄了一個索引的純文本文件,它裡面記錄的索引通常是一系列視頻文件的地址,對於支持在線播放的視頻播放器比如potplayer、kmplayer等都可以直接用打開網址的方式來在線觀看,一些內置播放功能的手機瀏覽器也是支持直接播放的,而PC端的瀏覽器多半會提示下載該類文件。由於我國網絡的特殊性,某些優秀的外語影視劇無法在一些大型視頻網站觀看,因此就有一些人想出一些辦法,將其存儲在自建的伺服器上,然而個人的財力畢竟有限,在受制於各種成本的壓力下,將一個較大的視頻分割成上千個小視頻後,分段存儲在伺服器上,就可以較大程度上緩解一些壓力。對於視頻觀看者而言,這樣的視頻在線觀看體驗並不是特別好,將其離線下載於本地就是一個較好的辦法。這一篇文章中,我們來研究一下如何用Python來自動下載這類視頻的技術。人工處理m3u8文件首先將m3u8文件下載,比如以一部可供英語聽力學習的情景劇《Holmes **》為例(此處僅做技術用例參考,所測試下載文件已經刪除),我們得到的m3u8地址是這樣的:https://***.com/2020***/***/index.m3u8,將其輸入瀏覽器地址後,下載得到的m3u8文件如下圖所示:

從上圖可以看出,在這個得到的文件中並沒有視頻的索引文件,但卻隱藏著一個新的m3u8地址,因此,需要將該地址重新匹配到原地址的https://***.com/2020***/***/字串之後,形成新的m3u8地址,即:https://***.com/2020***/***/1000k/hls/index.m3u8,然後再將該地址輸入瀏覽器地址欄,即可下載得到新的m3u8地址,是這樣的:

上述圖片所示的地址即是對應的分割好的小視頻地址,接下來就需要將其匹配到剛才得到的網址上,比如第五個視頻地址即為:https://***.com/2020***/***/1000k/hls/906ffc7faa0000004.ts,將其輸入瀏覽器地址欄後,即可下載一個小視頻,截圖如下:

可是,這樣被分割後的視頻有多少個呢?用程序統計的結果是1858個,如果每一個都用手工下載,那是一個巨大的工作量。
程序自動下載用Python來完成這項工作,會顯得非常簡單。首先我們解析一次m3u8文件,如果它裡面有隱藏的地址,那就再讀取一次,代碼如下:
import requests
URL_M3U8 = 'https://***.com/2020***/***/index.m3u8'def read_m3u8(urlm3u8): m3u8filename = urlm3u8.split('/')[-1] urlprex = urlm3u8[:len(urlm3u8)-len(m3u8filename)-1] m3u8file_data = requests.get(urlm3u8) m3u8filename = urlm3u8.split('/')[-1] open(m3u8filename, 'wb').write(m3u8file_data.content)
lstfile = [] with open(m3u8filename) as f: for item in f.readlines(): if item[0] != r'#': if item[0] != '/': item = '/' + item.strip() lstfile.append(urlprex + item) return lstfile
def read_main(urlm3u8): m3u8filename = urlm3u8.split('/')[-1] urlprex = urlm3u8[:len(urlm3u8)-len(m3u8filename)-1] lstfile = read_m3u8(urlm3u8) if len(lstfile) == 1: with open(m3u8filename) as f: for item in f.readlines(): if item[0] != '#': if item[0] != '/': urlprex += '/' lstfile = read_m3u8(urlprex + item.strip()) return lstfile
lstfile = read_main(URL_M3U8)

在得到所有小視頻的列表後,可以用下述代碼將所有的文件下載到指定的文件夾:
for i, item in enumerate(lstfile):    print("第{}個文件正在下載,共{}個文件。".format(i+1,len(lstfile)))    myfile = requests.get(item)    open(r'tmp/'+item.split('/')[-1], 'wb').write(myfile.content)

下載完成後,為了視頻觀看的連續性,需要將所有小視頻合併成一個大視頻文件:
import os, globlstfile = sorted(glob.glob(r'tmp/*.ts'), key=os.path.getmtime)mergecmd = 'copy /b ' + '+'.join(lstfile) + ' new.ts'os.system(mergecmd)

注意,由於視頻文件的先後順序要保證,因此,將抓取的文件按照其創建的時間進行了排序,之後調用copy命令進行了合併,以上代碼在windows 10中測試成功。小結本文對m3u8文件進行了分析,並介紹了如何用Python自動提取其中地址並進行離線下載的技術。在此聲明,以上方法僅供純技術探討,不得作為盜取正版視頻的方法,請尊重版權,否則後果自負。

相關焦點

  • 如何下載m3u8視頻?
    有時候,在網上會看到一些m3u8的視頻,想下載,但是感覺很麻煩。
  • 教你如何下載m3u8 格式視頻
    實際上m3u8 是一個包含UTF-8編碼文字的m3u播放列表,m3u文件是記錄了一個索引純文本文件,打開它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。這種格式被用來作為HTTP Live 媒體流索引文件的格式。iPhone 自帶瀏覽器Safari 可以播放m3u8  格式的視頻文件。m3u8 格式的視頻要如何下載呢?
  • 教你如何下載m3u8 格式視頻(二)
    格式視頻 下載方法,詳情可以參看:《教你如何下載m3u8 格式視頻》集思廣益,很多朋友留言了其他的方法,小編測試了一下,效果不錯,今天繼續給大家分享一下。下載視頻和加速上網的好工具》下面小編簡單介紹一下如何使用Aloha 瀏覽器 下載m3u8 格式視頻。測試一:下載m3u8 連結的視頻打開Aloha ,地址欄粘貼你想下載視頻連結地址,打開頁面。點擊播放,使視頻全屏播放。
  • 淺談m3u8格式視頻文件採集
    通過m3u8的response可以看到,m3u8格式文件由很多段ts文件組成。那麼什麼是m3u8,什麼是ts呢?M3U8是Unicode版本的M3U,用UTF-8編碼。"HLS 只請求基本的 HTTP 報文,與實時傳輸協議(RTP)不同,HLS 可以穿過任何允許 HTTP 數據通過的防火牆或者代理伺服器。它也很容易使用內容分發網絡CDN來傳輸媒體流。我們來看一下,實際下載下來的m3u8文件到底長什麼樣。
  • M3U8視頻是什麼鬼?這種視頻如何下載下來?
    你或許見過或者沒見過m3u8的視頻,通常是在視頻播放器上右鍵或者通過網頁源碼獲取到視頻的播放地址是一個m3u8文件格式的地址,前幾天就有一位遇到了
  • M3U8——網頁視頻任意下載
    HLS 是新一代流媒體傳輸協議,其基本實現原理為將一個大的媒體文件進行分片,將該分片文件資源路徑記錄於 m3u8 文件(即 playlist)內,其中附帶一些額外描述(比如該資源的多帶寬信息···)用於提供給客戶端。客戶端依據該 m3u8 文件即可獲取對應的媒體資源,進行播放。
  • 如何下載淘寶直播回放視頻?(抓包技術m3u8流媒體)
    一般的視頻下載比如,小紅書,愛奇藝,優酷等等百度一下就有各種軟體和技巧可以幫我下載。比如手機端的  湯不熱 offline  等app 直接下載 或者靠瀏覽器下載但是隨著網際網路的發展,直播流媒體的出現,讓下載不是一個文件而是一個索引或者說是一個淘口令,這個連結只有在app才能匹配到連結,其他客戶端根本無法播放。
  • M3U8視頻下載器,全網視頻下載神器
    正文共: 1725字 8圖預計閱讀時間: 5分鐘    通常你所見到的視頻格式一般是mp4、mov等,但m3u8 格式你也要知道的。m3u8 格式是目前比較流行的一種可擴展的播放列表文件格式,現在許多主流視頻網站,都採用這種格式,例如直播視頻、福利視頻、騰訊視頻、愛奇藝等等。
  • m3u8加密視頻文件下載的通用方法
    2:這篇文件是針對於對編程有一定基礎的同學3:實現本文章的方法需要下載chrome瀏覽器源碼並且編譯。4:本文提到的下載其實您完全可以用錄屏來解決,這裡只是對於技術的追求和討論來句振奮人心的:重劍無鋒,大巧不工。看到html5下載,一般大家都會去找m3u8,得到對應的key,然後根據KEY計算偏移。
  • m3u8 視頻下載
    m3u8 視頻下載文件格式m3u8 文件作為媒體播放列表時,其內部信息記錄的是一系列媒體片段資源
  • 使用Python下載M3U8格式視頻
    /  作者簡介  /本篇文章來自 MRArchive 的投稿,分享了如何使用Python下載M3U8格式的視頻,希望對大家有所幫助!同時也感謝作者貢獻的精彩文章。HLS 是新一代流媒體傳輸協議,其基本實現原理為將一個大的媒體文件進行分片,將該分片文件資源路徑記錄於 m3u8 文件(即 playlist)內,其中附帶一些額外描述(比如該資源的多帶寬信息···)用於提供給客戶端。客戶端依據該 m3u8 文件即可獲取對應的媒體資源,進行播放。
  • 全新視頻下載神器,支持m3u8,完全免費
    大部分視頻下載器支持mp4 格式視頻下載,支持m3u8 格式視頻下載工具非常少。今天給大家推薦另外一款強力視頻下載神器,指尖播放器,配合鯊魚瀏覽器,輕鬆下載視頻,支持m3u8 格式視頻下載。免費!支持m3u8 格式視頻下載。支持視頻直鏈下載。支持多網站視頻下載。已下載文件支持導出。下面給大家簡單介紹一下,如何使用指尖播放器下載各種視頻等文件。
  • 我們究竟該如何下載網上視頻?(五)獲取「愛優騰」M3U8 連結及其 M3U8 下載器推薦
    現在很多視頻網站都是通過 M3U8 傳輸視頻文件,但是找到 M3U8 連結/文件對大多數人還說還是有些難度。M3U8 文件是指 UTF-8 編碼格式的 M3U 文件。M3U 文件是記錄了一個索引純文本文件,打開它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。獲取「愛優騰」M3U8 連結本人學識短淺,尚不能簡潔明了的說清楚應該如何找到 M3U8 連結/文件,但是在我的不懈努力下最終找到了一個所有人都會用的方法。
  • 安卓M3U8下載器 — 網頁視頻一鍵下載
    之前發表的一篇教你輕鬆下載M3U8格式的網頁視頻文章中簡單的為大家介紹了下視頻M3U8格式這個神奇東西的電腦下載方式,但上次總結的不夠全面忽略了移動端用戶,這裡就另起一篇文章補上。軟體全名m3u8 Downloader是一款純粹的M3U8格式在線視頻下載工具,M3U8格式說白了就是一堆視頻拆分後的播放列表,平時下載時會得到一堆分割後的ts文件,往往需要進行合併後才能得到原視頻文件,那麼有沒有一款自動下載合併的工具呢,還真有大名鼎鼎的FFmpeg就是代表作品之一,其次就是上面提及到的文章中也有,m3u8 Downloade就是一款基於FFmpeg 的M3U8安卓下載器。
  • 在線視頻下載之m3u8篇
    那麼問題來了,如果暫時沒時間看,收藏了地址又擔心它將來失效了,所以下載下來存起來是有它的現實意義的。在線視頻的下載,多數情況下不需要我們親自操刀。比如優酷、騰訊、愛奇藝、B站這些主流網站,直接用You-get命令行下載。You-get是個Python庫,但是裝完可以在cmd直接運行,具體來說,給個傳送門吧。
  • 這款音頻視頻下載工具,支持m3u8 格式,強力!
    已下載文件支持導出。支持m3u8 格式視頻下載。有限制,需要內購才能使用完整版。有橫幅廣告,不定時彈窗廣告。下面給大家簡單介紹一下,如何使用Video Saver下載各種視頻文件。下載:立即下載視頻複製連結:獲取視頻、音頻直鏈地址。點擊下載就可以立刻下載視頻。注意:需要自定義文件名稱(必須)。需要自定義文件下載的路徑(隨意)。
  • m3u8 下載器
    ,然後點擊「設為星標」,就不會再錯過小編給大家精心準備的文章啦~m3u8 格式的視頻通過瀏覽器自帶下載工具以及常見的下載工具很難直接下載完整的視頻。通過 m3u8 下載器可以方便快捷的下載完整視頻M3U8Dwonloader Github 項目地址 下載:https://lanzoui.com/i6umudgm3u8 批量下載器 52pj 下載:https://lanzoui.com/iG3oFk5xgwb
  • ffmpeg使用與m3u8文件
    例子ffmpeg {全局參數} {輸入文件參數} -i {輸入文件} {輸出文件參數} {輸出文件}-c:指定編碼器-c copy:直接複製,不經過重新編碼-c:v:指定視頻編碼器-an:去除音頻-vn:
  • m3u8視頻格式分析
    要介紹M3U8,首先得介紹下M3U,它是一種文件格式,是某些行動裝置例如安卓,蘋果手機瀏覽器緩存視頻的「專用視頻格式」。M3U文件是記錄了一個索引純文本文件,打開它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。M3U8文件是指UTF-8編碼格式的M3U文件,相當於M3U的特例情況。
  • GM瀏覽器,音視頻下載利器,支持m3u8,免費
    1,視頻下載GM瀏覽器內打開你想下載視頻的頁面,點擊播放,會看到左上角有個視頻按鈕,點擊。注意:支持下載的視頻,才會有視頻按鈕。在打開頁面的狀態下,GM瀏覽器點擊底部中間菜單按鈕,可以查看下載項目。在待下載中,需要手動點擊「開始下載」,才能下載視頻。