惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
人人都是产品经理
人人都是产品经理
月光博客
月光博客
V
V2EX
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 【当耐特】
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志

obaby 𝐢‍𝐧⃝ void

obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者
m3u8 downloader v26.03.28
2026-03-29 · via obaby 𝐢‍𝐧⃝ void

基于 ffmpeg 的 m3u8 / 归档页解析下载工具,支持单链接、批量 CSV/文本、自定义输出目录与 ffmpeg 路径。

参数 说明
-i 输入:直链 m3u8、含 archives 的归档详情页、或带 cms_player 的播放页;也支持 .mp4 / .avi / .mov / .mpeg 直链(走 HTTP 分段下载,非 ffmpeg)
-o 输出文件名(自动补 .mp4);对部分模式用于覆盖默认标题名
-p 输出目录;可为本机路径或 UNC(如 \\服务器\共享\目录
-f 批量输入文件:.csv 或纯文本(每行一个链接)
-m 指定 ffmpeg 可执行文件路径

注意: 必须提供 -i 或 -f 之一。

单条示例

python m3u8_downloader.py -i "https://example.com/video.m3u8?token=xxx" -o myvideo -p D:\Videos

批量 CSV

  • 编码建议 UTF-8(含 BOM 亦可),表头需包含列 link;可选列 name(用于在部分逻辑里拼接输出名后缀,空单元格按空字符串处理,不会出现 nan 文件名)。
  • 会跳过空的 link 或内容为 link 的占位行。
  • 按行 顺序执行:上一任务结束(含 ffmpeg)后才会处理下一行。
python m3u8_downloader.py -f list.csv -p "\\192.168.1.12\media\Videos"
纯文本列表

每行一个 URL,行为与逐次 -i 类似;可通过 -o 传入统一输出名(视链接类型而定)。

  1. .m3u8 直链
    使用 ffmpeg 拉流并 remux 为 .mp4-c copy)。
  2. URL 中含 archives(归档站 / bl05 类页面)
    请求页面,解析多个 div.dplayer 的 data-config,得到多路 m3u8;按路依次下载,文件名一般为 页面标题 + 序号,并经 safe_mp4_filename 净化。
  3. 其它播放页(非 archives)
    解析 var cms_player = {...} 的 JSON,取 url 作为 m3u8,再走 ffmpeg。
  4. .mp4 等直链
    使用 requests 分段下载(file_download.download_from_url),带 tqdm 进度条,不经过 ffmpeg

抓取 HTML 时依次尝试 UTF-8 → UTF-8-sig → gb18030,减轻标题乱码。

  • 去除 Windows 非法字符,过长截断并可带 crc 后缀兜底。
  • 对「UTF-8 被误当成 latin-1」类乱码标题做启发式纠正(日志中可能出现 [F] 标题疑似 UTF-8/latin-1 乱码,已尝试纠正)。
  • 若目标 .mp4 已存在os.path.isfile),跳过该次下载。
  • 调用 ffmpeg 时带 -n:不在终端交互询问覆盖;若因路径编码等导致检测不一致,ffmpeg 侧也会拒绝覆盖而非静默覆盖。

-f 指向 .m3u8 / .m3u 时,当前代码分支为占位(pass),尚未实现。

路径(相对程序目录) 用途
bin/ffmpeg.exe Windows 打包/放置 ffmpeg 的常见位置
download/m3u8_files 内部与 make_dir 相关的子目录逻辑
download/mp4 未指定 -p 时的默认输出目录

下载地址:

https://www.123912.com/s/ucY7Vv-njQAA?pwd=HwGK#



闺蜜圈APP

obaby

obaby

独立 APP 开发者 偶尔写点东西 希望与过往一刀两断