AnyPS5跨平台串流方案:架构设计、编码调优与延迟优化实战
1. 从“AnyPS5”这个标题说起一个跨平台串流工具的设计思路第一次看到“AnyPS5”这个标题我脑子里蹦出来的第一个念头是这大概率是一个围绕主机游戏串流展开的项目。为什么这么判断因为“PS5”这个关键词本身就指向了游戏主机生态而前缀“Any”则暗示了“任意设备、任意平台、任意场景”的通用性诉求。把这两个词拼在一起核心命题就呼之欲出了——让主机上的游戏画面能够被任意一台设备接收、显示、操控。这个需求其实非常真实。主机玩家普遍会遇到一个尴尬客厅电视被家人占用自己想在书房或者卧室继续打游戏或者出差在外想用笔记本接着玩没通关的存档又或者手头只有一台平板却想体验主机级别的大作。传统的做法是把主机搬来搬去线材、电源、散热全是麻烦事。串流方案就是来解决这个痛点的——主机留在原地负责渲染画面通过网络传到另一台设备上操作指令再回传回去。AnyPS5 这个项目从命名逻辑上看目标就是做一套“不挑设备”的串流方案。它要解决的核心问题有三个第一兼容性不能只支持某一种特定终端手机、平板、笔记本、电视盒子都应该能接第二延迟控制游戏串流最怕的就是操作和画面不同步尤其是动作类和竞技类游戏几十毫秒的差距就能决定生死第三部署门槛普通玩家不是网络工程师配置过程必须足够傻瓜化否则再好的技术也没人用。适合参考这篇内容的人我大致分三类。一类是主机玩家想搞清楚串流到底怎么搭、能到什么效果、值不值得折腾一类是技术爱好者对串流的底层原理、编解码选型、网络调优感兴趣想自己动手做一套还有一类是独立开发者想了解这类跨平台工具在架构设计上要踩哪些坑、做哪些取舍。不管你是哪一类下面的内容都会从思路到实操一层层拆开讲。2. 串流方案的整体架构与选型逻辑2.1 为什么是“主机渲染 终端显示”的分离架构串流这件事本质上是一次“计算与显示分离”的架构实践。主机端负责最重的活——游戏逻辑运算、图形渲染、画面编码终端设备只负责三件事接收码流、解码画面、回传操作。这种分工的好处非常明显终端设备的性能要求被大幅拉低一台几年前的老笔记本、一部中端手机都能流畅显示主机级别的画质。但这里有个关键取舍编码放在哪一端。理论上主机渲染完的原始画面数据量极大4K 60帧的未压缩画面每秒数据量在十几Gbps级别直接传是不现实的。所以必须在主机端先做视频编码把数据压到几十Mbps甚至几Mbps再通过网络传输。这个编码环节就是整个串流链路的第一道关卡也是决定画质和延迟的核心。我实测下来的经验是主机端的硬件编码器比如通用的视频编码硬件单元是首选因为它是专用电路编码延迟极低而且不占用CPU和GPU的渲染资源。软件编码虽然灵活、画质调优空间大但延迟和资源占用都明显更高除非你的主机性能有大量富余否则不建议。2.2 终端侧的兼容性设计为什么要“Any”“Any”这个词是项目的灵魂。如果只支持某一种终端那这个项目的价值就大打折扣了。要做到“任意设备可接”终端侧的设计必须遵循几个原则。第一解码能力要分层适配。高端设备可以走硬件解码低端设备退到软件解码保证“能看”是底线“好看”是上限。第二输入方式要抽象化。手柄、键盘鼠标、触屏虚拟按键这些输入形式差异很大但最终都要归一化成主机能识别的标准输入事件。第三网络协议要足够通用。不能依赖某个特定平台的私有协议否则跨平台就是空话。这里我踩过一个坑早期版本我试图让所有终端都用同一套解码参数结果低端设备直接卡成幻灯片。后来改成根据终端上报的能力动态协商编码参数问题才解决。这个思路其实和视频网站的自适应码率是一个道理——让主机端知道终端能吃什么再决定喂什么。2.3 网络传输层的选型延迟与稳定的平衡网络层是整个串流链路里最不可控的一环。局域网和公网的环境差异巨大前者延迟可以压到个位数毫秒后者可能波动到上百毫秒。AnyPS5 这类项目通常要同时覆盖两种场景所以传输协议的设计必须兼顾。局域网场景下UDP 是首选因为它不重传、不等待延迟最低。但 UDP 的代价是丢包画面会出现花屏或卡顿。解决办法是在应用层做前向纠错FEC用少量冗余数据换取抗丢包能力。公网场景下情况更复杂可能需要引入自适应码率和抖动缓冲牺牲一点延迟换流畅度。我个人的建议是优先保证局域网体验因为绝大多数串流需求发生在家里。公网串流作为加分项能跑通就行不必追求极致延迟。这个取舍背后的逻辑是局域网环境可控优化投入产出比高公网环境变量太多投入大量精力也未必稳定。3. 核心细节拆解编码、传输、解码三大环节3.1 视频编码参数怎么调码率、帧率、分辨率的三角关系编码参数是串流画质和延迟的直接决定因素。这里有一个“不可能三角”高分辨率、高帧率、低码率三者很难同时满足。你得根据实际网络带宽和终端能力做取舍。先说码率。1080p 60帧的游戏画面用主流编码格式码率给到 15-25Mbps 就能有不错的画质。4K 的话建议 40-60Mbps 起步。但码率不是越高越好超过网络承载能力就会丢包反而更卡。我的做法是先测网络实际吞吐然后取吞吐量的 70% 作为码率上限留出余量。帧率方面60帧是游戏串流的甜点值。30帧在快速转视角时会有明显拖影120帧对网络和终端的要求又太高。除非你是竞技类游戏的重度玩家否则 60帧足够。分辨率则要看终端屏幕。手机和平板屏幕小1080p 已经很细腻笔记本和电视建议上 1440p 或 4K。这里有个技巧渲染分辨率和编码分辨率可以分开设置。主机渲染 4K编码降到 1080p 传输终端再放大显示这样能在带宽有限的情况下保留更多画面细节。场景推荐分辨率推荐帧率推荐码率手机/平板1080p6015-20Mbps笔记本1440p6025-35Mbps电视/大屏4K6040-60Mbps弱网环境720p308-12Mbps3.2 传输协议的关键设计如何让画面“跟手”“跟手”是串流体验的核心指标说白了就是操作延迟要低。延迟的来源有很多编码延迟、网络传输延迟、解码延迟、显示延迟还有输入回传延迟。每一环都要抠。编码延迟主要看硬件编码器的性能一般能压到几毫秒。网络传输延迟取决于链路质量局域网内通常 1-5ms。解码延迟和终端性能相关硬件解码几毫秒软件解码可能几十毫秒。显示延迟则和终端屏幕的刷新率、处理管线有关。我的优化顺序是先保网络再保解码最后抠编码。因为网络是最不可控的先把网络延迟压下来整体体验的提升最明显。具体做法包括用有线网络替代无线、关闭路由器的节能模式、把主机和终端放在同一网段、避免跨VLAN传输。还有一个容易被忽略的点输入回传的优先级要高于视频传输。操作指令的数据量很小但延迟敏感度极高。如果视频流把带宽占满了输入指令排队等待手感就会明显变差。解决办法是给输入通道预留独立带宽或者用 QoS 标记优先级。3.3 终端解码的兼容性处理硬件解码与软件解码的切换终端侧最头疼的问题是解码能力参差不齐。同样是手机旗舰机支持多种硬件解码格式老机型可能只支持一两种甚至只能软解。AnyPS5 要做到“Any”就必须有一套动态切换机制。我的做法是终端启动时先上报自己支持的解码格式列表主机端根据这个列表选择最合适的编码格式。如果终端支持硬件解码优先用硬件如果不支持退到软件解码同时降低分辨率和帧率保证流畅度。这里有个细节软件解码的功耗和发热很可观。我试过用一台老平板软解 1080p 60帧半小时后机身烫得拿不住电量也掉得飞快。所以软解场景下建议把分辨率降到 720p、帧率降到 30体验反而更稳定。注意不同终端对编码格式的支持差异很大部署前一定要先做兼容性测试别等用户反馈花屏了才发现问题。4. 实操过程从零搭一套可用的串流环境4.1 主机端准备编码器配置与网络设置主机端的准备工作分三步。第一步是确认硬件编码器可用。大多数现代主机都内置了视频编码硬件单元你需要在系统设置里确认它没有被其他应用占用。如果同时开着录制或直播软件编码器可能被抢占串流就会出问题。第二步是配置编码参数。我一般会建一个配置文件把分辨率、帧率、码率、编码格式都写进去方便不同场景切换。比如“客厅模式”用 4K 60帧 50Mbps“卧室模式”用 1080p 60帧 20Mbps。切换的时候不用改代码改配置就行。第三步是网络设置。主机建议走有线网络如果只能无线确保它连的是 5GHz 频段而且离路由器不要太远。我实测过2.4GHz 频段在 1080p 60帧下就会频繁卡顿5GHz 则基本稳定。另外给主机设一个固定 IP方便终端直接连接省去发现设备的麻烦。# 示例主机端编码参数配置伪代码结构 resolution 1920x1080 framerate 60 bitrate 20000 # kbps codec h264 # 或 h265 / av1 encoder hardware4.2 终端接入设备发现与配对流程终端接入的第一步是设备发现。局域网内可以用广播或组播的方式让终端自动找到主机。如果网络环境不支持广播就得手动输入主机 IP。我建议两种方式都保留自动发现作为默认手动输入作为兜底。配对流程要尽量简单。我的设计是主机端显示一个配对码终端输入这个码就完成绑定。绑定之后下次连接就不用再输了。配对码的作用是防止陌生设备随意接入毕竟串流涉及到主机控制权安全不能马虎。这里有个实操心得配对信息要持久化存储而且最好加密。我早期版本把配对信息明文存在终端上后来觉得不妥改成了加密存储。虽然增加了点复杂度但安全性提升明显。4.3 手柄与输入设备的映射配置输入映射是串流体验里最容易被低估的环节。主机游戏的操作逻辑是基于手柄设计的但终端可能只有键盘鼠标或触屏。怎么把键鼠和触屏的操作翻译成手柄能理解的信号直接决定了游戏能不能玩。我的方案是提供一套可自定义的映射表。比如把键盘的 WASD 映射到左摇杆鼠标移动映射到右摇杆鼠标左键映射到扳机键。触屏则提供虚拟摇杆和按钮布局可以调整。这套映射表要允许用户保存多套配置不同游戏用不同的映射。提示映射配置建议提供预设模板比如“射击游戏模板”“角色扮演模板”“竞速游戏模板”降低新手的学习成本。实测下来键鼠玩射击类游戏反而比手柄更精准但玩动作类游戏就不如手柄顺手。所以映射方案没有绝对的好坏关键是给用户选择权。4.4 完整串流链路的联调与验证所有环节配好之后要做一次完整的联调。我的验证清单是这样的先看画面能不能出来再看延迟能不能接受最后看长时间运行稳不稳定。画面验证最简单连上之后看有没有花屏、卡顿、色彩异常。延迟验证可以用一个简单的方法在主机上打开一个显示毫秒计时的页面用终端摄像头拍下主机屏幕和终端屏幕对比两个计时器的差值就是端到端延迟。我实测局域网内能压到 30-50ms这个水平玩大多数游戏都没问题。长时间稳定性验证容易被忽略但很重要。我试过连续串流两小时发现内存占用会缓慢上升后来查出来是解码缓冲没有及时释放。这类问题不跑长时间测试是发现不了的。5. 常见问题与排查技巧实录5.1 画面卡顿、花屏、延迟高的排查顺序遇到画面问题不要东一榔头西一棒子按顺序排查效率最高。我的排查顺序是先看网络再看编码最后看终端。网络排查用测速工具看实际带宽和丢包率。如果带宽不够降码率如果丢包严重检查无线信号强度或有线连接质量。我遇到过路由器开了“智能限速”导致串流被限速的情况关掉就好了。编码排查看主机端编码器的占用率。如果编码器满载说明参数设高了降分辨率或帧率。如果编码器没满载但画面还是卡可能是编码格式和终端不匹配换一种格式试试。终端排查看终端的解码占用和温度。如果解码器满载或温度过高说明终端性能不够降参数或者换设备。现象可能原因排查方法解决办法画面卡顿网络带宽不足测速看吞吐降码率或换有线画面花屏网络丢包看丢包率开FEC或换频段操作延迟高输入通道拥堵看输入延迟给输入留带宽终端发热软件解码看解码方式降分辨率或换硬解连接不上设备发现失败看网络配置手动输入IP5.2 无线网络环境下的优化经验无线串流是很多人的刚需但也是最容易出问题的场景。我总结了几个实用的优化点。第一优先用 5GHz 频段。2.4GHz 频段干扰多、带宽窄串流体验很差。如果路由器支持 WiFi 6 或更新标准尽量用上带宽和抗干扰能力都更好。第二减少无线跳数。主机和终端之间如果隔了多个路由器或中继器延迟会明显增加。理想情况是两者连同一个路由器。第三关闭路由器的节能模式。有些路由器为了省电会在空闲时降低无线功率导致串流时断时续。关掉这个功能稳定性会好很多。第四避免信道拥堵。用 WiFi 分析工具看看周围哪些信道被占用把自己的路由器调到空闲信道。5.3 不同终端的兼容性避坑指南终端兼容性是“Any”这个目标最大的挑战。我踩过的坑包括某些安卓设备不支持特定的硬件解码格式、某些笔记本的显卡驱动对解码支持不完整、某些电视盒子的网络性能严重缩水。避坑的核心思路是不要假设终端能力一切以实测为准。部署前把目标终端都测一遍记录下每台设备的最佳参数组合。我建了一个表格把设备型号、支持的编码格式、推荐分辨率帧率码率都记下来下次遇到同型号设备直接套用。还有一个经验老设备的网络性能往往是瓶颈。有些设备解码能力还行但无线网卡太老带宽上不去。这种情况下与其折腾串流不如换个终端。6. 影响范围与延展思考6.1 串流方案对玩家使用习惯的改变串流方案真正普及之后玩家的使用习惯会发生一些微妙的变化。最直接的一点是主机的位置不再重要了。以前买主机要考虑放客厅还是放书房现在主机可以塞在任何一个角落只要网络通就行。这会让主机的摆放更自由也更容易做散热和降噪。另一个变化是多终端切换变得自然。在客厅用电视玩回卧室用平板接着玩出门用笔记本继续玩存档和进度都是连续的。这种无缝体验一旦习惯就很难回去了。还有一个潜在影响是游戏时间的碎片化利用。以前玩游戏需要专门坐到电视前现在随时随地都能掏出来玩一会儿。这对游戏时长的影响是双向的单次时长可能变短但总时长可能增加。6.2 跨平台串流的技术延展方向AnyPS5 这类项目的技术底座其实可以延展到很多其他场景。比如远程办公场景下的桌面串流原理是一样的主机渲染终端显示输入回传。再比如云游戏场景把主机换成云端服务器终端还是那些终端架构几乎不用改。延展的关键在于抽象层的设计。如果把编码、传输、解码、输入这几个模块都做成可替换的组件那么换一个渲染源、换一种网络环境、换一类终端都只需要替换对应的组件不用重写整个系统。这种模块化思路是我在做这个项目过程中最大的收获。6.3 我个人在实际操作中的几点体会折腾串流这段时间我最大的体会是体验的短板往往不在技术本身而在细节。编码参数调得再好网络不稳照样卡延迟压得再低输入映射不顺手照样玩不下去。所以做这类项目不能只盯着技术指标要多从用户的实际使用场景出发。第二个体会是测试要覆盖真实场景。实验室里跑得通不代表用户家里跑得通。我后来养成了一个习惯每改一版都拿到真实的家庭网络环境里跑一遍往往能发现实验室里发现不了的问题。第三个体会是文档和配置模板的价值被严重低估。很多用户不是不会配而是不知道从哪下手。一套清晰的配置模板和排查指南能省下大量沟通成本。我现在会把常见场景的配置直接打包好用户下载导入就能用体验好很多。最后分享一个小技巧如果你也在做串流相关的项目建议在主机端加一个实时状态面板显示当前码率、帧率、延迟、丢包率这些指标。排查问题的时候这个面板能帮你快速定位瓶颈比盲目猜测高效得多。这个面板不用做得多漂亮能看清数字就行但它的实用价值极高。

相关新闻

Rust 中 match 的引用模式与值模式:所有权与借用解析

Rust 中 match 的引用模式与值模式:所有权与借用解析

我最近在翻 Rust 论坛旧帖子时,又看到一批刚入门的朋友在match上栽跟头:明明写得很自然的Some(x) > ...,编译器却甩出一句cannot move out of ...。这类问题十有八九是没搞懂 Rust 的引用模式和值模式在匹配语义上的差异。match不只是&quo…

2026/10/12 7:05:07 阅读更多 →
Cursor 深度实战:AI 编程助手核心能力、配置与重构技巧

Cursor 深度实战:AI 编程助手核心能力、配置与重构技巧

1. 为什么我要把 Cursor 当成主力工具来用第一次认真用 Cursor 是在一个跨平台的小工具项目上,当时手里已经有一套用了两年的编辑器配置,插件装了几十个,快捷键肌肉记忆也早就成型。按理说没必要折腾,但那个项目里有一大半是重复度…

2026/10/12 7:05:07 阅读更多 →
Kiro IDE:规范驱动开发(SDD)的实时编码守门人

Kiro IDE:规范驱动开发(SDD)的实时编码守门人

1. 项目概述:当IDE不再只是“写代码的工具”,而成为“开发规则的执行者”“Kiro IDE”这个词最近在技术社区里出现的频率明显高了,不是因为又出了个新UI、新主题或者支持了某个冷门语言,而是它把一个长期被挂在PPT里、写在流程文档…

2026/10/12 7:05:07 阅读更多 →

最新新闻

机器人实机落地半年实战:从仿真到实机的工程化踩坑与迁移指南

机器人实机落地半年实战:从仿真到实机的工程化踩坑与迁移指南

1. 从“够不到就加凳子”说起:一个机器人创业团队的真实半年“够不到就自己加凳子”——这句话第一次听到的时候,我正蹲在一个实验室角落里调机械臂的逆解参数,差点笑出声。太真实了。做过机器人实机的人都知道,仿真里跑得再漂亮的…

2026/10/12 7:56:34 阅读更多 →
人形机器人全身跟踪算法框架与强化学习训练范式详解

人形机器人全身跟踪算法框架与强化学习训练范式详解

1. 全身跟踪到底在解决什么问题人形机器人的全身跟踪,英文叫 General Whole-Body Tracking,说白了就是让机器人实时模仿人类的动作——你抬腿它抬腿,你转身它转身,你挥手它挥手。这件事听起来像是科幻电影里的场景,但它…

2026/10/12 7:56:34 阅读更多 →
从爆红到争议:开源AI Agent框架OpenClaw背后的入口争夺战

从爆红到争议:开源AI Agent框架OpenClaw背后的入口争夺战

1. 一只“赛博龙虾”的爆红,远比你想的更耐人寻味 如果你常年混迹开源社区,大概对GitHub上那种“一夜之间星标破万”的场面并不陌生。但像OpenClaw这样,从默默无闻冲到19万星标,再迅速陷入“行业封杀”的舆论漩涡,整个…

2026/10/12 7:56:34 阅读更多 →
ComfyUI+AnimateDiff+ControlNet动画生成工作流实战与避坑指南

ComfyUI+AnimateDiff+ControlNet动画生成工作流实战与避坑指南

简介:面向动画制作与 AI 视频生成进阶者的实战资源包,围绕 ComfyUI、AnimateDiff、ControlNet 三大工具,结合 Openpose 人体关键点检测与 Depth 深度信息,完整演示了从场景搭建、角色控制到动作捕捉、智能补帧的现代动画生成流程。…

2026/10/12 7:56:34 阅读更多 →
GitHub热门周报:5个让AI更好用的开源项目解析

GitHub热门周报:5个让AI更好用的开源项目解析

1. 一周热门观察:这5个项目为什么值得看 这周的 GitHub 热门项目周报(10.7)看下来,一个很明显的趋势是:真正涨星快的不是模型本身,而是围着模型打转的“周边件”。我给这周的热门项目起了个外号——4 个在给…

2026/10/12 7:56:34 阅读更多 →
Playwright电商动态数据采集实战:从接口监听到DOM解析

Playwright电商动态数据采集实战:从接口监听到DOM解析

干爬虫这行的都知道,现在真正让人头疼的不是那些静态页面,而是像电商百亿补贴、秒杀会场这种页面——价格是 JS 动态算出来的,列表是滚动加载的,数据是接口加密返回的。你用requests去请求,拿回来的 HTML 基本就是个空…

2026/10/12 7:55:34 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

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