当前位置: 首页 > news >正文

python 批量下载m3u8的视频

 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:点击跳转

方法:

解析m3u8,获取其中的ts列表,多线程下载所有ts文件。

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

代码:

import requests
import os
import threadingtnum = 64class Downloader(threading.Thread):def __init__(self, id, url, ts_list, file_path):threading.Thread.__init__(self)self.id = idself.url = urlself.ts_list = ts_listself.file_path = file_pathdef 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 Falsem3u8_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_urlts_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 endflagdef 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 endflagendflag = Falseif 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)

http://www.lryc.cn/news/122183.html

相关文章:

  • 最后一击
  • K8S资源管理方式
  • 第三章 图论 No.9有向图的强连通与半连通分量
  • 回归预测 | MATLAB实现基于PSO-LSSVM-Adaboost粒子群算法优化最小二乘支持向量机结合AdaBoost多输入单输出回归预测
  • Mysql 和Oracle的区别
  • 在收藏夹里“积灰”的好东西——“收藏从未停止,行动从未开始”
  • 【算法|数组】双指针
  • asp.net core6 webapi 使用反射批量注入接口层和实现接口层的接口的类到ioc中
  • 【2023】字节跳动 10 日心动计划——第九关
  • 小龟带你敲排序之冒泡排序
  • Nacos AP架构集群搭建(Windows)
  • nodejs+vue+elementui,图书评论管理系统_g9e3a
  • 基于TorchViz详解计算图(附代码)
  • 解决GitHub的速度很慢的几种方式
  • 设计模式再探——策略模式
  • 基于Googlenet深度学习网络的人员行为动作识别matlab仿真
  • 存储过程的学习
  • zookeeperAPI操作与写数据原理
  • 防火墙对双通道协议的处理
  • vscode搭建c语言环境问题
  • 全网最全的接口自动化测试教程
  • 数据结构----结构--线性结构--链式存储--链表
  • 【5G 核心网】5G 多PDU会话锚点技术介绍
  • K8s环境下监控告警平台搭建及配置
  • 微信小程序在使用vant组件库时构建npm报错
  • Django实现音乐网站 ⑽
  • SpringMVC的架构有什么优势?——异常处理与文件上传(五)
  • 【java面向对象中static关键字】
  • 系统学习Linux-Redis集群
  • 【每日随笔】帝王心术 ② ( 如何培养下一代 | 重点培养孩子某一项特长 | 价值观培养 | 独立思考 | 人性和谋略教育 | 资源传承 | 人生指引 )