python下载m3u8格式视频

一、安装 m3u8库

复制代码
pip install requests 
pip install requests m3u8

二、编码实现

复制代码
import os
import re
import requests
import subprocess


# 下载ts文件
def down_ts_file(base_url, m3u8_url, download_dir):
    # 从m3u8文件中获取所有ts的分片名称信息
    response = requests.get(base_url + m3u8_url)
    ts_urls = re.findall(r'(\S+\.ts)', response.text)
    ts_file_list = []
    for i, ts_url in enumerate(ts_urls):
        # ts网络地址全路径    
        response = requests.get(base_url + ts_url, stream=True)
        ts_file_list.append(download_dir + f'segment{i}.ts')
        filename = os.path.join(download_dir, f'segment{i}.ts')
        with open(filename, 'wb') as f:
            for chunk in response.iter_content(chunk_size=1024):
                if chunk:
                    f.write(chunk)
        print("分片{}下载完成".format(i))
    return ts_file_list


# 合并ts文件转成MP4
def merge_ts(ts_file_list, output_filename):
    args = '|'.join(ts_file_list)
    print("merge_ts args----"+args)
    command = f'ffmpeg -i "concat:{args}" -c copy {output_filename}'
    subprocess.run(command, shell=True)


def do_crawler():
    m3u8_url = 'mixed.m3u8'
    base_url_list = ["https://v.cdnlz19.com/20241016/50350_17769e38/2000k/hls/"]
    base_download_dir = 'E:/usr/data/UserData/download/{}'
    for i, base_url in enumerate(base_url_list):
        download_dir = base_download_dir.format(i + 1) + "/"
        if not os.path.exists(download_dir):
            os.makedirs(download_dir)
        # 下载的ts分片数据地址,存放在列表中
        ts_file_list = down_ts_file(base_url, m3u8_url, download_dir)
        print(ts_file_list)
        # ts合并后文件的名称
        output_filename = base_download_dir.format(i) + ".mp4"
        merge_ts(ts_file_list, output_filename)
        os.remove(download_dir)
相关推荐
冷雨夜中漫步1 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴1 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再1 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
m0_736919103 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手3 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934733 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy3 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
黎雁·泠崖4 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472464 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威5 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos