B站视频本地化完全指南:yt-dlp下载、弹幕转ASS、离线播放
先说结论在本地把 B 站的视频流、弹幕、字幕全部拉下来之后B 站确实会变成一个“单机视频播放器”。这不是玩笑而是一种可以被复现的技术状态。B 站网页播放器本身就是一个网络流媒体客户端视频被切成 DASH 分片画面轨和音轨分开存放弹幕从接口实时拉取。一旦这些内容被打包下载到本地你就不再依赖网络和页面逻辑视频、弹幕、倍速、逐帧全部由本地播放器接管“单机播放器”这个词就成立了。这篇文章要从工程角度把这条链路完整拆开视频怎么下载、弹幕怎么保存、字幕怎么加载、批量任务怎么跑、遇到限流和报错怎么排查。不会只告诉你“有个工具能下载”而是给出一套可以直接执行的本地化方案。整套方案不需要云服务器不需要 GPU 和显存唯一的要求是一台能跑命令行的电脑、一个能登录 B 站的账号以及足够的磁盘空间。具体要讲的内容包括用 yt-dlp 和 BBDown 下载 B 站视频并合并 DASH 音视频把 XML 弹幕转成 ASS 字幕用 MPV、PotPlayer 或弹弹play 做本地播放再通过链接文件或脚本实现批量下载。文章里所有命令都会给出可复制的示例也会交代清楚哪些内容不能下载、哪些操作容易踩坑。1. 核心能力速览先把整条工具链列出来。下面的表格不针对某一个单一软件而是描述“把一个在线平台本地化”所需的完整环节环节工具/方案主要能力运行环境视频下载yt-dlp解析 B 站页面并下载视频流、音频流支持 DASH 合并Python 3.8 或独立可执行文件视频下载BBDownB 站专项下载支持分 P、合集、弹幕 XML 保存.NET 环境或独立可执行文件备用下载you-get轻量网页视频下载适合快速临时使用Python 3弹幕转换danmaku2ass把 XML 弹幕转成 ASS 字幕Python 3本地播放MPV / PotPlayer / 弹弹play加载本地视频、ASS 弹幕、可随意倍速和逐帧Windows / Linux / macOS这套方案的核心能力可以概括为几个维度离线观看下载完成后不再依赖网络弱网、无网环境都能流畅播放。弹幕保留B 站弹幕以 XML 格式存在可以转换成 ASS 字幕本地加载。批量处理用链接文件或脚本队列一次跑完多个视频。无显卡门槛整个流程只涉及网络请求、磁盘读写和音视频合并不涉及 AI 推理CPU 配置普通也能跑。需要说明的是工具版本更新非常频繁表格中的命令和参数是常见写法实际使用时要看当前版本的帮助文档。2. 适用场景与使用边界2.1 适合谁这套本地化方案最适合下面几类场景收藏夹离线存档把自己收藏的公开视频下载到本地避免链接失效或者网络波动时无法观看。长视频分段学习把课程、演讲、评测视频下载后用本地播放器倍速播放逐帧回看关键片段比网页播放器操作更顺手。弱网环境使用出差、通勤、回老家网络质量不稳定提前下载好就不用频繁缓冲。研究流媒体结构想搞明白 B 站视频如何分片、音视频如何分离、弹幕文件长什么样可以用命令行工具观察下载过程。2.2 不适合谁需要在线互动的人本地播放器拿不到“点赞、投币、收藏”等页面交互也看不到评论区实时热评。喜欢弹幕即时联动的用户本地弹幕是“回放”性质的不会有用户实时发弹幕的现场感。磁盘空间紧张的人高清视频体积不小一套合集下载下来可能占用几十 GB下载前要先看空间。想保存付费专享内容的用户下载付费内容、大会员专属清晰度且未授权的内容属于违规操作不在本文讨论范围内。2.3 版权、隐私与合规边界这条必须单独说明。B 站视频由 UP 主或版权方上传下载行为仅限于个人学习、研究和本地存档不能用于再分发、二次上传、商业使用或公开传播。弹幕内容同样是用户生成内容本地保存后不要随意公开分享。另外导出浏览器登录 Cookie 只是为了获得你账号本应有权访问的清晰度不能用来绕过付费权益。更直接地说没有权限看的高清码率和付费专享内容不要用工具去获取。如果对单个视频的授权情况不确定优先看 UP 主的简介和视频页面说明。3. 环境准备与前置条件3.1 基础环境清单在开始下载之前先确认下面几项操作系统Windows、Linux、macOS 都可以后面命令以通用示例为主。Python推荐 3.8 及以上用于安装 yt-dlp 和弹幕转换脚本。ffmpeg必需负责把 DASH 分离的音视频流合并成一个文件。磁盘空间先留出至少 10 GB 空闲空间方便测试不同清晰度的文件体积。B 站账号用于导出登录 Cookie普通公开视频不登录也能下载但清晰度和码率会受限。如果不方便安装 Pythonyt-dlp 和 BBDown 都有独立可执行文件的发布包下载解压后可以直接运行这种情况下可以跳过 Python 环境步骤。3.2 验证 ffmpegffmpeg 装好后在命令行里验证一下ffmpeg -version能输出版本信息说明路径配置成功。Windows 用户如果提示“不是内部或外部命令”需要把 ffmpeg 的 bin 目录加入系统环境变量 PATH或者在命令中写完整路径。Debian/Ubuntu 系统可以用系统包管理器安装sudo apt update sudo apt install ffmpegWindows 用户可以到 ffmpeg 官网下载编译好的二进制压缩包解压后把bin目录加入 PATH。macOS 用户如果安装了 Homebrew可以执行brew install ffmpeg。3.3 准备 B 站登录 Cookie下载工具要获取你账号应有的清晰度通常需要登录凭据。最稳妥的方式是让 yt-dlp 直接读取本地浏览器的 Cookieyt-dlp --cookies-from-browser firefox 视频链接浏览器名称可能要替换成chrome、edge等。另一种方式是先用浏览器扩展导出 Netscape 格式的cookies.txt再通过参数指定yt-dlp --cookies cookies.txt 视频链接Cookie 等价于账号凭据不要泄露给他人不要在公共电脑上保存。失效后重新导出一次即可这是后续高频出现的排查原因。3.4 检查 yt-dlp 和 BBDown安装 yt-dlppip install -U yt-dlp或者去官方 Release 页面下载独立可执行文件。验证安装yt-dlp --versionBBDown 通常以压缩包形式发布在 Release 页面下载解压后直接运行。Windows 下常见命名类似BBDown_xxx_win-x64.zip具体以当时页面实际文件为准。验证方式BBDown --help输出参数列表说明程序能正常运行。4. 命令行下载与 DASH 音视频合并4.1 先看视频有哪些清晰度下载之前先用-F列出视频可选格式这一步非常重要能让你看到当前账号能拉到哪些码率yt-dlp --cookies-from-browser firefox -F https://www.bilibili.com/video/你自己有权限观看的视频BV号输出里会出现类似下面的内容字段以实际为准ID EXT RESOLUTION FPS NOTES 131 mp4 1080p 60 DASH video 140 mp4 audio only DASH audioDASH video和DASH audio分开存放说明视频画面和声音是两条独立流下载后必须用 ffmpeg 合并。4.2 下载并合并默认高清流常见下载命令yt-dlp --cookies-from-browser firefox -f bv*ba/b \ --merge-output-format mp4 \ -o %(title)s.%(ext)s \ 视频链接参数含义bv*ba/b优先选择最好的视频流配合最好的音频流合并失败就回退到单一文件。--merge-output-format mp4合并输出为 MP4 容器。-o %(title)s.%(ext)s输出文件名使用视频标题加扩展名在 Windows 下如果标题过长可能要手动缩短。如果想限制不超过 1080P可以改成yt-dlp --cookies-from-browser firefox -f bv*[height1080]ba/b[height1080] \ --merge-output-format mp4 \ -o %(title)s.%(ext)s \ 视频链接这条命令适合大多数普通视频跑完会得到包含画面和声音的完整 MP4 文件。4.3 用 BBDown 下载视频和弹幕yt-dlp 长于通用下载但 B 站弹幕的处理并不方便。BBDown 作为 B 站专项下载工具默认会一并保存视频和弹幕 XML。基本用法BBDown 视频链接常用参数# 下载指定分 P BBDown -p 3 视频链接 # 下载全部合集 BBDown -a 视频链接 # 断点续传 BBDown --resume 视频链接执行之后当前目录一般会生成视频文件、XML 弹幕和封面图。BBDown 更新频率较高如果参数不生效先运行BBDown --help查看当前版本的实际帮助信息。5. 把 B 站弹幕变成本地字幕5.1 弹幕文件本质是 XMLB 站弹幕下载下来通常是 XML 格式本质是一系列带着时间戳的记录。直接拖进播放器是没用的需要转换成 ASS 字幕播放器才能以“字幕”的形式加载。转换工具常见的是 danmaku2ass。下载项目源码后运行方式通常是python danmaku2ass.py -o output.ass input.xml参数可能因脚本版本不同而有差异实在不确定就执行python danmaku2ass.py --help查看提示。转换完成后用文本编辑器打开 ASS 文件能看见类似Dialogue: 0,0:00:01.20,0:00:03.00,...的行说明时间轴已经生成。5.2 让播放器自动加载弹幕本地播放器加载 ASS 弹幕最简单的方式是“同名同目录”。假设视频文件名是测试视频.mp4把转换后的字幕命名为测试视频.ass放在同一个文件夹。MPV 和 PotPlayer 默认会尝试自动加载同名字幕文件。如果播放器没有自动加载就手动打开字幕文件。PotPlayer 可以通过字幕菜单加载MPV 可以按ShiftSub键循环字幕或者拖拽 ASS 文件到播放器窗口。弹弹play 原生支持 B 站弹幕格式也可以直接打开 XML 文件。5.3 弹幕时间对不上的原因弹幕时间轴对应的是“当前页面排放的原始分片时间线”。只要视频文件和 XML 来自同一个视频页面、同一个清晰度版本时间轴一般是对齐的。如果出现不同步多半是下载工具版本不同导致音视频时间偏移重新下载一次并保持视频与弹幕同批次生成即可。6. 本地播放器的“单机播放器”体验下载完成后的体验和网页播放完全不同。MPV 和 PotPlayer 这类本地播放器支持拖动进度条立即定位不经过网络缓冲。任意倍速播放包括 0.5 倍、1.5 倍、2 倍声音不会像页面播放器那样频繁卡壳。逐帧进退适合分析评测视频中的数据图表。ASS 弹幕可以调整字号、位置和透明度不喜欢的弹幕直接关闭。以 MPV 为例给它写一个最小配置文件mpv.confsub-autofuzzy sub-file-pathssubs volume100这里的sub-autofuzzy表示自动加载同目录下名字相近的字幕文件sub-file-paths指定额外搜索的子目录。PotPlayer 用户直接在右键菜单里找到“打开字幕”即可。从这个角度看“单机视频播放器”的体验并不是夸张说法而是本地化后的自然结果。7. 批量下载任务与脚本化7.1 yt-dlp 链接文件批量下载yt-dlp 支持--batch-file参数把链接写入一个纯文本文件每行一个https://www.bilibili.com/video/BV1xxxxxx1 https://www.bilibili.com/video/BV1xxxxxx2 https://www.bilibili.com/video/BV1xxxxxx3批量下载命令yt-dlp --batch-file links.txt \ --cookies-from-browser firefox \ -f bv*ba/b \ --merge-output-format mp4 \ -o %(title)s.%(ext)s建议加上防限流参数降低触发风控的概率yt-dlp --batch-file links.txt \ --cookies-from-browser firefox \ --sleep-requests 1 \ --sleep-interval 3 \ --max-sleep-interval 5 \ --retries 3 \ -f bv*ba/b \ --merge-output-format mp4 \ -o %(title)s.%(ext)s--sleep-requests控制请求之间的最小间隔--sleep-interval和--max-sleep-interval控制随机休眠区间--retries控制单个链接失败后的重试次数。7.2 用 Python 脚本跑失败重试links.txt 里手动维护已下载和待下载状态比较麻烦这里提供一个简单的 Python 重试脚本示例。它读取链接文件跳过空行和以#或done:开头的行对每个链接最多尝试三次import subprocess links_file links.txt cookies_from firefox format_selector bv*ba/b with open(links_file, encodingutf-8) as f: lines f.read().splitlines() for line in lines: line line.strip() if not line or line.startswith(#) or line.startswith(done:): continue command [ yt-dlp, --cookies-from-browser, cookies_from, -f, format_selector, --merge-output-format, mp4, -o, %(title)s.%(ext)s, line, ] for attempt in range(1, 4): result subprocess.run(command, capture_outputTrue, textTrue) if result.returncode 0: print(f[OK] {line}) break print(f[retry {attempt}] {line}) print(result.stderr[-300:])脚本中yt-dlp使用全命令行模式实际路径需要按你的安装方式调整。任务中断后重新运行脚本并给已完成的行加上done:前缀就能实现简单增量跳过。7.3 下载目录规划批量任务跑起来后目录结构要保持清晰bilibili_local/ downloads/ 视频标题1/ 视频标题1.mp4 视频标题1.xml 视频标题1.ass 视频标题2/ ... links.txt cookies.txt logs/视频文件、弹幕 XML、ASS 字幕放在同一个视频子目录里播放器会自动加载同名字幕也方便后续归档管理。8. 资源占用与性能观察这套方案的核心资源消耗集中在网络、磁盘和短暂 CPU 峰值与显卡显存无关。观察点包括网络占用下载分片时流量会跑满你的带宽上限批量任务建议避开网络高峰期。CPU 占用下载本身 CPU 占用很低但在 ffmpeg 合并音视频流的短暂阶段CPU 占用会明显升高通常持续几秒到几十秒。磁盘占用受码率影响波动很大。普通 1080P 视频单集体积通常在几百 MB 到 1 GB 之间4K 内容更高以实际下载为准。内存占用一部分用于下载缓冲和 ffmpeg 合并普通 8 GB 内存的电脑足够跑单任务。如果想观察合并阶段的 CPU 峰值可以打开系统任务管理器或htop把目光放在执行--merge-output-format的命令行窗口上。弹幕 XML 转 ASS 非常快一小时的视频弹幕通常在几秒内完成转换这部分不会造成明显负载。9. 常见问题与排查方法问题现象可能原因排查方式解决方案下载返回 403 或 404Cookie 失效、链接已删除、接口变动查看错误日志与 HTTP 状态码重新导出 Cookie、升级 yt-dlp/BBDown、换一个有效链接视频有画面没声音或只有声音DASH 音视频分离未合并检查是否安装了 ffmpeg安装 ffmpeg 并加入 PATH 后重试弹幕文件没下载使用的工具没有开启弹幕功能查看工具帮助B 站弹幕优先用 BBDownyt-dlp 默认不做 XML 弹幕播放器不加载弹幕字幕文件与视频文件名不一致确认 ASS 文件名和视频文件名改为同名同目录或手动加载字幕文件高清清晰度下载失败清晰度超过账号权限检查账号是否有对应权限选择低一档清晰度不要绕过付费限制批量任务跑几个就卡住限流或单个链接失败查看日志和重试次数增加休眠间隔失败项跳过后续重试合并后的视频时间轴偏移视频流与音频流不同步观察合并日志是否报错重新下载保持视频和弹幕同一批次生成下载速度很慢单线程拉流或临时限速观察网络占用等待一段时间再跑避免高峰期连续大量下载排查时最重要的一步是“先看完整报错原文”。很多下载失败会在终端输出具体 HTTP 状态码或失败原因复制英文报错搜索往往比直接改参数更有效。10. 最佳实践与使用建议第一次跑本地化流程不要直接上整套合集。找一个公开的短视频按下面顺序验证先跑通 yt-dlp 下载检查输出文件是否音画齐全再用 BBDown 下载一个分 P确认弹幕 XML 存在接着转换 ASS 字幕用本地播放器确认弹幕可加载最后再扩大到批量任务。四个环节都通再上脚本和合集。Cookie 文件默认是敏感数据设置好文件权限不要放进公开仓库。批量任务建议写日志每次下载记录开始时间、结束时间、成功与否方便排查中途卡住的问题。links.txt 里用done:前缀标记完成项就是一个最简单可靠的增量队列。“B 站可能是个单机视频播放器吧”这句话的成立条件其实很简单视频、弹幕、播放器这三个要素都落到本地网络就变成了可选项。真正需要谨慎的是版权边界下载工具只是方便了你保存有权限访问的内容并不改变内容本身的授权状态。先从一个短视频开始跑通全流程再按需扩展批量任务。

相关新闻

genesis97.rar模型包实战:Stable Diffusion本地部署与调参避坑指南

genesis97.rar模型包实战:Stable Diffusion本地部署与调参避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:05:23 阅读更多 →
Natron G‘MIC Lomo 节点详解:暗角复古风格滤镜的参数配置与合成实战指南

Natron G‘MIC Lomo 节点详解:暗角复古风格滤镜的参数配置与合成实战指南

音视频视频处理图形学桌面应用 【免费下载链接】Natron Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry. 项目地址: https://gitcode.com/gh_mirrors/na/Natron 点击查看 …

2026/10/13 2:04:22 阅读更多 →
Matlab手写逻辑回归:自定义数据格式与训练集个数实现

Matlab手写逻辑回归:自定义数据格式与训练集个数实现

之前做用户流失预测和信用评分时,我第一版模型经常直接用逻辑回归,原因很直接:可解释性强、训练快、而且能输出概率。这两年Matlab用得比较多,发现网上很多“逻辑回归分类预测”的教程代码,要么只跑自带数据集&#xf…

2026/10/13 2:04:22 阅读更多 →

最新新闻

WebSQL数据泄露防线:导出管控与数字水印溯源实践

WebSQL数据泄露防线:导出管控与数字水印溯源实践

一个周末的凌晨,我收到了一份从外部渠道流转回来的疑似泄露数据文件:一张几百行的客户信息表,字段完整,格式规整。按照惯例,首先要做来源定位——是开发环境泄露的?还是某个运营同学的本地文件流出去的&…

2026/10/13 7:22:01 阅读更多 →
Maven Archetype实战:构建可维护、可追溯的项目脚手架

Maven Archetype实战:构建可维护、可追溯的项目脚手架

1. 为什么“新建项目”不该从零敲代码——原型模板不是锦上添花,而是工程效率的分水岭我带过三届某高校软件工程方向的实训项目,每届都有至少12个小组。第一年,我让所有学生“从空文件夹开始搭建Spring Boot项目”:手动建src/main…

2026/10/13 7:22:01 阅读更多 →
强力卸载删注册表:彻底清理残留的完整指南与避坑实践

强力卸载删注册表:彻底清理残留的完整指南与避坑实践

简介:这份资源面向需要彻底卸载顽固软件、清理注册表残留的Windows用户与系统维护人员,核心是UninstallTool工具及其配套组件,用于解决常规卸载不干净、恶意软件隐藏痕迹、注册表键值被保护而难以删除等问题。压缩包共11个文件,约…

2026/10/13 7:22:01 阅读更多 →
C++Builder中Indy10网络通信组件实战:安装配置、TCP粘包处理与SSL避坑指南

C++Builder中Indy10网络通信组件实战:安装配置、TCP粘包处理与SSL避坑指南

简介:Indy10组件是一套面向CBuilder开发者的网络通信控件库,适用于CBuilder 4至6、2006至2010以及XE至XE8等多个版本,能够帮助开发者快速实现TCP/IP、HTTP、FTP等网络功能,适合需要跨版本维护或迁移网络应用的中高级程序员。资源包…

2026/10/13 7:22:01 阅读更多 →
Spring Boot接入Elasticsearch实战:部署、索引建模与查询优化

Spring Boot接入Elasticsearch实战:部署、索引建模与查询优化

很多人在Spring Boot项目里接入Elasticsearch时,最容易卡住的不是写代码,而是卡在“到底该怎么启动一个能用的ES环境”和“索引结构该怎么设计”这两步。网上教程要么只讲单机部署、要么只贴CRUD代码,真正把部署、索引设计、客户端选型、查询…

2026/10/13 7:22:01 阅读更多 →
Clover_v5.0_r5122_X64黑苹果引导实战:从U盘制作到多系统配置

Clover_v5.0_r5122_X64黑苹果引导实战:从U盘制作到多系统配置

简介:Clover_v5.0_r5122_X64 是一款面向黑果(Hackintosh)爱好者的四叶草启动引导程序,专为64位体系结构设计,核心作用是模拟苹果原生启动管理器,让非苹果硬件也能识别并加载 macOS 内核,尤其适配…

2026/10/13 7:21:01 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →