tutorials

如何下载 Bilibili 视频到本地观看(2026 最新教程)

使用 FlowPick 浏览器扩展下载 Bilibili 视频的完整教程,涵盖 HLS 直播流、DASH 视频、普通 MP4 内容、视频识别和浏览器本地保存。
FlowPick 团队
11 分钟阅读
# bilibili # 视频下载 # hls # dash # 教程

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 接下来会:

  1. 并行下载视频和音频分片
  2. 使用在浏览器内运行的 FFmpeg WebAssembly 合并音视频
  3. 将合并后的 MP4 保存到下载文件夹

普通宽带下,20 分钟 1080P 视频通常需要 2-4 分钟。

第六步:下载完成确认

FlowPick 弹窗会显示下载进度。完成后文件保存在浏览器的默认下载目录,直接可以用任意播放器打开。

处理分成多 P 的长视频

B 站允许 UP 主把长视频分成多个"分P"。一部 3 小时纪录片可能上传为 P1、P2、P3,页面上作为播放列表显示。

每个分P 是独立的 DASH 流,需要:

  1. 播放 P1,用 FlowPick 下载
  2. 切换到 P2(或点击侧边栏的分P),播放,下载
  3. 剩余分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 站使用条款限制下载内容的再传播。在法律允许的地区,为个人离线观看而下载处于灰色地带——请自行了解当地法律。不要传播你没有创作的内容。


推荐阅读