如何在本地保存 B 站视频?BBDown 免费下载工具的高清收藏之道
【免费下载链接】BBDownBilibili Downloader. 一个命令行式哔哩哔哩下载器.项目地址: https://gitcode.com/gh_mirrors/bb/BBDown
你有没有遇到过这样的时刻:刷到一个质量极高的教程、一场值得反复回看的演唱会,或者一部随时可能下架的纪录片,想保存下来却无从下手。网页端没有下载按钮,录屏糊成一团,在线转换站要么压缩画质、要么把视频传上别人的服务器。BBDown就是为这个场景而生的一款命令行式哔哩哔哩下载器:完全免费、全程本地处理、最高支持 8K / HDR / 杜比视界,一条命令把视频稳稳收进硬盘。
为什么说"本地下载"才是收藏视频的正解
先别急着看命令,我们花三十秒想清楚一个核心问题:为什么网页端明明能播放,你却下载不下来?
原因在于 B 站的视频被拆成了视频流 + 音频流两条轨道,播放器在网页端实时把它们拼起来给你看。而在线转换网站能下载,靠的是先把你选的视频上传到它自己的服务器再转码——画质打了折扣,隐私也打了折扣。BBDown 的思路完全不同:
- 它在你的电脑上直接调用 B 站接口解析出真实流地址;
- 视频和音频流分别下载到本地;
- 再用 ffmpeg(或 mp4box)像拼积木一样把两条轨道无缝合并成一个 MP4。
整个过程数据不离开你的电脑,下载什么画质就是什么画质,没有中间商赚差价。这正是它和在线工具的本质区别。
从零到一:让第一个视频稳稳落进硬盘
第一步,装好工具本体
如果你机器上有 .NET 环境,一条命令就完成安装:
# 全局安装 BBDown 工具,之后任意目录都能直接使用 dotnet tool install --global BBDown没有 .NET 环境也完全不用慌:项目在 Release 里提供了各平台的预编译可执行文件,下载解压即可运行;项目根目录还带了 Dockerfile,后面我们会看到服务器场景怎么用它。混流环节需要外部程序ffmpeg(或 mp4box),装好后请确认终端里能直接敲出ffmpeg命令,否则合并那一步会报错。
第二步,执行你的第一次下载
# 直接粘贴视频链接,程序会自动解析信息 BBDown "https://www.bilibili.com/video/BV1qt4y1X7TW"首次运行时,你会看到一个漂亮的二维码界面——那是登录入口。先不急着登录,程序依然能下载,只是画质被限制在 1080P 以下。如果想先看看"能下载到什么程度",可以用-info参数只解析不下载,把视频的标题、分 P、可用画质一览无余:
# 仅解析视频信息,不实际下载,适合先探路 BBDown -info "https://www.bilibili.com/video/BV1qt4y1X7TW"下载完成后,当前目录里出现的 MP4 就是"视频 + 音频 + 字幕 + 封面"合并后的完整成品,连视频简介、UP 主信息都写进了文件的元数据里。
第三步,掌握画质选择的主动权
B 站有个特点:同一部视频往往有 AVC、HEVC、AV1 三种编码,和从 360P 到 8K 的好几档画质。BBDown 默认会挑一个"最优组合",但你可以用参数完全掌控:
# 画质优先级:8K > 1080P高码率 > HDR,逗号分隔即可 BBDown "视频链接" -q "8K 超高清, 1080P 高码率, HDR 真彩" # 编码优先级:优先 HEVC(H.265),体积小画质高 BBDown "视频链接" -e "hevc,avc,av1"拿不准的时候,加一个-ia(交互式)参数,程序会把所有可用流列成清单让你手动勾选,选择恐惧症也不怕。
解锁高画质的那把钥匙:扫码登录
前面说过,不登录最多 1080P。B 站把高画质、高码率视作会员权益,BBDown 对此的解法很干净——扫码登录,让程序获得你账号的访问能力:
# 登录网页账号,终端会显示二维码,用手机 B 站 App 扫一下即可 BBDown login # 登录云视听小电视(TV 端)账号,部分 UP 主片源可拿无水印版本 BBDown logintv登录成功后凭证会自动保存,下次下载高画质内容不再需要重复操作。如果你更习惯手动方式,也可以用-c粘贴 cookie、用-token传入 access_token,两种方式等价:
# 手动传入网页 cookie,注意保留引号 BBDown -c "SESSDATA=你的凭证" "视频链接"值得一提的隐藏技巧:TV 登录产生的 token 可以直接给 App 接口复用(把BBDownTV.data复制成BBDownApp.data即可),遇到某些只对 App 端开放的资源时非常管用。
把"一个视频"升级成"一批视频":合集与批量下载
BBDown 真正拉开差距的地方,是它不只是单个视频下载器。收藏夹、个人空间、系列合集、番剧、课程,它通通能整批拿下。看几个高频用法:
# 下载番剧/课程全集(ALL 表示全部,也可写 1-10 或 1,3,5) BBDown -p ALL "https://www.bilibili.com/bangumi/play/ss33073" # 下载某个 UP 主个人空间里的全部视频 BBDown "https://space.bilibili.com/你的UP主ID/video" # 下载收藏夹内容 BBDown -p ALL "收藏夹链接"批量场景下,最贴心的两个参数是下载间隔和自定义文件名。前者避免短时间高频请求给服务器造成压力,后者让落盘文件整齐有序:
# 每个分 P 之间等待 2 秒,温柔一点 BBDown -p ALL "合集链接" --delay-per-page 2 # 自定义文件名:上传者_主标题_清晰度 BBDown "视频链接" -F "<ownerName>_<videoTitle>_<dfn>" # 多 P 场景:按 主标题/分P序号_分P标题 的目录结构存放 BBDown "合集链接" -M "<videoTitle>/[P<pageNumberWithZero>]<pageTitle>"-F和-M支持的内置变量很丰富:<videoTitle>主标题、<pageTitle>分 P 标题、<bvid>视频编号、<res>分辨率、<fps>帧率、<publishDate>发布时间……几乎能拼出任何你想要的文件命名规则,这对后续整理素材库、按时间归档都特别有用。
三类人,三个立刻能用的实战配方
🎓 学习者:整门课搬到本地,离线也能学
# 下载一门课程的全部课时,间隔 3 秒,按课时序命名 BBDown -p ALL "课程链接" --delay-per-page 3 \ -M "<videoTitle>/第<pageNumberWithZero>讲_<pageTitle>"🎬 创作者:把 B 站当素材库,只要音轨/字幕/封面
# 只要音频(适合做混音、播客素材),再转成 mp3 BBDown "视频链接" --audio-only -f mp3 # 只取封面当配图,或只下字幕做参考 BBDown "视频链接" --cover-only BBDown "视频链接" --sub-only # 弹幕也是宝藏:把高能弹幕存下来做热梗分析 BBDown "视频链接" --download-danmaku🛠 开发者/运维者:把下载能力变成可调用的服务
这是很多人没注意到的高级形态:BBDown 能以服务器模式运行,把下载能力封装成 HTTP API,供自己的脚本或管理界面调用。
# 启动 API 服务器,监听 12450 端口 BBDown serve -l http://0.0.0.0:12450启动后,你可以用 curl 直接提交下载任务:
# 提交一个任务:只传 URL 即可,其余参数可选 curl -X POST -H 'Content-Type: application/json' \ -d '{ "Url": "BV1qt4y1X7TW" }' \ http://localhost:12450/add-task # 查询运行中的任务列表 curl http://localhost:12450/get-tasks/runningAPI 还提供任务进度、完成列表、移除已完成任务等接口,字段定义在项目的json-api-doc.md里有完整说明。更省事的是 Docker 部署——项目自带的Dockerfile会把 ffmpeg 一并装好,直接起一个常驻容器当下载服务:
# 构建并启动 BBDown 服务器容器(默认监听 23333 端口) docker build -t bbdown . docker run -d -p 23333:23333 bbdown配置文件:把常用参数固化下来,告别每次手敲
高频参数反复敲很烦?BBDown 支持读取本地配置文件(默认是程序同目录下的BBDown.config),把常用选项一次性写进去。配置文件的语法很简单:每两行一组,第一行是参数名,第二行是参数值,#开头表示注释。一个典型示例:
# BBDown 配置文件示例,未在命令行指定的选项会从这里读取 # 输出文件名:主标题[清晰度] --file-pattern <videoTitle>[<dfn>] # 多 P 场景下按目录存放 --multi-file-pattern <videoTitle>/[P<pageNumberWithZero>]<pageTitle>[<dfn>] # 批量下载时每个分 P 间隔 2 秒 --delay-per-page 2 # 默认开启弹幕下载 --download-danmaku注意一个细节:命令行的优先级高于配置文件。也就是说配置文件里设了间隔 2 秒,你手动加--delay-per-page 0会覆盖它,这给了临时任务足够的灵活性。解析逻辑写在BBDown/BBDownConfigParser.cs,好奇实现的话可以直接翻源码。
新手最容易踩的坑,以及对应的正确姿势
坑一:合并失败,报 ffmpeg 相关错误。九成是没装 ffmpeg,或版本太老。杜比视界内容需要 ffmpeg 5.0 以上或新版 mp4box,升级后再试。
坑二:怎么下载还是 360P?大概率是没登录。高画质与账号权限强绑定,先执行BBDown login扫码,或检查-c传入的 cookie 是否过期。
坑三:大批量下载时机器卡死。服务器模式目前不限制并发任务数,短时间塞太多任务会耗尽资源。合理做法是串行提交、配合--delay-per-page拉长间隔,或自己在脚本层加队列。
坑四:某些视频下载很慢。试试多线程(默认已开启)和 aria2c 引擎,它对多连接的利用率更高:
# 调用 aria2c 下载,可附加并发参数 BBDown "视频链接" -aria2 --aria2c-args "-x16 -s16 -j16 -k 5M"另外记得尊重版权:BBDown 只提供下载能力,请把它用于个人学习、研究或已获授权的内容,别拿来做商业分发。
现在,去收下你的第一个视频
回头看开头的那个困境:网页端下不了、在线工具不放心——BBDown 用"本地解析、本地下载、本地混流"的方式,把画质选择权、文件命名权、批量调度权全部交还给你。从单个视频到整部番剧,从 720P 到 8K 杜比视界,从手动命令到 HTTP API,它都能稳稳接住。
如果这是你第一次接触它,行动清单只有一行:
dotnet tool install --global BBDown && BBDown "你收藏夹里的第一个视频链接"下载完成、听到文件落盘的瞬间,你会明白什么叫"收藏得踏实"。赶紧去试试吧——你的硬盘,值得被高清内容填满。
【免费下载链接】BBDownBilibili Downloader. 一个命令行式哔哩哔哩下载器.项目地址: https://gitcode.com/gh_mirrors/bb/BBDown
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考