前言
今天大姚给大家分享一款基于 .NET 开源(MIT license)、免费、命令行式的哔哩哔哩视频内容下载工具:BBDown。
工具介绍
BBDown 是一款基于 .NET 开源(MIT license)、免费、命令行式的哔哩哔哩视频内容下载工具。它支持从哔哩哔哩平台下载普通视频、番剧、课程、合集、收藏夹等多类型内容,具备强大的解析能力、灵活的配置选项和高度可扩展性。
注意:本项目仅供个人学习、研究和非商业性用途。用户在使用本工具时,需自行确保遵守相关法律法规,特别是与版权相关的法律条款。
工具功能
- 番剧下载:支持 Web、TV 和 App 接口
- 课程下载:支持 Web 接口
- 普通内容下载:支持 Web、TV 和 App 接口
- 合集/列表/收藏夹/个人空间解析
- 多分P自动下载
- 选择指定分P进行下载
- 选择指定清晰度进行下载
- 下载外挂字幕并转换为srt格式
- 自动合并音频+视频流+字幕流+章节信息 (使用
ffmpeg
或mp4box
) - 单独下载视频/音频/字幕
- 二维码登录账号
- 多线程下载
- 支持调用aria2c下载
- 支持AVC/HEVC/AV1编码
- 支持8K/HDR/杜比视界/杜比全景声下载
- 自定义存储文件名等等......
工具源代码

快速开始
本软件已经以 .NET Tool 形式发布,如果你本地有 .NET 环境,使用如下命令即可安装使用:
csharp
dotnet tool install --global BBDown
如果需要更新BBDown,使用如下命令:
sql
dotnet tool update --global BBDown
支持的命令行参数
lua
Description:
BBDown是一个免费且便捷高效的哔哩哔哩下载/解析软件.
Usage:
BBDown <url> [command] [options]
Arguments:
<url> 视频地址 或 av|bv|BV|ep|ss
Options:
-tv, --use-tv-api 使用TV端解析模式
-app, --use-app-api 使用APP端解析模式
-intl, --use-intl-api 使用国际版(东南亚视频)解析模式
--use-mp4box 使用MP4Box来混流
-e, --encoding-priority <encoding-priority> 视频编码的选择优先级, 用逗号分割 例: "hevc,av1,avc"
-q, --dfn-priority <dfn-priority> 画质优先级,用逗号分隔 例: "8K 超高清, 1080P 高码率, HDR 真彩, 杜比视界"
-info, --only-show-info 仅解析而不进行下载
--show-all 展示所有分P标题
-aria2, --use-aria2c 调用aria2c进行下载(你需要自行准备好二进制可执行文件)
-ia, --interactive 交互式选择清晰度
-hs, --hide-streams 不要显示所有可用音视频流
-mt, --multi-thread 使用多线程下载(默认开启)
--video-only 仅下载视频
--audio-only 仅下载音频
--danmaku-only 仅下载弹幕
--sub-only 仅下载字幕
--cover-only 仅下载封面
--debug 输出调试日志
--skip-mux 跳过混流步骤
--skip-subtitle 跳过字幕下载
--skip-cover 跳过封面下载
--force-http 下载音视频时强制使用HTTP协议替换HTTPS(默认开启)
-dd, --download-danmaku 下载弹幕
--skip-ai 跳过AI字幕下载(默认开启)
--video-ascending 视频升序(最小体积优先)
--audio-ascending 音频升序(最小体积优先)
--allow-pcdn 不替换PCDN域名, 仅在正常情况与--upos-host均无法下载时使用
-F, --file-pattern <file-pattern> 使用内置变量自定义单P存储文件名:
<videoTitle>: 视频主标题
<pageNumber>: 视频分P序号
<pageNumberWithZero>: 视频分P序号(前缀补零)
<pageTitle>: 视频分P标题
<bvid>: 视频BV号
<aid>: 视频aid
<cid>: 视频cid
<dfn>: 视频清晰度
<res>: 视频分辨率
<fps>: 视频帧率
<videoCodecs>: 视频编码
<videoBandwidth>: 视频码率
<audioCodecs>: 音频编码
<audioBandwidth>: 音频码率
<ownerName>: 上传者名称
<ownerMid>: 上传者mid
<publishDate>: 收藏夹/番剧/合集发布时间
<videoDate>: 视频发布时间(分p视频发布时间与<publishDate>相同)
<apiType>: API类型(TV/APP/INTL/WEB)
默认为: <videoTitle>
-M, --multi-file-pattern <multi-file-pattern> 使用内置变量自定义多P存储文件名:
默认为: <videoTitle>/[P<pageNumberWithZero>]<pageTitle>
-p, --select-page <select-page> 选择指定分p或分p范围: (-p 8 或 -p 1,2 或 -p 3-5 或 -p ALL 或 -p LAST 或 -p 3,5,LATEST)
--language <language> 设置混流的音频语言(代码), 如chi, jpn等
-ua, --user-agent <user-agent> 指定user-agent, 否则使用随机user-agent
-c, --cookie <cookie> 设置字符串cookie用以下载网页接口的会员内容
-token, --access-token <access-token> 设置access_token用以下载TV/APP接口的会员内容
--aria2c-args <aria2c-args> 调用aria2c的附加参数(默认参数包含"-x16 -s16 -j16 -k 5M", 使用时注意字符串转义)
--work-dir <work-dir> 设置程序的工作目录
--ffmpeg-path <ffmpeg-path> 设置ffmpeg的路径
--mp4box-path <mp4box-path> 设置mp4box的路径
--aria2c-path <aria2c-path> 设置aria2c的路径
--upos-host <upos-host> 自定义upos服务器
--force-replace-host 强制替换下载服务器host(默认开启)
--save-archives-to-file 将下载过的视频记录到本地文件中, 用于后续跳过下载同个视频
--delay-per-page <delay-per-page> 设置下载合集分P之间的下载间隔时间(单位: 秒, 默认无间隔)
--host <host> 指定BiliPlus host(使用BiliPlus需要access_token, 不需要cookie, 解析服务器能够获取你账号的大部分权限!)
--ep-host <ep-host> 指定BiliPlus EP host(用于代理api.bilibili.com/pgc/view/web/season, 大部分解析服务器不支持代理该接口)
--tv-host <tv-host> 自定义tv端接口请求Host(用于代理api.snm0516.aisee.tv)
--area <area> (hk|tw|th) 使用BiliPlus时必选, 指定BiliPlus area
--config-file <config-file> 读取指定的BBDown本地配置文件(默认为: BBDown.config)
--version Show version information
-?, -h, --help Show help and usage information
Commands:
login 通过APP扫描二维码以登录您的WEB账号
logintv 通过APP扫描二维码以登录您的TV账号
serve 以服务器模式运行
功能演示


项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。
- GitHub开源地址: github.com/nilaoda/BBD...
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。
- GitHub开源地址: github.com/YSGStudyHar...
- Gitee开源地址: gitee.com/ysgdaydayup...