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.
Before executing, ensure the following are available:
requests library installed: pip install requests
Extract from the user:
scripts/M3u8Download.py to the working directory
requests is installed in the Python environment
ffmpeg is accessible from the command line: ffmpeg -version
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
)
| 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 |
EXT-X-STREAM-INF), automatically follows the redirect to the media playlist.
EXT-X-KEY, the encryption key is downloaded (or uses the provided base64_key).
num_retries times.
base64_key.
scripts/M3u8Download.py
Main download script containing the M3u8Download class. This is the primary script to use for all M3U8 download operations.
os.startfile() is used to open the output directory after download completes.
scripts/ - use it as-is.
共 1 个版本