Python下載未加密的m3u8文件(流媒體文件)


    很多時候我們用手機瀏覽器緩存視頻時發現緩存下來的文件后綴是.m3u8格式的,按文件目錄找過去發現是一個幾十K大小的系統不可讀的文件,那我們緩存下來的文件去哪兒了呢?

    其實.m3u8文件就相當於一個協議,將文件后綴名更改為.txt可用記事本打開查看。m3u8文件的機理是將整個視頻分割成無數個小視頻,后綴為.ts,然后通過m3u8文件協議將這些小視頻拼接起來播放。在m3u8格式文件所在的文件夾中有一個與之對應的隱藏文件夾,該文件夾是以“.”開頭,系統文件管理是無法查看到的,可以下載ES文件管理器設置顯示隱藏文件夾查看,該文件夾中存放着很多.ts文件。這塊兒暫不討論,本文以下載央視官網小視頻為例實現未加密的m3u8文件的下載。

    如打開   http://tv.cctv.com/2019/02/05/VIDEJ4nYbZYMdVo94X11hwaL190205.shtml   下載小品“‘兒子’來了”:

    打開控制台,點擊播放按鈕,在Network下可以看到不斷加載的資源:


 

     可見不斷有.ts文件加載出來,並且文件名是呈數字遞增的方式變化的。

 

     點開幾個.ts文件,觀察URL,發現不同ts文件的URL也只是最后的數字不同,可根據規律拼接URL。網址欄加載URL可以自動下載Ts文件並可打開播放小視頻片段。由此可以拼接URL將所有小的ts文件下載到本地,再將這些ts文件按順序拼接成MP4文件,就可以得到完整的MP4文件。

    下面貼出我的代碼,沒有使用進程池,大文件可以考慮使用進程池加快下載的速度!

#Autor: 房廷飛 #Data: 2019.2.11

import requests import os global a import time a=0 def downts(path,url,i): global a try: header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'} response=requests.get(url,headers=header,timeout=5) if response.status_code==200: ret=response.content with open(path+'/%03d.ts'%i,'wb')as f: f.write(ret) print(url+'下載完成!') else: print(url) print(response.status_code) a=a+1
            if a==3:                                 #連續三次連接不到資源地址,說明所有小ts文件都已經下載完,結束程序。
                exit('預計已結束,程序自動退出') except Exception as e: print(e) def main(URL): path="C:/Users/user/Desktop/python測試/2"         #下載地址
    for i in range(10000):                           #設置資源數量
        url=URL+"%d.ts"%i                            #拼接ts文件的URL地址,通常有“%d”和“%03d”兩種
        if not os.path.exists(path+'/%03d.ts'%i): downts(path,url,i) time.sleep(0) #設置延時處

def getURL():   #輸入拼接資源URL,最后變化之外的部分
    URL="http://asp.cntv.qingcdn.com/asp/hls/2000/0303000a/3/default/b70ddc511cc44f92be0fb3c398473fbc/" main(URL) getURL() #本程序可以作為下載未加密m3u8格式文件的模板,其他URL文件只需更改getURL函數中的URL即可!
            #另外大文件可以通過使用進程池加快下載速度!

    運行代碼,下載所有小 ts文件:


    然后在該文件夾下打開命令行,輸入指令:copy /b *.ts 合成.mp4      回車即可合成完整MP4文件。

  #本程序可以作為下載未加密m3u8格式文件的模板,其他URL文件只需更改getURL函數中的URL和小ts文件URL的拼接規則即可!
  #另外大文件可以通過使用進程池加快下載速度!

 

  本程序只適用於未加密的m3u8文件,還有少量m3u8視頻是通過AES加密的,加密文件的下載改天再整理發布!

 

      2019-02-11    21:42:39    房廷飛      Come on!     期待明天更好的自己!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM