← 返回
未分类 中文

m3u8 video downloader

This skill should be used when the user wants to download videos from M3U8 streaming URLs. It handles parsing M3U8 playlists (including nested multi-bitrate...
此技能用于从 M3U8 流媒体链接下载视频,支持解析 M3U8 播放列表(包括嵌套多码率)
jyt2018
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 341
下载
💾 0
安装
1
版本
#download video#hls#latest#m3u8

概述

M3U8 Video Downloader

Overview

Download videos from M3U8/HLS streaming URLs by parsing playlists, downloading TS segments with multi-threading,

handling encrypted streams (AES-128), and merging all segments into a single MP4 file using ffmpeg.

Prerequisites

Before executing, ensure the following are available:

  1. Python 3 with requests library installed: pip install requests
  2. ffmpeg installed and added to system PATH (required for merging TS segments into MP4)
  3. Network access to the M3U8 URL

Workflow

1. Understand the User's Request

Extract from the user:

  • M3U8 URL: The streaming playlist URL (required)
  • Output filename: Name for the saved MP4 file (required, without extension)
  • Base64 key (optional): For encrypted streams that require a manually provided AES-128 decryption key

2. Prepare the Environment

  • Copy scripts/M3u8Download.py to the working directory
  • Ensure requests is installed in the Python environment
  • Verify ffmpeg is accessible from the command line: ffmpeg -version

3. Execute the Download

Use the M3u8Download class from scripts/M3u8Download.py:

from M3u8Download import M3u8Download

M3u8Download(
    m3u8_url="<user_provided_url>",
    file_path="<output_name>",        # Without extension; TS temp dir and final MP4 use this name
    max_workers=64,                   # Concurrent download threads
    num_retries=10,                   # Retry count on download failure
    base64_key=None                   # Optional: base64-encoded AES-128 key for encrypted streams
)

Key Parameters

| Parameter | Description |

|-----------|-------------|

| m3u8_url | M3U8 playlist URL or local file path |

| file_path | Base name for temp folder and output MP4 file |

| max_workers | Max concurrent download threads (default: 64) |

| num_retries | Download retry count on failure (default: 10) |

| base64_key | Optional base64-encoded decryption key for AES-128 encrypted streams |

4. What Happens During Download

  1. Parse M3U8: Fetches and parses the M3U8 playlist. If it is a master playlist (contains EXT-X-STREAM-INF), automatically follows the redirect to the media playlist.
  2. Download key: If the playlist specifies EXT-X-KEY, the encryption key is downloaded (or uses the provided base64_key).
  3. Download segments: All TS segments are downloaded concurrently with progress bar display.
  4. Merge: ffmpeg merges all TS segments into a single MP4 file.
  5. Cleanup: After verifying the MP4 file size matches the total TS size (within 10% tolerance), temporary TS files, key file, and M3U8 file are deleted automatically.

5. Handle Errors

  • If ffmpeg is not found, inform the user to install it and add to PATH.
  • If download fails due to network issues, the retry mechanism will attempt num_retries times.
  • If the MP4 output size does not match the TS total size, temporary files are preserved for manual inspection.
  • For encrypted streams without a provided key, the script attempts auto-download; if that fails, ask the user for the base64_key.

Scripts

scripts/M3u8Download.py

Main download script containing the M3u8Download class. This is the primary script to use for all M3U8 download operations.

Notes

  • The script supports both URL-based and local file-based M3U8 inputs.
  • Chinese filenames and paths are supported.
  • On Windows, os.startfile() is used to open the output directory after download completes.
  • Do NOT modify the source code in scripts/ - use it as-is.

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-07 13:51 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 677 📥 325,900
ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,385 📥 321,013
ai-agent

self-improving agent

pskoett
捕获经验教训、错误及修正内容,以实现持续改进。适用于以下场景:(1)命令或操作意外失败;(2)用户纠正Claude(如“不,那不对……”“实际上……”);(3)用户请求的功能不存在;(4)外部API或工具出现故障;(5)Claude发现自身
★ 4,086 📥 814,756