Download encrypted m3u8/HLS videos using parallel downloads. Use when given an m3u8 URL to download a video, especially encrypted HLS streams with AES-128.
支持并行分段下载和自动解密的HLS/m3u8视频下载工具。
如果提供的是网页URL(而非直接m3u8链接),使用浏览器自动化查找流地址:
javascript
// 在浏览器控制台或通过浏览器工具执行
(() => {
// 检查HLS.js播放器实例
if (window.hls && window.hls.url) return window.hls.url;
if (window.player && window.player.hls && window.player.hls.url) return window.player.hls.url;
// 在window对象中搜索m3u8地址
const allVars = Object.keys(window).filter(k => {
try {
return window[k] && typeof window[k] === object &&
window[k].url && window[k].url.includes(m3u8);
} catch(e) { return false; }
});
return allVars.length > 0 ? allVars.map(k => window[k].url) : 未找到;
})()
使用 profile=openclaw(隔离浏览器)以避免浏览器历史记录。
主播放列表列出的是不同质量的变体,而非分段:
bash
curl -s https://example.com/playlist.m3u8
选择最高质量(例如1080p)并获取对应的子播放列表:
bash
BASE_URL=https://example.com
curl -s ${BASE_URL}/1080p/video.m3u8
分段可能使用非标准扩展名(例如 .jpeg 而非 .ts):
bash
mkdir -p /tmp/videodownload && cd /tmp/videodownload
BASE_URL=https://example.com/1080p
curl -s ${BASE_URL}/video.m3u8 | grep -E ^[^#] | while read seg; do
echo ${BASE_URL}/${seg}
done > urls.txt
bash
aria2c -i urls.txt -j 16 -x 16 -s 16 --file-allocation=none -c true \
--console-log-level=warn --summary-interval=30
bash
bash
rm -rf /tmp/video_download
bash
~/clawd/skills/m3u8-downloader/scripts/download.sh https://example.com/video.m3u8 输出文件名
注意:该脚本可能无法处理所有边界情况(主播放列表、非标准扩展名)。对于复杂流,请使用上述手动流程。
在播放列表中查找 #EXT-X-KEY:METHOD=AES-128,URI=enc.key:
bash
curl -s https://example.com/path/enc.key -o enc.key
ffmpeg -allowedextensions ALL -i localplaylist.m3u8 -c copy output.mp4
最终视频保存为 ~/Downloads/<输出文件名>.mp4
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 m3u8-downloader-1776420069 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 m3u8-downloader-1776420069 技能
skillhub install m3u8-downloader-1776420069
文件大小: 3.95 KB | 发布时间: 2026-4-17 18:53