如何下载 Bilibili 视频到本地观看(2026 最新教程)
B 站是互联网上最有意思的视频平台之一——融合了 YouTube、Reddit 和番剧平台的特质。截至 2025 年,月活用户超过 3.4 亿,内容从手绘动画到大学公开课,从游戏全程速通到 8 小时直播回放应有尽有。
官方 App 允许大会员下载离线观看,但格式是专有的 .blv,只能在 App 里播,只能在下载的那台设备上看,且大会员到期后失效。这和大多数人说的"离线"不是一回事。
本教程介绍如何将 B 站视频下载为标准 MP4 文件,真正留在本地。
B 站实际用的是什么格式?
B 站 2019 年从 Flash 迁移到 HTML5 视频,大多数内容现在通过 DASH(动态自适应 HTTP 流媒体) 传输,这意味着:
- 视频轨道和音频轨道以独立流传输
- 每条轨道被切成几百个小的
.m4s分片 - 一个中央 MPD 清单文件描述所有内容的位置
在 B 站页面打开开发者工具看 Network 面板,通常会看到一个 JSON API 响应,里面包含 MPD URL 或分片 URL 列表——不是直链 .mp4。那个 JSON 响应就是播放器用来构建 DASH 流的数据。
直播(live.bilibili.com)切换到 HLS/M3U8 而非 DASH,走的是完全不同的传输管道。关于 M3U8 的工作原理,参见 HLS 下载完整指南。
番剧和 UP 主投稿的格式区别
值得一说:B 站的内容并非铁板一块。UP 主普通投稿和番剧/大会员专区在后台走的不是同一套分发逻辑:
| 内容类型 | 传输格式 | 说明 |
|---|---|---|
| UP 主普通投稿 | DASH(.m4s) | 大多数日常视频 |
| 番剧正片 | DASH(.m4s) | 需要登录,部分需要大会员 |
| 互动视频 | DASH + 特殊分支逻辑 | FlowPick 捕获播放的分支 |
| 直播 | HLS(.m3u8) | 走完全不同的管道 |
| 直播回放 | DASH(.m4s) | 直播结束后转为静态流 |
FlowPick 对这几种都能处理,但操作节奏略有不同——主要差别在于番剧有更严格的 CDN 签名令牌,有效期更短,要尽量一次性下载完。
画质等级说明
B 站的画质比较容易搞混,因为有些分辨率需要登录,有些需要大会员:
| 分辨率 | 要求 |
|---|---|
| 360P | 无需账号 |
| 480P | 免费账号(已登录) |
| 720P | 免费账号(已登录) |
| 1080P | 免费账号(已登录) |
| 1080P+ / 60fps | 大会员 |
| 4K / HDR | 大会员 |
| 杜比视界 | 大会员 |
FlowPick 捕获的是播放器实际传输给你的内容。如果你有大会员,播放器加载高码率流,FlowPick 就能看到那些;免费账号则最高到 1080P 标准。
一步步下载 B 站视频
第一步:安装 FlowPick
从 Chrome 网上应用店 或 Edge 扩展 安装,一键完成,无需注册。
如果你已经登录 B 站,保持登录状态——FlowPick 需要它来访问你账号对应的画质。
第二步:打开视频并开始播放
进入 bilibili.com/video/BVxxxx(任意视频页面),视频必须真正开始播放,不只是打开页面。不自动播放的话点一下播放按钮。
这很重要:B 站播放器直到开始播放才请求 DASH 清单,FlowPick 在等那个请求。
第三步:打开 FlowPick 弹窗
点击浏览器工具栏的 FlowPick 图标,角标上的数字显示检测到的流数量。在 B 站通常会看到:
- 主视频,以 DASH/MPD 条目呈现(可能有多个画质)
- 独立的纯音频条目
- 有时有广告流(文件更小——忽略它们)

第四步:选择视频条目
点击对应你的视频的 DASH 条目(看估计文件大小更大的那个——那是实际内容,不是 30 秒前贴片广告)。
FlowPick 解析 DASH 清单后显示所有可用的画质,选择你想要的分辨率。

第五步:命名并下载
给文件取个名字,设置线程数(默认是2,普通宽带用4-6就够,没必要拉满),点击 Pick。
FlowPick 接下来会:
- 并行下载视频和音频分片
- 使用在浏览器内运行的 FFmpeg WebAssembly 合并音视频
- 将合并后的 MP4 保存到下载文件夹
普通宽带下,20 分钟 1080P 视频通常需要 2-4 分钟。
第六步:下载完成确认
FlowPick 弹窗会显示下载进度。完成后文件保存在浏览器的默认下载目录,直接可以用任意播放器打开。

处理分成多 P 的长视频
B 站允许 UP 主把长视频分成多个"分P"。一部 3 小时纪录片可能上传为 P1、P2、P3,页面上作为播放列表显示。
每个分P 是独立的 DASH 流,需要:
- 播放 P1,用 FlowPick 下载
- 切换到 P2(或点击侧边栏的分P),播放,下载
- 剩余分P 重复操作
如果想合并成一个文件,之后用任意视频编辑器或 ffmpeg 合并:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy combined.mp4
其中 filelist.txt 内容:
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
下载 B 站直播
live.bilibili.com 的直播用 HLS 而非 DASH,过程类似但有关键区别:
- 只能从你开始的那一刻起录制。 没有回拨——如果你错过了前 30 分钟,那些分片已经从 CDN 消失。
- 流 URL 过期很快——通常 30-60 分钟。超时下载可能半途失败。
- 优先找回放 URL。 如果主播开启了录播,回放会变成静态 DASH 流(不是直播 HLS),可以在直播结束后干净下载。
直播捕获场景:早点开始 FlowPick,不要等到有什么精彩时刻再开始。
番剧下载注意事项
番剧的 CDN 令牌有效期通常比普通投稿更短(据用户反馈通常在 2 小时以内),而且可能按 IP 绑定。几个建议:
- 不要在开始下载后切换网络(比如从 WiFi 切到手机热点),会导致令牌验证失败
- 不要让下载任务挂太久。20 分钟的番剧,下载通常 2-3 分钟,一直开着不管然后几小时后回来看——大概率失败了
- 遇到下载失败,直接刷新页面重新检测,重新开始下载就好
常见问题
"检测到 0 个流"
最可能的原因是视频还没开始,试试:
- 手动按播放键
- 等视频缓冲前 5 秒
- 刷新页面(播放器有时初始化状态过期)
还是没有:B 站偶尔把播放器包在 iframe 里。右键视频 → "在新标签页中打开框架" → 在那里试 FlowPick。
下载在 70-80% 时卡住
流 URL 已过期。B 站 CDN 签名 URL 通常有 6 小时有效期,付费内容可能更短。重新加载页面、重新检测、开始新的下载。不要开始后长时间不管。
输出文件没有声音
音频流没有被捕获。通常发生在:
- 视频自动跳到下一个分P
- 弹窗或广告打断了音频流初始化
重新加载,从视频开头播放(不要静音),下载前重新检测。
输出是 .blv 格式
这不是 FlowPick 干的——你不小心用的是官方 B 站 App 的"缓存"功能。确保你用的是浏览器扩展在网页播放器上操作,不是 App。
只下到 360P,明明有大会员
FlowPick 捕获的是播放器实际请求的流。如果页面显示 360P,说明播放器选择了 360P——点击播放器里的画质切换按钮,手动切到高画质再重新检测。
大文件下载
B 站 4K 视频体积可以达到几个 GB。FlowPick 通过浏览器的 File System Access API 做流式写入,不受文件大小限制。下载过程中内存占用稳定,不会因为文件大导致浏览器卡死。
建议用 Chrome 或 Edge 下载大文件——这两个浏览器对 FSA 流式写入支持最完整。
法律说明
FlowPick 捕获的是你的浏览器已经在渲染的视频。B 站使用条款限制下载内容的再传播。在法律允许的地区,为个人离线观看而下载处于灰色地带——请自行了解当地法律。不要传播你没有创作的内容。
推荐阅读
- 什么是 DASH 流媒体?MPD 文件解析 — B 站主要流媒体格式的深度解析
- 如何下载 M3U8/HLS 流:完整入门指南 — B 站直播走 HLS,这篇讲 HLS 的完整操作
- 如何批量下载网页上的所有图片 — 批量抓取 B 站动态和评论区的配图
- FlowPick 与 Video DownloadHelper 对比 — B 站这类 DASH 重度平台的工具对比