Install
openclaw skills install @jyt2018/jyt-m3u8-downloaderThis skill should be used when the user wants to download videos from M3U8 streaming URLs. It handles parsing M3U8 playlists (including nested multi-bitrate playlists), downloading TS segments with multi-threading, handling AES-128 encryption keys, and merging segments into MP4 files using ffmpeg. Triggers: download m3u8 video, download streaming video, m3u8 download, download video from URL, download ts segments, HLS video download.
openclaw skills install @jyt2018/jyt-m3u8-downloaderDownload 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 requestsExtract from the user:
scripts/M3u8Download.py to the working directoryrequests is installed in the Python environmentffmpeg is accessible from the command line: ffmpeg -versionUse 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.pyMain 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.