5分钟跑通B站CC字幕下载:一条命令把字幕存进本地并转成SRT
【免费下载链接】BiliBiliCCSubtitle一个用于下载B站(哔哩哔哩)CC字幕及转换的工具;项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle
外语课刷到一半,想存下字幕慢慢精听,播放器里却没有导出按钮。BiliBiliCCSubtitle 是个开源 C++ 命令行小工具:直接从 B 站官方接口抓取 CC 字幕存进本地,还能顺手转成 SRT。
直接读官方字幕数据,没有错字问题
录屏加语音转文字,转出来错别字一堆,时间轴还得手动对。
BiliBiliCCSubtitle 走的是另一条路:直接读取官方字幕数据,时间轴、断句、文字全部原样保留,中间不经过任何语音识别,所以不存在识别错字的问题。
它只干两件事:把 CC 字幕从官方接口抓下来存成 JSON,再把 JSON 转成播放器通用的 SRT。整个 B站字幕下载工具 的流程就这两步。
第一次下载怎么跑通
环境要求很低:Windows 10 就能跑,不用装任何运行库。只有想自己从源码编译,才需要 vcpkg、libcurl、jsoncpp 这套依赖。
先拿到工具。运行下面两条命令,克隆完当前目录会多出 BiliBiliCCSubtitle 文件夹:
git clone https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle cd BiliBiliCCSubtitle确认工具就位:运行ccdown -h,终端会打印-d、-c、-s、-e、-D等参数的用法说明,看到这些信息说明可以开工。
下第一条字幕。运行下面的命令,当前目录会新建 downloads 文件夹并开始抓取:
ccdown -d https://www.bilibili.com/video/BV1JE411N7UD打开downloads/BV1JE411N7UD/,看到形如AV号(BV号)-P1.zh-CN.json的字幕文件,就算第一次跑通。视频如果带英文字幕,同目录还会有.en-US.json,按语言各存一份。
批量下前 6 集字幕
常用命令都围绕示例链接https://www.bilibili.com/video/BV1JE411N7UD,你换成自己的视频链接即可。
只下 P2 这一个分P
在链接末尾加?p=2,就只抓这一个分P:ccdown -d 链接?p=2。跑完 downloads 里只有 P2 的 JSON。
批量下第 1 到第 10 集字幕
ccdown -s 1 -e 10 -d 链接,表示从第 1 分P 一直下到第 10 分P,逐集保存。
一个坑贴在这:用-s/-e批量时,链接里不要再带?p=,链接里指定的分 P 会直接覆盖范围设置。
批量下前 6 集字幕
只给上限:ccdown -e 6 -d 链接。反过来,ccdown -s 1 -d 链接表示从 P1 一直下到最后一个分P。这几条是常用的 CC字幕批量下载命令,记熟能省很多事。
下载完顺手转 SRT
下载命令上加一个-c,下完自动转换:ccdown -c -d 链接,省掉再单独跑一次转换。
换保存目录到 D:\字幕
ccdown -D D:\字幕 -d 链接,字幕就存进指定目录。
注意:-D只认已存在的目录,不会帮你自动创建。先用mkdir D:\字幕建好目录再传,否则会报output directory does not existed。
下载国际版 B 站字幕
国际版播放页链接直接传进去就行:ccdown -d https://www.biliintl.com/en/play/1010919/10446796,产物同样落在 downloads 下,按生成的子文件夹查看。
转换手头已有的 JSON
JSON 下过就不用重复下载,直接转:ccdown -c -o 输出.srt 输入.zh-CN.json,其中-o指定输出文件名。另外-o不能和-d同时用,下载模式下写了也会被忽略。
常见报错对照表
| 现象 | 原因 | 处理 |
|---|---|---|
| downloads 文件夹是空的 | 这条视频本身没有 CC 字幕 | 回播放页看播放器下方有没有"字幕"开关,没有就不用试了 |
| 报 output directory does not existed | -D只认已存在的目录 | 先mkdir D:\字幕建好目录,再传给-D |
| 批量下载中途断掉 | 旧版在多 P 视频中间某分 P 没字幕时会中断整个流程 | 更新到最新版重跑,最新版已修复 |
| SRT 时间轴和画面对不上 | 旧版时间轴换算逻辑有 bug | 更新到最新版,重新转换一次 |
带了?p=又加了-s/-e却没按范围下 | 链接里的?p=会覆盖范围参数 | 批量时把链接里的?p=去掉 |
从链接到播放器:完整链路走一遍
全程四步:复制分享链接、下载并转换、找到 SRT、拖进播放器,最后字幕在播放器里亮起。
在 B 站打开带 CC 字幕的视频,点分享按钮复制链接。
跑这条下载加自动转换的命令,跑完当前目录会多出 .json 和 .srt 两种文件:
ccdown -c -d https://www.bilibili.com/video/BV1JE411N7UD打开downloads/BV1JE411N7UD/,JSON 旁边已经有了 .srt 文件。
把 .srt 和视频改成同名、放进同一文件夹,拖进 MX Player、VLC 这类播放器,字幕自动加载。想把字幕带到手机精听也一样:SRT 和视频传到手机,外挂字幕照常生效。
顺着四个源码文件读一遍
想研究实现的话,源码结构很清爽,四个 .cpp 文件各管一摊:
ccjson_downloader.cpp:解析播放页、从官方接口抓字幕;ccjson_convert.cpp:把 JSON 换算成带时间轴的 SRT;curl_helper.cpp:封装网络请求;common.cpp:环境准备、目录判断等通用函数。
从入口顺着调用链读一遍,整个流程就串起来了。
抄这条最小命令开工
字幕是 UP 主和平台的内容资产,仅限个人学习、研究使用,别拿去做商用搬运,尊重原创者的劳动。
ccdown -c -d 视频链接跑完去播放器里看带时间轴的字幕就行 ✅
【免费下载链接】BiliBiliCCSubtitle一个用于下载B站(哔哩哔哩)CC字幕及转换的工具;项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考