当前位置: 首页 > news >正文

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

适用场景:网页视频没有下载按钮,用开发者工具抓到 m3u8 播放列表,需要下载并合并为完整 mp4。
前置工具:ffmpeg(开源免费,下文有安装方法)。全文以 Windows 为主,macOS/Linux 命令同理。

一、先搞清楚 m3u8 是什么

m3u8 是 HLS(HTTP Live Streaming)协议的播放列表文件。网站为了播放流畅,把一段视频切成几十上百个几秒钟的.ts小片段,m3u8 就是记录这些片段顺序的"目录"。播放器照着目录逐个播放,用户看到的就是完整视频。

所以下载 m3u8 视频的本质是:按目录把全部 .ts 片段下载下来,再顺序拼接。而 ffmpeg 一条命令就能完成这个过程。

二、安装 ffmpeg

Windows(任选其一):

  • winget install ffmpeg(Win10/11 自带 winget)
  • 或去 ffmpeg.org 下载 release 版本,解压后把bin目录加入系统 PATH

macOSbrew install ffmpeg
Linuxsudo apt install ffmpeg(Debian/Ubuntu)或sudo dnf install ffmpeg(Fedora)

验证安装:ffmpeg -version

三、获取 m3u8 地址

  1. 浏览器打开视频页并开始播放
  2. 按 F12 打开开发者工具 → Network 标签
  3. 筛选框输入m3u8,刷新页面
  4. 在请求列表中找到.m3u8文件(可能有多个,选带1080p/720p等清晰度标识的那个)
  5. 右键 → Copy → Copy link address

四、下载并合并(核心命令)

ffmpeg-i"https://example.com/playlist.m3u8"-ccopy output.mp4
  • -i:输入文件(m3u8 地址)
  • -c copy:直接复制音视频流,不重新编码,速度极快且无损
  • output.mp4:输出文件名

跑完当前目录下就会出现完整的 mp4。

五、常见问题与解决

5.1 报 403 Forbidden(防盗链)

很多网站校验 Referer 和 User-Agent,ffmpeg 默认不带这些头。手动加上:

ffmpeg-headers"Referer: https://example.com"-user_agent"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"-i"https://example.com/playlist.m3u8"-ccopy output.mp4

Referer 填视频所在页面的地址。如果还不行,说明需要登录态(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.mp4

5.4 需要登录的视频(仅限自己账号有权访问的内容)

如果你已登录该网站、且账号本身有权限观看这个视频,可以复用浏览器的登录态来下载。ffmpeg 通过-headers手动带上 Cookie(先打开 F12 → Network 里复制请求头的 Cookie 值):

ffmpeg-headers"Referer: https://example.com"-headers"Cookie: session_id=xxxx; vip=1"-i"https://example.com/playlist.m3u8"-ccopy output.mp4

更省事的方案是用 yt-dlp(见本系列另一篇),它支持--cookies-from-browser直接读取浏览器登录态。
⚠️ 只允许用自己的账号下载自己有权访问的内容;不要借用他人登录态,更不要用它去拿会员/付费专享内容。

5.5 指定清晰度

HLS 的清晰度选择有两种情况:

  • 抓到的是主播放列表(里面嵌套多个清晰度子列表):把主列表里的某个清晰度子列表地址拿出来作为-i输入
  • 或者直接在主列表后面加参数指定(需要该站点支持):
ffmpeg-i"https://example.com/master.m3u8"-ccopy-bsf:aaac_adtstoasc-fmp4 output.mp4

六、批量下载:一个 for 循环

把链接放进urls.txt,每行一个:

whilereadurl;doffmpeg-y-i"$url"-ccopy"$(basename$url .m3u8).mp4"done<urls.txt

七、写在最后

  • 以上方法仅适用于自己有权访问的内容(免费公开、已购买、平台允许下载的资源)。
  • 付费课程、会员专享、受 DRM 保护的视频,不要尝试绕过——既违法也违背技术人的底线。
  • ffmpeg 下载合并属于"保存已有内容",不涉及破解,放心用。

下一篇讲 yt-dlp:一个命令搞定绝大多数视频网站。

http://www.jsqmd.com/news/1397370/

相关文章:

  • Windows任务栏美化终极指南:TranslucentTB从入门到精通的完整手册
  • RabbitMQ实战:从零搭建消息队列,掌握高可用与可靠性投递
  • GD32F407使用LAN8720功能
  • Python脚本报错ModuleNotFoundError: No module named ‘win32com‘的完整解决方案
  • 基于YOLOv8/YOLOv10/YOLOv11/YOLOv12与SpringBoot的麻将识别检测系统(千问+DeepSeek智能分析+web交互界面+前后端分离+YOLO数据)
  • Inno Setup 实战指南:从零构建专业 Windows 安装包
  • 2026年长沙能做智慧燃气安全监测管理系统的公司有哪些?
  • B/S 项目相关
  • Python实战:解析B站DASH流媒体协议,构建高效视频下载工具
  • 对比多家不踩坑!苏州黄金回收技巧巧约干货分享 - 资讯早知道
  • 短信接口集成标准化流程与十步法实践
  • Unity游戏翻译插件怎么用?XUnity.AutoTranslator从安装到熟练的完整上手路线
  • GRUB2安装指南:MBR与UEFI双系统引导全解析
  • Git仓库瘦身实战:用BFG Repo-Cleaner清理历史大文件与敏感数据
  • 网络多媒体资源元数据智能解析与合规集成技术实践
  • 模电基础知识
  • BDCU学习-“HSD_OFF诊断”潜在影响
  • Agent应用指南:风起璃月,数载回响:六年、1.0 到 7.0、6969 条微博:原神官博的热度编年史
  • [论文学习]良性指标:恶意域名检测中误报问题的行业视角及其缓解
  • Linux内核开发实战:使用Git与b4工具链高效合入社区补丁
  • Git推送失败:error: failed to push some refs 的全面排查与解决方案
  • ISO45001职业健康安全认证,企业招投标必备资质办理流程 - 中科资质认证报考中心
  • 把 OData 问题拦在前端之前,深入理解 SAP Gateway Client 的测试、复现与性能诊断
  • 域名获取全攻略:一口价、竞价与抢注深度解读
  • 宜兴装修不踩坑,本土圣匠装饰真实解析 - 收录优先
  • 销售一天解释10次的问题,可能就是最值得做AI的场景
  • 美国明尼苏达州超30家水务系统遭网络攻击,发生了什么?
  • CentOS服务器状态查询全攻略:从硬件到实时监控的运维必备命令
  • 在青岛卖黄金如何不被套路?出手前一定要弄懂的几个关键点 - 朝夕热点速报
  • 5分钟上手:XUnity.AutoTranslator游戏自动翻译插件,让Unity游戏彻底告别语言障碍