pure_live 搜索能力登记全覆盖审计:46 平台搜索矩阵、14 站点能力补齐与 Rumble HLS 解析修复
音视频直播移动开发【免费下载链接】pure_live纯粹直播:哔哩哔哩/虎牙/斗鱼/快手/抖音/网易cc/YY直播/Twitch直播/SOOP直播/M38自定义源应有尽有。项目地址https://gitcode.com/gh_mirrors/pur/pure_live点击查看免费下载本文基于 pure_live 仓库中的搜索能力登记审计文档docs/SEARCH_REGISTRY_COVERAGE_AUDIT_2026_09_23.md结合lib/domains/live/presentation/search/下的能力合同实现、Sites平台注册表与 HLS 解析链源码完整还原本次「46 平台 vs 32 平台」能力登记缺口的发现过程、14 个站点的能力补齐决策、批量回归中暴露的三个相邻缺陷及其修复方式并给出可验证的源码依据。读者可借此掌握 pure_live 搜索页「能力登记 → 控制器分派 → UI 文案与按钮」这条完整链路的运作机制以及如何用能力合同表驱动平台搜索的覆盖声明。1. 背景能力登记与注册表之间的 14 个缺口pure_live 的搜索页并非每个接入平台都默认具备原生搜索。它依赖两张静态表协同工作平台注册表Sites.supportedSiteIdslib/domains/live/data/platforms/sites.dart声明当前受支持并可构建适配器的站点 ID能力合同表LiveSearchCapabilities._byPlatformlib/domains/live/presentation/search/search_capability.dart逐平台声明「原生搜索覆盖范围 是否支持分页 是否支持网页搜索」。审计以这两张表对照发现注册适配器共46个而能力表当时只登记了32个缺失的14个站点其实都已在各自适配器中实现了searchRoomsCancellable可取消原生搜索却因未登记而被搜索页按「未知平台默认值」处理——即被判成webOnly网页搜索统一走通用百度链接。这导致真实能力与 UI 表现脱节。更直接的回归红灯来自 Shopee Live能力预期应为liveAndOffline原生搜索可返回直播中与未开播内容实际却显示为webOnly。这正是能力表缺登记造成的「明明能搜、却被迫跳网页」的典型表现。从当前仓库源码看本次补齐的成果仍保留在能力表中fc2live、steambroadcast、jdlive、kugoulive、baidulive、sixroom、looklive等站点现已在_byPlatform中完成登记search_capability.dart而 Shopee Live、NimoTV、Rumble、GoodGame、VK Video Live、Dailymotion、淘宝直播等站点从 sites.dart 的retiredSiteIds可以看到后续已按 3.2.8 / 3.2.11 的维护策略退役但被保存的收藏、历史与分享链接仍会以「retired」只读入口呈现而非当作未知链接忽略。2. 能力合同体系NativeSearchCoverage与LiveSearchCapability理解本次补齐的前提是先看懂能力合同的数据结构。核心定义位于 lib/domains/live/presentation/search/search_capability.dartenum NativeSearchCoverage { liveOnly, // 原生接口只返回正在直播的房间 liveAndOffline, // 返回直播中及部分未开播房间 channelLookup, // 支持精确频道 ID / 频道直播链接可含离线频道 roomLookup, // 支持精确场次/房间 ID / 官方直播链接可含已结束场次 showcaseSnapshot, // 精确 UID/官方房间链接 公开推荐页内昵称过滤 localChannels, // 本机已导入频道IPTV不参与网络主播搜索 webOnly, // 只有网页搜索入口 unavailable, // 未接入搜索 } class LiveSearchCapability { const LiveSearchCapability({required this.coverage, required this.supportsPagination, this.supportsWebSearch true}); final NativeSearchCoverage coverage; final bool supportsPagination; final bool supportsWebSearch; bool get supportsNativeSearch coverage ! NativeSearchCoverage.webOnly coverage ! NativeSearchCoverage.unavailable; bool get mayIncludeOffline coverage NativeSearchCoverage.liveAndOffline || coverage NativeSearchCoverage.channelLookup || coverage NativeSearchCoverage.roomLookup; }几个关键语义supportsNativeSearch是控制器筛选「可走原生搜索站点」的唯一边界只要不是webOnly或unavailable就进入原生搜索分派supportsPagination决定是否允许下拉加载后续页由_canLoadAnotherPage结合适配器是否实现LiveSearchPaginationPolicy与「停滞页上限」共同裁决supportsWebSearch决定搜索页是否展示「继续网页搜索」按钮mayIncludeOffline只是对语义的便捷归纳供审计与文案引用。查找逻辑是兜底式的search_capability.dartstatic const LiveSearchCapability _unknown LiveSearchCapability( coverage: NativeSearchCoverage.webOnly, supportsPagination: false, ); static LiveSearchCapability forPlatform(String id) _byPlatform[id.toLowerCase()] ?? _unknown;_unknown正是审计发现的「缺口放大器」任何未登记平台都会静默落入webOnly且禁分页随后被buildSearchUrl的default分支导向通用百度链接search_controller.dart。因此「登记」不只是文档问题而是直接影响用户搜索路径的真实分派开关。3. 本批补齐的 14 个站点三张能力合同审计按能力合同把 14 个站点分成三批登记表格如下忠实继承原文档能力合同本批补齐的平台当前快照/目录匹配及精确查询可能返回未开播、受限或未知状态Shopee Live、NimoTV、Rumble、GoodGame、FC2 Live、Steam Broadcasts、京东直播、酷狗直播、六间房直播原生搜索及频道/场次定位保留平台页码或游标VK Video Live、Dailymotion精确场次/房间与有限推荐页匹配淘宝直播、百度直播、LOOK 直播每个平台的具体取值以当前仓库仍保留的登记为例fc2liveliveAndOffline supportsPagination: true 关闭网页搜索search_capability.dart。其适配器在 fc2_site.dart 实现了可取消搜索先尝试把关键词解析为精确频道 IDFc2Link.parseChannelId命中则单房间返回否则在_directory()目录快照内按频道 ID、用户名、标题、分类名做本地匹配并本地分页steambroadcastliveAndOffline supportsPagination: truesearch_capability.dartjdlive、kugouliveliveAndOffline supportsPagination: truesearch_capability.dartbaiduliveroomLookup supportsPagination: falsesearch_capability.dart即只支持精确房间定位不提供搜索后续页sixroomliveAndOffline supportsPagination: falsesearch_capability.dartlookliveroomLookup supportsPagination: falsesearch_capability.dart。分页布尔值逐项与实现核对的结果同样在文档中固化下来可当作验收基准支持后续页或有限快照本地页VK、Nimo、Dailymotion、Rumble、GoodGame、FC2、Steam、京东、酷狗不提供搜索后续页Shopee、淘宝、百度、六间房、LOOK。此外14 项的supportsWebSearch全部关闭避免再出现「官方站点搜索按钮实际把用户丢给百度」的误导。Dailymotion 有一个值得注意的语义细节关键词搜索返回的是当前直播但精确live-videoID 可以返回已结束的直播因此整体覆盖被标为「可含离线」liveAndOffline而不是简单的liveOnly。4. 从登记到 UI搜索控制器的能力分派链能力表登记完成后真正消费它的是 lib/domains/live/presentation/search/search_controller.dart 中的SearchController。整条链路如下。4.1 可搜索站点筛选_searchPage在每次发起搜索前用forPlatform过滤出支持原生搜索的站点search_controller.dartfinal searchableSites selectedSites.where((site) { final capability LiveSearchCapabilities.forPlatform(site.id); return capability.supportsNativeSearch (!append || (_hasMoreByPlatform[site.id] ?? true)); }).toList();如果某单个平台不可原生搜索则根据其能力给出明确文案supportsWebSearch为真时提示「当前使用网页搜索入口」否则提示「暂未接入搜索」search_controller.dart。4.2 并发与超时边界搜索控制器的几个硬边界常量search_controller.dartliveSearchRequestTimeout Duration(seconds: 12)单个平台的搜索请求超时maxConsecutiveStagnantSearchPages 2搜索接口常有一页重复的边界重叠允许连续两页无新增后停止继续翻页防止「同一载荷刷到底」maxConcurrentNativeSearchSites 12全部站点搜索时并发上限_searchSitesBounded用固定槽位 Future.any实现「完成即补位、先完成先渲染」不让最慢平台拖住整个结果网格。4.3 取消与旧接口兼容适配器通过 lib/shared/platforms/live_search.dart 的两个可选接口表达能力LiveCancellableSearch实现searchRoomsCancellable(keyword, {page, pageSize, cancel})把 DioCancelToken透传给底层 HTTPLiveSearchPaginationPolicy实现supportsSearchPaginationFor(keyword)应对「精确查询单结果 关键词分页源」混合型适配器。扩展方法searchRoomsWithCancellationlive_search.dart对旧式searchRooms做兼容实现可取消接口的直接等待未实现的用Future.any同时监听请求与取消信号超时到达时抛TimeoutException(Native search deadline, requestTimeout)。4.4 能力文案与网页搜索按钮capabilityTextsearch_controller.dart按当前 tab 生成用户可见的覆盖说明对应本地化文案集中在 assets/translations/zh.jsonsearch_coverage_all_native「App 内原生搜索覆盖全部 {total} 个平台未开播结果仅在平台接口返回时显示。」search_coverage_all原生覆盖 {native}/{total}并点名仍走网页搜索的站点search_coverage_live_and_offline/search_coverage_live_only分别描述「含部分未开播」与「仅直播中」。canOpenWebSearchsearch_controller.dart与openWebSearchsearch_controller.dart决定「继续网页搜索」按钮的可见性与目标 URLLinux 走外部浏览器Windows 依赖 WebView2缺失时弹下载引导其余平台进入应用内WebSearchControllerlib/domains/live/presentation/search/web_search_controller.dart它会在浏览过程中用WebSearchRoomParser识别受支持平台的房间链接弹确认后直接接管播放。5. 批量回归发现的相邻缺陷与修复补齐登记后批量回归不只是验证搜索还顺带暴露了三个「相邻」缺陷。这正是审计文档的实战价值所在。5.1 RumbleHLS master 多行文本被错误折叠症状Rumble 浏览器返回的 HLS master 是多行文本此前_parseMedia调用通用字符串归一化_string把全部空白含换行折叠为单个空格导致parseMaster读不到任何#EXT-X-STREAM-INF行最终报mediaUnavailable。修复原则对playlist保留原文仅校验其类型真正的逐行解析交给下游解析器由它们继续执行 512 KiB 体积上限、媒体主机与路径验证。当前仓库印证Rumble 已退役后同类约定仍可在这条解析链上看到lib/domains/live/data/stream/playback_manifest_probe.dartPlaybackManifestProbe以maximumBytes 512 * 1024限制体积_stripBom去除 BOM 后只做classifyHlsManifest(body)分类body 原文原样保留不再做空白折叠lib/shared/platforms/steambroadcast/steam_broadcast_api.dartvalidateMaster对 master 逐行处理先确认#EXTM3U前缀与 1 MiB 上限再逐行扫描#EXT-X-STREAM-INF/#EXT-X-MEDIA对其后紧跟的 URI 校验 https、媒体主机与 Steam 广播路径结构lib/core/stream/hls_master_selection.dartHlsMasterPlaylist.parse用LineSplitter逐行解析对变体数、版本号、分辨率、帧率、码率、音频组、循环/重叠 URI 都做失败即关闭fail-closed的严格校验。5.2 Dailymotion未知观看数从null改为空字符串Dailymotion 在「没有当前观看数」时使用空字符串表示未知而旧断言要求null导致测试与实现语义不一致。修订断言并新增「精确已结束 live-video 返回离线结果」的回归用例把第 3 节提到的liveAndOffline覆盖语义固化进测试。5.3 FC2门票房间不被误过滤FC2 的门票房间按适配器合同仍显示为「受限卡片」Fc2State.restricted会触发fc2live_access_restricted提示见 fc2_site.dart只有 open-chat 的type0才被排除。旧测试把门票卡片误计为「已过滤」现对齐为保留 3 张卡片并维持受限断言使测试与适配器合同一致。5.4 快手原生搜索仍为空保持网页入口快手适配器虽然实现了searchRoomskuaishou_site.dart但上游网页搜索页本身不列出房间源码注释引用 upstream #881其live_api/search/author返回的是主播列表而非房间流因此本次审计结论是快手的原生搜索结果仍为空继续保持既有网页入口。当前仓库中快手在能力表中登记为liveAndOffline supportsPagination: truesearch_capability.dart同时buildSearchUrl仍保留https://live.kuaishou.com/search?keyword$q网页地址search_controller.dart两种入口并存。6. 门禁与边界回归数字与验收范围审计文档给出了完整的门禁口径供后续任何搜索相关改动参照搜索能力/Widget 首批83/83 全部通过14 站适配器首批72 PASS / 4 FAIL4 个失败即上文相邻缺陷所引发修订及新增 Dailymotion 离线夹具后19 文件集中回归187/187全部通过静态诊断最终定向Analyze无诊断输出。测试覆盖证明的对象是源码分派能力表 → 控制器筛选、输入合同searchRoomsCancellable参数语义、关键 UI 动作网页搜索按钮、覆盖文案与确定性平台夹具。审计同时明确声明边界各平台「当前生产可达性、媒体解码、Android/Windows 原生交互」仍按验收矩阵单独闭环本批未操作设备即不把本批测试结果当作设备级回归结论。7. 结论与可验证路径这次审计把「能力存在」与「能力被 UI 承认」两件事对齐了任何新接入平台都必须先登记能力合同否则会被_unknown兜底成webOnly用户看到的只会是百度网页搜索能力登记必须逐字段与适配器实现核对覆盖类型、分页、网页搜索开关Shopee 的liveAndOffline预期 vswebOnly实际就是缺核对的反例批量回归的价值不止于搜索本身——Rumble 的mediaUnavailable、Dailymotion 的空字符串语义、FC2 的门票卡片计数都是在补齐过程中被一同揪出的真实缺陷。仓库内可继续深入的关键路径能力合同定义与登记表lib/domains/live/presentation/search/search_capability.dart能力消费与 UI 分派lib/domains/live/presentation/search/search_controller.dart、lib/domains/live/presentation/search/search_page.dart平台注册表与退役表lib/domains/live/data/platforms/sites.dart可取消搜索与分页策略接口lib/shared/platforms/live_search.dartHLS 校验链lib/domains/live/data/stream/playback_manifest_probe.dart、lib/core/stream/hls_master_selection.dart、lib/shared/platforms/steambroadcast/steam_broadcast_api.dart能力文案本地化assets/translations/zh.json验证方式上可在仓库根目录对上述lib路径执行flutter analyze确认静态诊断干净并按能力表逐平台构造关键词夹具执行原生搜索回归若后续在受控环境接入设备再按验收矩阵补充生产可达、媒体解码与 Android/Windows 原生交互的设备级闭环即可完整复现本审计的门禁口径。赞分享音视频直播移动开发【免费下载链接】pure_live纯粹直播:哔哩哔哩/虎牙/斗鱼/快手/抖音/网易cc/YY直播/Twitch直播/SOOP直播/M38自定义源应有尽有。项目地址https://gitcode.com/gh_mirrors/pur/pure_live点击查看免费下载相关推荐pure_live 搜索页可达布局与能力动作审计62 项 Widget 测试驱动的溢出修复与平台能力对齐pure_live 搜索页可达布局与能力动作审计62 项 Widget 测试驱动的溢出修复与平台能力对齐 本文基于仓库审计文档 SEARCH_PAGE_LAY音视频直播移动开发Cypress搜索功能测试智能搜索场景覆盖Cypress搜索功能测试智能搜索场景覆盖 引言为什么搜索功能测试如此重要 在现代Web应用中搜索功能已成为用户交互的核心环节。无论是电商平台、内容管理测试质量保障前端接口测试SGLang Lightning Attention 能力矩阵与 seg_la 线性注意力测试覆盖深度解析SGLang Lightning Attention 能力矩阵与 seg_la 线性注意力测试覆盖深度解析 本篇指南以 SGLang 仓库中 test/regi模型推理服务推理引擎人工智能大模型本地部署多模态上一篇GPU显存终极压力测试用memtest_vulkan深度诊断你的显卡健康下一篇如何用免费工具掌握德州扑克的科学打法TexasSolver为你揭秘创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AnyPS5:跨设备体验迁移的输入渲染调度实战

AnyPS5:跨设备体验迁移的输入渲染调度实战

1. 从“AnyPS5”这个标题说起:它到底想解决什么问题第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一反应是:这大概率是一个围绕“把某类资源、某类能力、某类体验,做成通用化、跨平台化”的项目。为什么这么说?因为…

2026/10/15 7:59:04 阅读更多 →
高效批量PDF转长图:开源工具链实战指南

高效批量PDF转长图:开源工具链实战指南

1. 项目背景与核心需求最近在整理大量PDF格式的技术文档时,遇到了一个实际需求:需要将上百份PDF文件统一转换为长图格式。这种需求在移动端阅读、社交媒体分享、文档归档等场景下非常常见。传统的截图工具只能处理单页内容,而专业软件要么操作…

2026/10/15 7:59:04 阅读更多 →
impeccable:浏览器扩展合规校验CLI工具实战指南

impeccable:浏览器扩展合规校验CLI工具实战指南

1. “impeccable”不是形容词,而是一个正在快速演化的CLI工具生态你搜“impeccable 如何使用”,结果里混着npx、Playwright、两步验证、浏览器插件、PRODUCT.md——这根本不像在查一个英语单词,倒像误入了某个开发者深夜调试现场的聊天记录。…

2026/10/15 7:59:04 阅读更多 →

最新新闻

个人站长AI可见性监测:Python+Playwright自动化采集实战

个人站长AI可见性监测:Python+Playwright自动化采集实战

个人站长最怕的一件事,不是服务器宕机,也不是流量下滑,而是某天你搜自己的品牌词,发现首页全是别人的内容,自己的站点连影子都找不到。更麻烦的是,你根本不知道是哪个环节出了问题——是内容没被收录&#…

2026/10/15 8:43:52 阅读更多 →
Babel核心原理与前端工程实践指南

Babel核心原理与前端工程实践指南

1. 为什么我们需要Babel前端开发者们一定都经历过这样的困境:当你兴冲冲地写下一段优雅的ES6代码,却发现它在老版本浏览器中完全无法运行。这种兼容性问题就像一道无形的墙,阻碍着我们使用最新的语言特性。而Babel,就是打破这堵墙…

2026/10/15 8:43:52 阅读更多 →
基于.NET MAUI手搓零信任套壳浏览器:从身份认证到流量拦截的落地实践

基于.NET MAUI手搓零信任套壳浏览器:从身份认证到流量拦截的落地实践

“套壳浏览器”在不少开发者耳朵里,多少带点贬义——无非是WebView包一层,加载远程页面,连个原生功能都没有。但真在一线做过企业移动办公类项目的朋友应该懂,这种“壳”恰恰是很多业务系统绕不开的交付形态:HTML5业务…

2026/10/15 8:43:52 阅读更多 →
COMSOL模拟优化煤矿瓦斯抽采的混合气体注入技术

COMSOL模拟优化煤矿瓦斯抽采的混合气体注入技术

1. 项目背景与核心价值在煤矿开采领域,瓦斯抽采效率直接关系到井下作业安全与资源回收率。传统单一气体抽采往往面临渗透率低、抽采周期长等问题。我们团队通过COMSOL Multiphysics数值模拟发现,N₂和CO₂混合气体注入可显著改善煤层瓦斯解吸-渗流特性。…

2026/10/15 8:43:52 阅读更多 →
OffscreenCanvas+Web Worker优化图片处理性能

OffscreenCanvas+Web Worker优化图片处理性能

1. 项目背景与痛点解析上周在优化公司电商小程序时,遇到一个棘手问题:用户上传的图片需要支持本地旋转和格式转换,但实测发现当图片超过2MB时,操作延迟高达3-4秒,部分低端机型甚至直接卡死。通过性能分析发现&#xff…

2026/10/15 8:43:52 阅读更多 →
高校论文AI检测率飙升:技术、政策与应对策略

高校论文AI检测率飙升:技术、政策与应对策略

1. 论文AI检测率飙升现象观察最近一年来,高校论文检测系统中AI生成内容的识别率呈现显著上升趋势。以某985高校文科院系为例,2023年秋季学期毕业论文初检中,约38%的论文被系统标记为"疑似AI生成内容",这个数字较去年同期…

2026/10/15 8:42:52 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →