ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ffmpeg 实战:下载 m3u8 视频并合并为 mp4 的完整方案

ffmpeg 实战:下载 m3u8 视频并合并为 mp4 的完整方案 适用场景网页视频没有下载按钮用开发者工具抓到 m3u8 播放列表需要下载并合并为完整 mp4。前置工具ffmpeg开源免费下文有安装方法。全文以 Windows 为主macOS/Linux 命令同理。一、先搞清楚 m3u8 是什么m3u8 是 HLSHTTP Live Streaming协议的播放列表文件。网站为了播放流畅把一段视频切成几十上百个几秒钟的.ts小片段m3u8 就是记录这些片段顺序的目录。播放器照着目录逐个播放用户看到的就是完整视频。所以下载 m3u8 视频的本质是按目录把全部 .ts 片段下载下来再顺序拼接。而 ffmpeg 一条命令就能完成这个过程。二、安装 ffmpegWindows任选其一winget install ffmpegWin10/11 自带 winget或去 ffmpeg.org 下载 release 版本解压后把bin目录加入系统 PATHmacOSbrew install ffmpegLinuxsudo apt install ffmpegDebian/Ubuntu或sudo dnf install ffmpegFedora验证安装ffmpeg -version三、获取 m3u8 地址浏览器打开视频页并开始播放按 F12 打开开发者工具 → Network 标签筛选框输入m3u8刷新页面在请求列表中找到.m3u8文件可能有多个选带1080p/720p等清晰度标识的那个右键 → Copy → Copy link address四、下载并合并核心命令ffmpeg-ihttps://example.com/playlist.m3u8-ccopy output.mp4-i输入文件m3u8 地址-c copy直接复制音视频流不重新编码速度极快且无损output.mp4输出文件名跑完当前目录下就会出现完整的 mp4。五、常见问题与解决5.1 报 403 Forbidden防盗链很多网站校验 Referer 和 User-Agentffmpeg 默认不带这些头。手动加上ffmpeg-headersReferer: https://example.com-user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36-ihttps://example.com/playlist.m3u8-ccopy output.mp4Referer 填视频所在页面的地址。如果还不行说明需要登录态Cookie见 5.4。5.2 下载到一半中断HLS 下载是顺序进行的中断后重新执行同一条命令即可不会破坏已下载的内容ffmpeg 会从头重新下载所以尽量保证网络稳定。5.3 合并出来没有声音检查你抓的 m3u8 是否只是视频流有些网站音视频分离F12 里可能有两条 m3u8一个 .m3u8 纯视频、一个 .m3u8 纯音频。解决办法抓音视频合流的那条 m3u8通常文件名带av/all/mixed或者用-map 0指定全部流ffmpeg-i...-map0-ccopy output.mp45.4 需要登录的视频仅限自己账号有权访问的内容如果你已登录该网站、且账号本身有权限观看这个视频可以复用浏览器的登录态来下载。ffmpeg 通过-headers手动带上 Cookie先打开 F12 → Network 里复制请求头的 Cookie 值ffmpeg-headersReferer: https://example.com-headersCookie: session_idxxxx; vip1-ihttps://example.com/playlist.m3u8-ccopy output.mp4更省事的方案是用 yt-dlp见本系列另一篇它支持--cookies-from-browser直接读取浏览器登录态。⚠️ 只允许用自己的账号下载自己有权访问的内容不要借用他人登录态更不要用它去拿会员/付费专享内容。5.5 指定清晰度HLS 的清晰度选择有两种情况抓到的是主播放列表里面嵌套多个清晰度子列表把主列表里的某个清晰度子列表地址拿出来作为-i输入或者直接在主列表后面加参数指定需要该站点支持ffmpeg-ihttps://example.com/master.m3u8-ccopy-bsf:aaac_adtstoasc-fmp4 output.mp4六、批量下载一个 for 循环把链接放进urls.txt每行一个whilereadurl;doffmpeg-y-i$url-ccopy$(basename$url .m3u8).mp4doneurls.txt七、写在最后以上方法仅适用于自己有权访问的内容免费公开、已购买、平台允许下载的资源。付费课程、会员专享、受 DRM 保护的视频不要尝试绕过——既违法也违背技术人的底线。ffmpeg 下载合并属于保存已有内容不涉及破解放心用。下一篇讲 yt-dlp一个命令搞定绝大多数视频网站。
返回列表