【Python】 Python脚本实现某平台视频流下载


亲爱的玛丽 我会想念着你
我是多么的讨厌分离
加油站旁的海鸥 机场路上的松柏
挥挥手眼泪就落下来
我多想和那些光阴永远住下来
我不能 我不能
                     🎵 赵雷《玛丽》


在视频内容的分发上,m3u8格式的视频流越来越常见。它将视频切分成多个小片段(TS文件),然后通过索引文件(m3u8文件)来组织播放顺序,有效地支持了视频的流式传输。这篇博客将引导您使用Python脚本来下载m3u8格式的视频流,并将其合并成一个单一的视频文件。

准备工作

在开始之前,请确保你的环境中已安装了Python和requests库。requests库是一个简单易用的HTTP库,用于发送各种HTTP请求。如果还未安装,可以通过以下命令进行安装:

pip install requests

此外,我们还使用了tqdm库来显示下载进度条,使用户体验更友好。若未安装tqdm,可以通过以下命令安装:

pip install tqdm

脚本解析

  1. 设置请求头
    为了模拟浏览器的行为,我们首先设置了请求头headers。这些请求头信息包括User-Agent(用户代理)、Referer(引用页)等,它们有助于我们的请求更像是从正常的浏览器发出,减少被服务器拒绝的可能性。

  2. 解析m3u8文件
    m3u8文件中包含了视频流的所有TS片段的URL。我们首先通过字符串操作提取出所有TS片段的相对路径,并忽略了文件中的注释行(以#EXT开头的行)。

  3. 下载TS片段
    利用requests库遍历并下载每个TS片段。下载过程中,使用tqdm库生成进度条,实时显示下载进度。

  4. 文件合并
    每下载一个TS片段,我们将其内容以追加('ab’模式)的方式写入到目标MP4文件中。由于TS文件是视频流的片段,按顺序合并即可还原完整视频内容。

完整脚本示例

下面是一个完整的脚本示例,展示了如何下载并合并m3u8视频流:

import requests
from tqdm import tqdm
# 设置请求头
headers = {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Connection": "keep-alive",
"Host": "ltscsy.qq.com",
"Origin": "https://v.qq.com",
"Referer": "https://v.qq.com/",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-site",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"sec-ch-ua": 'Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "macOS",
}
# m3u8文件内容
m3u8_content = """
#EXTM3U
#EXT-X-VERSION:3
...
"""tsList = [i for i in m3u8.split('\n') if not i.startswith('#E') if i ]
# 以数字开头
tsList = [i for i in tsList if i[0].isdigit()]for ets in tqdm(tsList):idxList = []idx = ets.split('_')[0]urlPartten = 'https://ltscsy.qq.com/'urlFull = f"{urlPartten}/{ets}"req = requests.get(url=urlFull, headers=headers)with open(f'/Users/xrx/Desktop/test.MP4', 'ab') as f:f.write(req.content)

请将m3u8_content替换为实际的m3u8文件内容,将/path/to/your/video.mp4替换为你想保存的视频文件路径。

总结

通过上述Python脚本,我们可以轻松地下载m3u8格式的视频流,并将其合并成一个完整的视频文件。这个过程不仅有助于视频内容的离线观看,也为视频内容的分析和处理提供了便利。希望这篇博客能够帮助到有类似需求的读者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果App Store上架工具介绍

文章目录 摘要引言正文1. Xcode2. [appuploder](https://www.applicationloader.net/)3. [克魔助手](https://keymob.com/) 4.[ipa guard](https://www.ipaguard.com/)总结参考资料 摘要 苹果App Store作为iOS应用程序的主要分发渠道,上架应用程序需要遵守规定和通…

华为数通方向HCIP-DataCom H12-821题库(多选题:201-220)

第201题 以下关于BGP中Orginator ID属性的描述,正确的是哪些项? A、Originator ID属于公认任意属性 B、当其他BGP Speaker接收到这条路由的时候,将比较收到的0nginator ID和本地的Router ID,如果两个ID相同BGP Speaker会忽略掉这条路由,不做处理 C、当一条路由第一次被RR…

输入与输出

输入(Scanner类) Scanner是java5的新特性,在java.util包里,可以完成用户输入。步骤: 导入java.util包;构造Scanner对象,参数为u标准输入流System.in;使用next()方法系列接收数据 nextBoolean()接收一个布…

后端基础篇- 社区 IDEA 手动 Maven 创建 SpringBoot 项目、Maven 安装与配置环境变量、IDEA 集成 Maven

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Maven 安装与配置环境变量 1.1 下载并解压安装包 1.2 配置本地仓库 1.3 配置阿里云私服 1.4 配置环境变量 2.0 IDEA 集成 Maven 2.1 首先创建一个新项目 2.2 开始…

电商系列之满减

> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…

【4月】组队打卡《山有木Python特征工程极简入门》

活动名称 CDA Club 第2期《山有木兮Python数据分析极简入门》组队打卡 活动介绍 本次打卡活动由CDA俱乐部旗下学术部主办。目的是通过数据分析科普内容,为数据分析爱好者提供学习和交流的机会。方便大家利用碎片化时间在线学习,以组队打卡的形式提升学…

一文读懂:什么是工单系统?市面上有哪些好用的工单系统?

什么是工单管理系统?工单系统如何帮助企业解决管理问题?市面上有哪些好用的工单管理系统?不同工单管理系统适用于什么企业?工单管理系统如何定价? 5000字长文,我写了整整一天!梳理了大家对工单…

framebuffer

framebuffer 1.framebuffer的理解 概念:FrameBuffer,可以译作"帧缓冲",有时简称为 fbdrv,这是一种独立于硬件的抽象图形设备,是Linux为显示设备提供的一个接口,把显存抽象后的一种设备&#xf…

GitHub学生认证

文件、证明之类的一定要用英文。 我先是用有道网页翻译把学信网的报告翻译成了英文,然后截图传上去, 给我这个答复 所以要先2FA认证、支付信息填好。 2FA认证:Github开启2FA双重验证 - 知乎 (zhihu.com) 支付信息:点击Setting…

企业级解决方案:代理IP在网络安全管理和内容过滤中的作用

企业级解决方案中,代理IP在网络安全管理与内容过滤方面发挥着关键作用,具体体现在以下几个方面: 1. 网络访问控制与权限管理: - 企业可以通过配置代理服务器,实现用户级别的认证和授权机制。只有经过验证的员工才能通过…

将一个nextjs项目部署到vercel

注:下面均为AI创作(本人已验证该流程可行) 将一个 Next.js 项目部署到 Vercel 是一个相对直接的过程,因为 Vercel 是由同一个团队开发的,专门为 Next.js 优化。以下是部署一个 Next.js 项目到 Vercel 的基本步骤&…

【学习】软件测试行业 ,有哪些以就业为主的学习侧重点

今天给所有入行软测的同学们,帮大家梳理下以就业为主的学习侧重点,简单来说就是【这些都是重点,圈起来,要考的】,有需要的小伙伴可以往下看。 建议一:一定要学习一门编程语言,再开始使用自动化测…

LC 100.相同的树

100. 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: p [1,2,3], q [1,2,3] 输出&#xff1…

PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第48讲&#…

IPv6-基础概念

IPv6基础概念 IPv6技术特点:精简报文格式、实现自动配置和重新编制、支持层次化网络编制、支持端对端安全、更好的支持Qos、支持移动特性。 五元组:源地址,目的地址,源端口,目的端口,协议。 IPv6报头优势…

gitee 本地文件提交到仓库

一、准备工作 1.下载Git Bash Git Bash官网下载地址 http://www.git-scm.com/download/ 点此跳转 2.注册或登录gitee gitee官网地址 https://gitee.com/ 点此跳转 没有账号选择注册有账号的话直接登陆 3.在gitee中新建一个空的仓库 登陆成功后点进个人主页,点击…

美国免税州详细地址:可用于ChatGPT、MJ、POE、AppStore等订阅服务账单地址填写!

地址1zip_Codecountriesstatecitystreet199654USAAKWasilla2075 E Chickaloon Rd236110USAAL MontgomeryMontgomery372034USAARConway617 Watkins St486303USAAZPrescott330 S Cortez St592805USACAAnaheim505 S Zeyn St680232USACOLakewood1390 S Zephyr St706109USACTWether…

Pygame基础4-多阶段

4-多阶段 原理 本章是对第2章的延续。 我们希望为游戏添加多个阶段,比如开始界面、游戏界面、结束界面等。 为此,我们可以使用一个类来管理游戏的不同阶段。 我们创建了GameManager类,并通过self.status属性表示不同的阶段。 intro阶段…

javaSSM公司招聘管理系统IDEA开发mysql数据库web结构计算机java编程maven项目

一、源码特点 IDEA开发SSM公司招聘管理系统是一套完善的完整企业内部系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发)MAVEN方式加 载,系统具有完整的源代码和…

北京个人车指标摇号攻略

北京个人车指标摇号攻略 随着北京汽车保有量的不断增加,个人车指标的申请和摇号成为了许多市民关注的焦点。对于许多想要在北京拥有自己汽车的市民来说,了解并掌握个人车指标摇号的流程和相关政策显得尤为重要。 一、了解摇号政策 在申请北京个人车指…