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

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

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

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

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

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

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

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

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

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, 但因為上面下載的順序按照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實現(xiàn)將m3u8視頻轉(zhuǎn)換成mp4的操作步驟的詳細內(nèi)容,更多關(guān)于python m3u8轉(zhuǎn)mp4的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

    Python解析json代碼實例解析

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

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

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

    python turtle繪圖命令及案例

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

    Python import導入上級目錄文件的方法

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

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

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

    教你輕松解決selenium打開瀏覽器自動退出

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

    python sklearn包——混淆矩陣、分類報告等自動生成方式

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

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

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

最新評論

昂仁县| 于田县| 抚远县| 荔波县| 长顺县| 金乡县| 宝应县| 九寨沟县| 北海市| 榆林市| 繁峙县| 日土县| 常山县| 新余市| 韶山市| 筠连县| 丹棱县| 永川市| 亚东县| 金沙县| 延长县| 洱源县| 三亚市| 汉寿县| 芜湖市| 凤台县| 彰武县| 收藏| 桐梓县| 黄冈市| 原平市| 凤庆县| 云浮市| 大化| 开平市| 承德县| 濮阳市| 外汇| 怀宁县| 类乌齐县| 射阳县|