国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python 批量下載m3u8的視頻

這篇具有很好參考價值的文章主要介紹了python 批量下載m3u8的視頻。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家:點擊跳轉(zhuǎn)

目錄

一,貓抓獲取視頻地址

二,安裝配置ffmpeg

1,windows使用

2,python使用

三,碧站視頻

四,合并ts文件

1,背景

2,實現(xiàn)

4,缺點

五,下載m3u8視頻

1,背景

2,實現(xiàn)V1

3,實現(xiàn)V2

六,分析m3u8鏈接


一,貓抓獲取視頻地址

鏈接:https://pan.baidu.com/s/1eEtZKdNQvB8C_Y_7yNx1hw?
提取碼:rff3

這里可以下載maozhua.rar,解壓之后添加到google或者edge瀏覽器,就能看到瀏覽器有一個貓貓:

python 批量下載m3u8的視頻,音視頻

對于m3u8的視頻、m4s的視頻,貓抓可以獲取視頻地址。

二,安裝配置ffmpeg

1,windows使用

官網(wǎng)下載ffmpeg-2023-08-07-git-d295b6b693-full_build

放到一個沒有空格的路徑中:

python 批量下載m3u8的視頻,音視頻

?再把bin目錄配置到環(huán)境變量。

2,python使用

官網(wǎng)下載ffmpeg

下載之后復(fù)制到site-packages中:

python 批量下載m3u8的視頻,音視頻

三,碧站視頻

碧站都是m4s的視頻,但是畫面和音頻是分開成2個m4s的。

用貓抓獲取資源鏈接:

python 批量下載m3u8的視頻,音視頻

視頻比較大,音頻比較小,還有個中間大小的不用管。

把視頻下下來,重命名為1.m4s,音頻下下來,重命名為2.m4s,然后用dos訪問文件所在目錄:

cd Downloads

再執(zhí)行一行命令:

ffmpeg -loglevel quiet -i 1.m4s -i 2.m4s -c copy -y out.mp4 & del 1.m4s 2.m4s

四,合并ts文件

1,背景

當(dāng)你從網(wǎng)站下載了一集動漫,然后發(fā)現(xiàn)是一堆ts文件,雖然可以打開,但是每個都是10秒左右,很不方便。

這時,可以用python合并ts文件。

2,實現(xiàn)

代碼:

def merge_file(path, save_path):
    file_names = os.listdir(path)
    if 'file_list.txt' in file_names:
        os.remove(path+'file_list.txt')
    f = open(path+'file_list.txt', 'w+')
    for one in file_names:
        f.write("file '" + one + "'\n")
    f.close()
    ffmpeg_bin_dic = 'C:/ffmpeg-2023-08-07-git-d295b6b693-full_build/bin/'
    os.system(ffmpeg_bin_dic+'ffmpeg -f concat -safe 0 -i '+path+'file_list.txt'+' -c '+ ' copy ' +save_path)

注意,需要看一下file_list.txt中的各個ts順序,和預(yù)期是否一致。

如果不一致,調(diào)整原有ts的命名,或者調(diào)整代碼,直到file_list.txt中的各個ts順序,和預(yù)期一致,才能得到正確的mp4文件。

4,缺點

貌似合并出來的視頻經(jīng)常有問題。。。

五,下載m3u8視頻

1,背景

當(dāng)你用貓抓一個m3u8視頻的地址,那就可以解析m3u8,獲取其中的ts列表,多線程下載所有ts文件。

全部下完之后,用ffmpeg合并成mp4

2,實現(xiàn)V1

Downloader把ts列表做循環(huán)拆分,近似均分給每個線程,同時下載1個m3u8視頻。

download_m3u8_video輸入m3u8視頻的地址,解析ts列表,調(diào)用Downloader并控制多線程。

import requests
import os
import threading

tnum = 64

class Downloader(threading.Thread):
    def __init__(self, id, url, ts_list, file_path):
        threading.Thread.__init__(self)
        self.id = id
        self.url = url
        self.ts_list = ts_list
        self.file_path = file_path

    def run(self):
        for i in range(self.id, len(self.ts_list), tnum):
            ts_url = self.ts_list[i]
            r = requests.get(ts_url, stream=True)
            if r.status_code == 200:
                with open(self.file_path + f'_{i}.ts', 'wb') as f:
                    for chunk in r.iter_content(chunk_size=1024):
                        if chunk:
                            f.write(chunk)


def download_m3u8_video(url, file_path):
    r = requests.get(url)
    if r.status_code != 200:
        print('m3u8視頻下載鏈接無效')
        return False

    m3u8_list = r.text.split('\n')
    m3u8_list = [i for i in m3u8_list if i and i[0] != '#']

    ts_list = []
    for ts_url in m3u8_list:
        ts_url = url.rsplit('/', 1)[0] + '/' + ts_url
        ts_list.append(ts_url)

    f = open(file_path+'file_list.txt', 'w+')
    for i in range(len(ts_list)):
        f.write('file \'' + f'_{i}.ts' + "'\n")
    f.close()

    threads = []
    for i in range(0, tnum):
        thread = Downloader(i, url, ts_list, file_path.rsplit('.', 1)[0])
        thread.start()
        threads.append(thread)

    for thread in threads:
        thread.join()

    return not endflag

def merge_file(path, save_path):
    ffmpeg_bin_dic = 'C:/ffmpeg-2023-08-07-git-d295b6b693-full_build/bin/'
    os.system(ffmpeg_bin_dic+'ffmpeg -f concat -safe 0 -i '+path+'file_list.txt'+' -c '+ ' copy ' +save_path)


def down(url):
    name = url[-41:-5]
    print(name)
    ts_file_path = 'D:/v/' + name+'/'
    os.makedirs(ts_file_path)
    mp4_file_path = 'D:/v2/'+name+'.mp4'
    global endflag
    endflag = False
    if download_m3u8_video(url, ts_file_path):
        print('m3u8視頻下載完成')
        merge_file(ts_file_path, mp4_file_path)
    else :
        print('error!!!!')
        print(url)

url_list = [
    'https://sth.com/videos/202305091/d63b006e-c6fb-4997-8d43-7ebd086e9c75.m3u8',
    'https://sth.com/videos/202305081/2c9fa41b-e25b-4371-908f-d246628d7bed.m3u8',
]

for url in url_list:
    down(url)

3,實現(xiàn)V2

import requests
import os
import threading

tnum = 64

def download_m3u8_video(url, file_path):
    r = requests.get(url)
    if r.status_code != 200:
        return False

    m3u8_list = r.text.split('\n')
    m3u8_list = [i for i in m3u8_list if i and i[0] != '#']

    ts_list = []
    for ts_url in m3u8_list:
        ts_url = url.rsplit('/', 1)[0] + '/' + ts_url
        ts_list.append(ts_url)

    f = open(file_path + 'file_list.txt', 'w+')
    for i in range(len(ts_list)):
        f.write('file \'' + f'_{i}.ts' + "'\n")
    f.close()

    for i in range(0, len(ts_list)):
        ts_url = ts_list[i]
        r = requests.get(ts_url, stream=True)
        if r.status_code == 200:
            with open(file_path + f'_{i}.ts', 'wb') as f:
                for chunk in r.iter_content(chunk_size=1024):
                    if chunk:
                        f.write(chunk)
    return True


def merge_file(path, save_path):
    ffmpeg_bin_dic = 'C:/ffmpeg-2023-08-07-git-d295b6b693-full_build/bin/'
    os.system(ffmpeg_bin_dic+'ffmpeg -f concat -safe 0 -i '+path+'file_list.txt'+' -c '+ ' copy ' +save_path)


def down(url):
    name = url[-41:-5]
    print(name)
    ts_file_path = 'D:/v/' + name+'/'
    os.makedirs(ts_file_path)
    mp4_file_path = 'D:/v2/'+name+'.mp4'
    ret = download_m3u8_video(url, ts_file_path)
    print(name, end=' ')
    if ret:
        print('m3u8視頻下載完成')
        merge_file(ts_file_path, mp4_file_path)
    else :
        print('error!!!!')


class down_list(threading.Thread):
    def __init__(self, url_list, id):
        threading.Thread.__init__(self)
        self.id = id
        self.url_list = url_list
    def run(self):
        for i in range(self.id, len(self.url_list), tnum):
            url = self.url_list[i]
            down(url)

def down_all(url_list):
    threads=[]
    for i in range(0, tnum):
        thread = down_list(url_list,i)
        thread.start()
        threads.append(thread)

    for thread in threads:
        thread.join()


url_list = [

]


down_all(url_list)

六,分析m3u8鏈接

有些網(wǎng)站的會員和非會員在同一個網(wǎng)址播放的視頻是不一樣的,比如非會員只有2分鐘可以看。

可以用個簡單的代碼分析m3u8鏈接里面的視頻是長視頻還是短視頻。文章來源地址http://www.zghlxwxcb.cn/news/detail-637423.html

def testUrl(url):
    print(url)
    print('ans:')
    r = requests.get(url)
    m3u8_list = r.text.split('\n')
    m3u8_list = [i for i in m3u8_list if i and i[0] != '#']
    if len(m3u8_list) < 50:
        file = open('D:\\out.txt', 'a')
        file.write(url+"\n")
        file.close()
    else:
        print(url+" ok")

到了這里,關(guān)于python 批量下載m3u8的視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 生成m3u8視頻:批量剪輯與分割的完美結(jié)合

    生成m3u8視頻:批量剪輯與分割的完美結(jié)合

    在視頻處理領(lǐng)域,m3u8視頻格式的出現(xiàn)為高效處理和優(yōu)化視頻內(nèi)容提供了新的可能。尤其在批量剪輯和分割視頻的過程中,掌握m3u8視頻的生成技巧,意味著更高效的工作流程和更出色的創(chuàng)作效果?,F(xiàn)在一起來看看云炫AI智剪如何生成m3u8視頻的操作吧。 步驟1、先執(zhí)行云炫AI智剪

    2024年02月05日
    瀏覽(16)
  • DPlayer m3u8 視頻禁止下載

    正常的 m3u8 格式視頻通過控制臺是無法下載的,但是可以通過插件下載,下面介紹如何規(guī)避這個問題。 思路: 后端生成一個一次性的密鑰,前端放在請求頭中 ,可以防止大部分插件下載。這里只說前端。 集成 DPlayer 播放器這里就不說了,網(wǎng)上一大推。

    2024年01月24日
    瀏覽(22)
  • ffmpeg 下載網(wǎng)上m3u8的視頻文件

    FFmpeg 是一個音視頻領(lǐng)域使用最廣泛的跨平臺開源庫。由C語言編寫,但廣泛的為 C/C++、C#、Java、Python 等主流編程語言所調(diào)用。它集合了幾乎所有的編碼解碼庫與流協(xié)議,幾乎能完美處理音視頻開發(fā)領(lǐng)域的所有需求。 方式一:源碼安裝 FFmpeg 通過編譯源碼安裝 FFmpeg 的優(yōu)點是可

    2023年04月09日
    瀏覽(15)
  • 視頻防盜鏈下載,ffmpeg轉(zhuǎn)m3u8,ts實現(xiàn)視頻切片

    視頻防盜鏈下載,ffmpeg轉(zhuǎn)m3u8,ts實現(xiàn)視頻切片

    最近公司有個需求,要求付費的大視頻防止下載,不卡頓功能。 優(yōu)先使用的是阿里的視頻點播,自己琢磨沒事干,網(wǎng)上很多電影視頻網(wǎng)站是如何做到的呢,然后就是各種搜,得到了一下結(jié)果 這個video標(biāo)簽的src地址是下載不了的,這下和電影網(wǎng)站的一樣了

    2023年04月26日
    瀏覽(13)
  • 如何將頁面m3u8、blob類型的視頻鏈接下載下來?

    如何將頁面m3u8、blob類型的視頻鏈接下載下來?

    有時候訪問頁面遇到喜歡的視頻,會直接使用代碼檢查,找到視頻鏈接直接拷貝下載,但是遇到video標(biāo)簽中的鏈接帶有blob(如圖),直接拷貝訪問是無法下載的。我們需要按以下步驟來實現(xiàn)目的: 1.F12開啟代碼檢查,點擊代碼區(qū),CTR+F調(diào)出搜索框,輸入video,找到video標(biāo)

    2024年02月11日
    瀏覽(31)
  • 【M3U8】python(流視頻數(shù)據(jù))

    【M3U8】python(流視頻數(shù)據(jù))

    現(xiàn)在大部分視頻客戶端都采用HTTP Live Streaming,而不是直接播放MP4等視頻文件(HLS,Apple為了提高流播效率開發(fā)的技術(shù))。HLS技術(shù)的特點是將流媒體切分為若干【TS片段】(比如幾秒一段),然后通過一個【M3U8列表文件】將這些TS片段批量下載供客戶端播放器實現(xiàn)實時流式播放

    2023年04月09日
    瀏覽(24)
  • M3U8在線視頻下載(解決DMM等網(wǎng)站下載的視頻是dcv格式)

    M3U8在線視頻下載(解決DMM等網(wǎng)站下載的視頻是dcv格式)

    1.Edge(或chrome瀏覽器) 2.N_m3u8DL-CLI 1.首先需要你購買的正版視頻文件支持視頻播放,然后在準(zhǔn)備播放界面按F12調(diào)出控制臺選擇網(wǎng)絡(luò),之后再點擊播放,這時候會彈出新的窗口用于播放,在新的窗口再次按F12調(diào)出控制臺,這時候會單獨打開一個控制臺窗口。 2.搜索m3u8找到一個chu

    2024年02月03日
    瀏覽(39)
  • 安卓 Windows 通過ts鏈接獲取m3u8視頻地址進行視頻下載

    安卓 Windows 通過ts鏈接獲取m3u8視頻地址進行視頻下載

    目錄 環(huán)境: 解決思路及過程: .TS—— .m3u8 1.利用安卓視頻緩存機制合成視頻 1.1 找到鯊魚瀏覽器目錄 1.2 進入Android/data/com.zhijianzhuoyue.sharkbrowser/cashe 緩存目錄 ?1.3 顯示隱藏文件 1.4 進入可以看到兩個隨機生成的視頻文件夾,進入一個即是對應(yīng)視頻播放緩存目錄 1.4 再次進入得

    2024年02月11日
    瀏覽(22)
  • Python爬取m3u8格式的視頻

    Python爬取m3u8格式的視頻

    聲明:本文只作學(xué)習(xí)研究,禁止用于非法用途,否則后果自負(fù),如有侵權(quán),請告知刪除,謝謝! 在某一天,群友分享了一些小視頻,手機端可以正常觀看,但是到了電腦上,輸入網(wǎng)址之后會下載下來一個m3u8格式的文件,這就讓我犯了難。所以我就研究了一下,并使用Python來

    2023年04月13日
    瀏覽(18)
  • 如何使用JAVA實現(xiàn)多線程下載m3u8視頻并且合并代碼親測有效

    如何使用JAVA實現(xiàn)多線程下載m3u8視頻并且合并代碼親測有效

    我們常常在網(wǎng)頁上遇到好看的視頻就想保存起來,可是有的視頻文件是m3u8格式的,有的小伙伴可能就難住了,那么這種視頻文件應(yīng)該下載呢,可能有人會用插件或者其他工具下載,方法也是多種多樣的,其實這種文件就是很多視頻切片成的文件路徑,不能夠直接獲取到視頻流

    2024年02月05日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包