最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)將m3u8視頻轉(zhuǎn)換成mp4的操作步驟

 更新時(shí)間:2024年05月30日 08:49:40   作者:芹小妹_Jessica  
m3u8 是一種基于文本的媒體播放列表文件格式,通常用于指定流媒體播放器播放在線媒體流,MP4是一種基于MPEG-4 Part 12(2015)和MPEG-4 Part 14標(biāo)準(zhǔn)的數(shù)字多媒體容器格式,本文將給大家介紹python實(shí)現(xiàn)將m3u8視頻轉(zhuǎn)換成mp4的操作步驟,需要的朋友可以參考下

首先,網(wǎng)上獲取m3u8視頻

第一種,瀏覽器控制面板下,定位的Sources的tab, 在右側(cè)的XHR/fetch Breakpoints下添加過濾,如下圖所示,如果它訪問的網(wǎng)絡(luò)有對應(yīng)的過濾條件,會斷點(diǎn)暫停,此時(shí)可以獲取到ts文件

第二種,瀏覽器控制面板下,定位到Network的tab,下面子集的tab選中Fetch/XHR, 同時(shí)在搜索框輸入'ts',如下圖所示,重新刷新瀏覽器,如果接口訪問存在對應(yīng)的過濾條件,列表中會有對應(yīng)的訪問接口

其次,將m3u8視頻轉(zhuǎn)換成各個(gè)ts文件

第一步,我們通過python的requests請求m3u8鏈接,它會返回文件的內(nèi)容,m3u8的數(shù)據(jù)結(jié)構(gòu)如下圖所示。具體每個(gè)表示什么意思,網(wǎng)上都可以搜,不具體介紹。主要關(guān)心我們需要的各個(gè)ts。我們通過“\n”將內(nèi)容分開,會發(fā)現(xiàn)ts的前面是不帶“#”號的

根據(jù)自己的情況,ts的鏈接拼完整,通過requests將獲取到的內(nèi)容保存到本地。這里采用并行的方式(asyncio + aiohttp), 將所有的ts下載列表放在asyncio.gather中,aiohttp去請求遠(yuǎn)程ts,達(dá)到并行下載的效果

import requests
import os
import asyncio
import aiohttp
dirname = 'tsLib'
if not os.path.exists(dirname):
    os.mkdir(dirname)

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'}

async def download_ts(session, url, name):
    async with session.get(url, headers=headers) as response:
        data = await response.read()
        with open(os.path.join(dirname, name+'.ts'), mode='wb') as f:
            f.write(data)

async def analysis_m3u8(data):
    filtered_content = data.split("\n")
    tasks = []
    async with aiohttp.ClientSession() as session:
        for index, line in enumerate(filtered_content):
            if not line.startswith('#'):
                url = f'https://c-vod.hw-cdn.xiaoeknow.com/522ff1e0vodcq1252524126/9f5770b41397757889226643080/{line}'
                name = line.split('.')[0]
                print(name, 'namename')
                tasks.append(download_ts(session, url, name))
        await asyncio.gather(*tasks)
        print("Downloads completed.")

def get_m3u8(url):
    response = requests.get(url=url, headers=headers)
    m3u8_data = response.text
    return m3u8_data.strip()

async def main():
    m3u8_url = "https://c-vod.hw-cdn.xiaoeknow.com/522ff1e0vodcq1252524126/9f5770b41397757889226643080/playlist_eof.m3u8?sign=e6575d5fa9576eedbbc505cd53ca9ab5&t=66296146&us=xicXbvVMwn"
    m3u8_data = get_m3u8(m3u8_url)
    await analysis_m3u8(m3u8_data)

asyncio.run(main())

最后,將ts文件合并為mp4文件

這里主要采用ffmpeg方式將ts合并為mp4, 但因?yàn)樯厦嫦螺d的順序按照ts名字來的,不一定有順序。所以我采用將m3u8獲取文件的順序、數(shù)組存儲,然后合并ts

import os
import subprocess

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'}


def get_m3u8(url):
    response = requests.get(url=url, headers=headers)
    m3u8_data = response.text
    return m3u8_data.strip()

def getFiles():
    m3u8_url = "https://c-vod.hw-cdn.xiaoeknow.com/522ff1e0vodcq1252524126/9f5770b41397757889226643080/playlist_eof.m3u8?sign=e6575d5fa9576eedbbc505cd53ca9ab5&t=66296146&us=xicXbvVMwn"
    m3u8_data = get_m3u8(m3u8_url)
    filtered_content = m3u8_data.split("\n")
    files = []
    for index, line in enumerate(filtered_content):
        if not line.startswith('#'):
            name = line.split('.')[0]
            files.append(f'{name}.ts')
    return files

def merge_ts_to_mp4(ts_dir, output_mp4):
    files = getFiles()
    # Sort the filenames based on the numbers after the underscore
    ts_files = [f for f in files if f.endswith('.ts')]
    ts_paths = [os.path.join(ts_dir, f) for f in ts_files]
    print(ts_paths, '00999')
    # Generate a list of arguments for ffmpeg command
    ffmpeg_args = ['ffmpeg', '-i', 'concat:' + '|'.join(ts_paths), '-c', 'copy', output_mp4]

    # Run ffmpeg command
    subprocess.run(ffmpeg_args)

    print("Merged all .ts files into", output_mp4)

# Example usage:
ts_dir = 'tsLib'
output_mp4 = 'merge_ts.mp4'



merge_ts_to_mp4(ts_dir, output_mp4)

以上就是python實(shí)現(xiàn)將m3u8視頻轉(zhuǎn)換成mp4的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于python m3u8轉(zhuǎn)mp4的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python讀取文件的三種方式總結(jié)

    Python讀取文件的三種方式總結(jié)

    Python的文本處理是經(jīng)常碰到的一個(gè)問題,非常重要的,這篇文章主要和大家分享的是3個(gè)Python讀取文本文件內(nèi)容的常用方法,希望對大家深入學(xué)習(xí)Python有所幫助
    2023-07-07
  • Python基于域相關(guān)實(shí)現(xiàn)圖像增強(qiáng)的方法教程

    Python基于域相關(guān)實(shí)現(xiàn)圖像增強(qiáng)的方法教程

    當(dāng)在圖像上訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型時(shí),通過對由數(shù)據(jù)增強(qiáng)生成的更多圖像進(jìn)行訓(xùn)練,可以使模型更好地泛化。本文將為大家介紹Python基于域相關(guān)的圖像增強(qiáng)實(shí)現(xiàn)方法,需要的可以了解一下
    2022-01-01
  • Python解析json代碼實(shí)例解析

    Python解析json代碼實(shí)例解析

    這篇文章主要介紹了Python解析json代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python上下文管理器高級用法全解析

    Python上下文管理器高級用法全解析

    這篇文章主要介紹了Python上下文管理器高級用法全解,上下文管理器是Python中一種強(qiáng)大的特性,它允許我們以一種簡潔、優(yōu)雅的方式管理資源,通過掌握上下文管理器的高級應(yīng)用,我們可以編寫更加安全、可維護(hù)的代碼,需要的朋友可以參考下
    2026-05-05
  • python turtle繪圖命令及案例

    python turtle繪圖命令及案例

    這篇文章主要給大家分享的是python turtle繪圖命令及案例,繪圖有很多命令,可以劃分為三種:畫筆運(yùn)動(dòng)命令、畫筆控制命令、全局控制命令,下面來看看文章的詳細(xì)內(nèi)容吧,需要的朋友可以參考一下
    2021-11-11
  • Python import導(dǎo)入上級目錄文件的方法

    Python import導(dǎo)入上級目錄文件的方法

    這篇文章主要介紹了Python import導(dǎo)入上級目錄文件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 基于Python實(shí)現(xiàn)圖片批量加水印的方法

    基于Python實(shí)現(xiàn)圖片批量加水印的方法

    我們經(jīng)常有有這樣的經(jīng)歷:辛辛苦苦制作的原創(chuàng)圖片、精心拍攝的作品、耗費(fèi)心血設(shè)計(jì)的宣傳圖,剛發(fā)布到網(wǎng)上,沒過多久,就發(fā)現(xiàn)被別人盜用維 權(quán)耗時(shí)耗力,讓人沮喪,今天,我們將深入Python圖片處理的世界,手把手教你如何基于Python實(shí)現(xiàn)圖片批量加水印,需要的朋友可以參考下
    2025-11-11
  • 教你輕松解決selenium打開瀏覽器自動(dòng)退出

    教你輕松解決selenium打開瀏覽器自動(dòng)退出

    這篇文章主要給大家介紹了關(guān)于如何輕松解決selenium打開瀏覽器自動(dòng)退出的相關(guān)資料,Selenium是一個(gè)用于Web應(yīng)用程序測試的工具,Selenium測試直接運(yùn)行在瀏覽器中,今天在打開網(wǎng)頁時(shí),瀏覽器總是一閃而退,需要的朋友可以參考下
    2023-08-08
  • python sklearn包——混淆矩陣、分類報(bào)告等自動(dòng)生成方式

    python sklearn包——混淆矩陣、分類報(bào)告等自動(dòng)生成方式

    今天小編就為大家分享一篇python sklearn包——混淆矩陣、分類報(bào)告等自動(dòng)生成方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python第三方庫h5py_讀取mat文件并顯示值的方法

    Python第三方庫h5py_讀取mat文件并顯示值的方法

    今天小編就為大家分享一篇Python第三方庫h5py_讀取mat文件并顯示值的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02

最新評論

巴彦县| 普格县| 阜宁县| 牡丹江市| 德化县| 唐河县| 厦门市| 柳江县| 都昌县| 城口县| 高雄县| 永善县| 丰原市| 东光县| 晋江市| 弋阳县| 咸丰县| 区。| 文水县| 右玉县| 七台河市| 梁平县| 神农架林区| 闽清县| 柳林县| 思南县| 龙门县| 同德县| 城步| 四川省| 芜湖县| 建德市| 望谟县| 祁阳县| 如皋市| 六枝特区| 汕头市| 肇州县| 区。| 射阳县| 儋州市|