B站CC字幕下载完整教程:一条命令,从播放页到本地SRT文件
【免费下载链接】BiliBiliCCSubtitle一个用于下载B站(哔哩哔哩)CC字幕及转换的工具;项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle
想把一节外语课的B站CC字幕留下来精听?开源免费的BiliBiliCCSubtitle只干两件事:把B站CC字幕下载成JSON,再转成SRT。一条命令跑通,字幕原样存进本地文件夹。
搞清这个命令行工具做什么
- 形态:C++ 写的命令行工具,没有图形界面。在 Windows 上就是一个
ccdown可执行文件。 - 职责:只负责 B站CC字幕下载(JSON)和 CC字幕转SRT,不做别的。
- 和替代做法的本质差异:它直接抓取 B 站官方接口返回的字幕数据,不经过语音识别。时间轴、断句、文字全部原样保留,不存在识别错别字的问题,也省掉手动逐行复制的功夫。
- 国内版和国际版 B 站播放页都支持。
准备Windows 10环境并获取ccdown
- 最低环境:Windows 10,x86 或 x64 均可。日常使用不依赖任何运行库。
- 只有想从源码自行编译,才需要准备 vcpkg、libcurl、jsoncpp 三样依赖。
- 获取方式,克隆仓库:
git clone https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle cd BiliBiliCCSubtitle- 自检命令:
ccdown -h屏幕上打印出-d、-c、-s、-e、-D、-o各参数的用法说明,就说明工具可以开工了。
跑通第一次B站CC字幕下载
- 在命令行执行下载命令:
ccdown -d https://www.bilibili.com/video/BV1JE411N7UD- 看输出。每拉到一种语言,会打印一行,形如:
Found: zh-CN ==> downloads/BV1JE411N7UD/AV97740720(BV1JE411N7UD)-P1-zh-CN.json- 打开命令行所在的当前目录:会多出
downloads/BV1JE411N7UD/文件夹,里面按语言存着 JSON,比如AV97740720(BV1JE411N7UD)-P1.zh-CN.json。
downloads文件夹由程序自己创建,不用手动建。国际版视频则存进downloads/GLOBAL<视频ID>/。
选对命令:批量B站CC字幕下载与转SRT
场景 1:只下载某一个分P
ccdown -d https://www.bilibili.com/video/BV1JE411N7UD?p=2预期:只保存第 2 分P 的字幕 JSON。
场景 2:批量下载一段范围的分P
ccdown -s 2 -e 5 -d https://www.bilibili.com/video/BV1JE411N7UD预期:依次下载 P2 到 P5,中间没有字幕的分P会被跳过,不中断。
场景 3:下载完顺手转成SRT
ccdown -c -d https://www.bilibili.com/video/BV1JE411N7UD预期:downloads 文件夹里,每个 JSON 旁边多一个同名的.srt文件。
场景 4:下载国际版B站字幕
ccdown -d https://www.biliintl.com/en/play/1010919/10446796预期:文件存入downloads/GLOBAL10446796/,按语言命名。
场景 5:指定保存目录
ccdown -D D:\CC字幕 -d https://www.bilibili.com/video/BV1JE411N7UD预期:所有文件落到D:\CC字幕,而不是默认的 downloads。
场景 6:转换手头已有的JSON
ccdown -c -o 输出.srt 输入.zh-CN.json预期:生成 SRT;不带-o时,默认输出在与 JSON 同目录的 SRT 文件。
弄清默认行为,避开这些限制
现象:
-D指定新目录,立刻报Specified output directory does not existed。原因:程序只检查目录,不会替你创建。规避:先建好目录再跑。mkdir D:\CC字幕现象:
-s/-e设置了范围,实际只下了一个分P。原因:URL 里的?p=优先级更高,直接覆盖范围设置。规避:批量下载时把 URL 里的?p=去掉。现象:下载模式里加了
-o,输出里出现告警且无效。原因:-o只在转换模式生效,下载模式会打印 WARN 并忽略它。规避:下载时不要传-o,文件按默认命名规则保存。现象:文件没出现在你以为的位置。原因:默认目录是命令行所在的当前目录,不是程序所在目录。规避:用
-D明确指定保存位置。
卡住了先查这里
问:命令跑完了,downloads 里是空的,或打印No CC-subtitles was found in P1, ignoring? 答:这条视频没有 CC 字幕。回播放页看播放器下方有没有"字幕"开关,没有就换视频。
问:-D一运行就报目录不存在? 答:程序不自动建目录。先mkdir建好,再传给-D。
问:批量下载到一半断了,或某个分P缺失? 答:旧版本遇到某个分P没字幕会中断整个流程,新版本已改为跳过继续。更新到最新版重跑一遍。
问:转出来的 SRT 时间轴和画面对不上? 答:旧版本的时间轴换算有 bug。用最新版重新转换一次即可对上。
问:链接里带了?p=又加了-s/-e,为什么只下了一个分P? 答:预期行为,?p=会覆盖范围参数。批量时把?p=去掉。
读一遍源码:五个文件各管什么
整个工程不到一千行,按下面顺序读能把流程串起来:
main.cpp:解析命令行参数,按-d/-c的组合分发模式。ccjson_downloader.cpp:抓取播放页拿到 BV 号和 cid,再向 B 站接口要字幕 JSON 并存盘。ccjson_convert.cpp:把秒级时间戳换算成HH:MM:SS,mmm格式,写出 SRT。curl_helper.cpp:封装 HTTP 请求和文件下载。common.cpp:准备运行环境(建 downloads)、检查目录是否存在、处理 Windows 编码。
开始用:一条命令下完并转换
把视频链接换成你自己的,直接复制这条命令:
ccdown -c -d https://www.bilibili.com/video/BV1JE411N7UD跑完后打开 downloads 文件夹,SRT 文件已经就位。字幕属于 UP 主和平台的内容资产,请只用于个人学习和研究,尊重原创者的劳动,不要拿去做商用或搬运。
【免费下载链接】BiliBiliCCSubtitle一个用于下载B站(哔哩哔哩)CC字幕及转换的工具;项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考