M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。“M3U” 和 “M3U8” 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础。
HLS 的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。
HLS 只请求基本的 HTTP 报文,与实时传输协议(RTP)不同,HLS 可以穿过任何允许 HTTP 数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
使用工具 :
https://nilaoda.github.io/N_m3u8DL-CLI/
https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20200218-ebee808-win64-static.zip
命令行选项
N_m3u8DL-CLI.exe <URL|JSON|FILE> [OPTIONS] --workDir Directory 设定程序工作目录--saveName Filename 设定存储文件名(不包括后缀)--baseUrl BaseUrl 设定Baseurl--headers headers 设定请求头,格式 key:value 使用|分割不同的key&value--maxThreads Thread 设定程序的最大线程数(默认为32)--minThreads Thread 设定程序的最小线程数(默认为16)--retryCount Count 设定程序的重试次数(默认为15)--timeOut Sec 设定程序网络请求的超时时间(单位为秒,默认为10秒)--muxSetJson File 使用外部json文件定义混流选项--useKeyFile File 使用外部16字节文件定义AES-128解密KEY--useKeyBase64 Base64String 使用Base64字符串定义AES-128解密KEY--downloadRange Range 仅下载视频的一部分分片或长度--stopSpeed Number 当速度低于此值时,重试(单位为KB/s)--maxSpeed Number 设置下载速度上限(单位为KB/s)--enableDelAfterDone 开启下载后删除临时文件夹的功能--enableMuxFastStart 开启混流mp4的FastStart特性--enableBinaryMerge 开启二进制合并分片--enableParseOnly 开启仅解析模式(程序只进行到meta.json)--enableAudioOnly 合并时仅封装音频轨道--disableDateInfo 关闭混流中的日期写入--noMerge 禁用自动合并--noProxy 不自动使用系统代理--disableIntegrityCheck 不检测分片数量是否完整
编写脚本
$array = Get-Content videolist.txt
foreach ($n in $array)
{ Start-Process .\N_m3u8DL-CLI.exe $n -NoNewWindow -Wait
}