[{"data":1,"prerenderedAt":488},["ShallowReactive",2],{"manual-navigation":3,"\u002Fproducts\u002Fbrief\u002Farchitecture":62,"\u002Fproducts\u002Fbrief\u002Farchitecture-surround":481},[4],{"title":5,"path":6,"stem":7,"children":8},"手册简介","\u002Fmanual\u002F3516cv610","manual\u002F3516cv610\u002Findex",[9,10,14,18,22,26,30,34,38,42,46,50,54,58],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"产品概述","\u002Fmanual\u002F3516cv610\u002Foverview","manual\u002F3516cv610\u002F1.overview",{"title":15,"path":16,"stem":17},"JSON-RPC 接口","\u002Fmanual\u002F3516cv610\u002Fapi","manual\u002F3516cv610\u002F10.api",{"title":19,"path":20,"stem":21},"ONVIF \u002F GB28181","\u002Fmanual\u002F3516cv610\u002Fprotocol","manual\u002F3516cv610\u002F11.protocol",{"title":23,"path":24,"stem":25},"常见问题","\u002Fmanual\u002F3516cv610\u002Ffaq","manual\u002F3516cv610\u002F12.faq",{"title":27,"path":28,"stem":29},"更新日志","\u002Fmanual\u002F3516cv610\u002Fchangelog","manual\u002F3516cv610\u002F13.changelog",{"title":31,"path":32,"stem":33},"快速上手","\u002Fmanual\u002F3516cv610\u002Fquickstart","manual\u002F3516cv610\u002F2.quickstart",{"title":35,"path":36,"stem":37},"硬件说明","\u002Fmanual\u002F3516cv610\u002Fhardware","manual\u002F3516cv610\u002F3.hardware",{"title":39,"path":40,"stem":41},"安装部署","\u002Fmanual\u002F3516cv610\u002Finstallation","manual\u002F3516cv610\u002F4.installation",{"title":43,"path":44,"stem":45},"系统配置","\u002Fmanual\u002F3516cv610\u002Fconfiguration","manual\u002F3516cv610\u002F5.configuration",{"title":47,"path":48,"stem":49},"流媒体服务","\u002Fmanual\u002F3516cv610\u002Fstreaming","manual\u002F3516cv610\u002F6.streaming",{"title":51,"path":52,"stem":53},"AI 智能功能","\u002Fmanual\u002F3516cv610\u002Fai","manual\u002F3516cv610\u002F7.ai",{"title":55,"path":56,"stem":57},"存储管理","\u002Fmanual\u002F3516cv610\u002Fstorage","manual\u002F3516cv610\u002F8.storage",{"title":59,"path":60,"stem":61},"Web 管理界面","\u002Fmanual\u002F3516cv610\u002Fwebui","manual\u002F3516cv610\u002F9.webui",{"id":63,"title":64,"body":65,"category":64,"description":472,"extension":473,"language":474,"meta":475,"navigation":476,"path":477,"seo":478,"stem":479,"__hash__":480},"briefs\u002Fproducts\u002Fbrief\u002Farchitecture.md","系统架构",{"type":66,"value":67,"toc":461},"minimark",[68,73,80,84,87,90,93,104,106,109,253,255,258,304,306,309,363,365,368,415,424,426,429,443,445,448],[69,70,72],"h1",{"id":71},"endless-系统架构","Endless 系统架构",[74,75,76],"blockquote",{},[77,78,79],"p",{},"内容基线：2026-08 产品事实快照 · 页面更新于 2026-10。",[81,82,83],"h2",{"id":83},"总览",[77,85,86],{},"Endless 的依赖方向是“产品配置 → 应用编排 → 业务组件 → 基础服务 → HAL → 板级平台”。主进程按依赖顺序启动和停止各模块，组件之间通过公共接口、配置管理和事件中心协作；型号差异通过产品配置完成，而不是分叉代码。",[88,89],"hr",{},[81,91,92],{"id":92},"分层",[94,95,100],"pre",{"className":96,"code":98,"language":99},[97],"language-text","产品配置层    vendor\n              型号 · 传感器 · 功能裁剪 · RootFS overlay\n    ↓\n应用编排层    applications\n              主服务 · 升级守护进程 · 模块生命周期\n    ↓\n业务组件层    foundation\n              流媒体 · JSON-RPC · Web · ONVIF · GB28181 · Agent \u002F MCP\n    ↓\n基础服务层    base · common\n              媒体 · 录像 · 存储 · 网络 · 事件 · 升级 · 日志 · 任务 · 配置\n    ↓\n硬件抽象层    hal（纯 C 接口）\n              MPP · AI · 外设\n    ↓\n板级平台层    device\u002Fboard\n              板级 RootFS · 内核 · 启动文件 · 分区布局 · 打包\n","text",[101,102,98],"code",{"__ignoreMap":103},"",[88,105],{},[81,107,108],{"id":108},"目录与职责",[110,111,112,128],"table",{},[113,114,115],"thead",{},[116,117,118,122,125],"tr",{},[119,120,121],"th",{},"目录",[119,123,124],{},"职责",[119,126,127],{},"二开建议",[129,130,131,145,158,171,184,197,210,223,236],"tbody",{},[116,132,133,139,142],{},[134,135,136],"td",{},[101,137,138],{},"applications",[134,140,141],{},"主服务和升级守护进程入口",[134,143,144],{},"保持入口轻量，只负责生命周期编排",[116,146,147,152,155],{},[134,148,149],{},[101,150,151],{},"base",[134,153,154],{},"媒体、录像、存储、网络、事件、升级等基础服务",[134,156,157],{},"放置可被多种协议或产品复用的能力",[116,159,160,165,168],{},[134,161,162],{},[101,163,164],{},"foundation",[134,166,167],{},"流媒体、JSON-RPC、Web、ONVIF、GB28181、Agent \u002F MCP 等业务组件",[134,169,170],{},"放置接入层、协议层和云服务适配",[116,172,173,178,181],{},[134,174,175],{},[101,176,177],{},"common",[134,179,180],{},"日志、任务、内存、IPC、配置等通用工具",[134,182,183],{},"避免引入具体产品或业务语义",[116,185,186,191,194],{},[134,187,188],{},[101,189,190],{},"hal",[134,192,193],{},"MPP、AI 和外设抽象接口",[134,195,196],{},"新平台实现应遵守这里的接口契约",[116,198,199,204,207],{},[134,200,201],{},[101,202,203],{},"device\u002Fboard",[134,205,206],{},"板级 RootFS、内核、启动文件、分区布局与打包 hook",[134,208,209],{},"管理 SoC \u002F 板卡共性，不混入客户产品配置",[116,211,212,217,220],{},[134,213,214],{},[101,215,216],{},"vendor",[134,218,219],{},"产品型号、传感器、功能裁剪与 RootFS overlay",[134,221,222],{},"新增产品优先从这里开始",[116,224,225,230,233],{},[134,226,227],{},[101,228,229],{},"scripts\u002Fpackage",[134,231,232],{},"通用固件打包引擎",[134,234,235],{},"扩展新介质、分区策略或升级格式",[116,237,238,247,250],{},[134,239,240,243,244],{},[101,241,242],{},"lib"," \u002F ",[101,245,246],{},"third_party",[134,248,249],{},"平台预编译库与第三方依赖",[134,251,252],{},"使用和再分发前确认各自许可证或 SDK 条款",[88,254],{},[81,256,257],{"id":257},"关键链路",[110,259,260,270],{},[113,261,262],{},[116,263,264,267],{},[119,265,266],{},"链路",[119,268,269],{},"说明",[129,271,272,280,288,296],{},[116,273,274,277],{},[134,275,276],{},"实时预览",[134,278,279],{},"浏览器通过 WHEP \u002F WebRTC 播放设备码流，可在主 \u002F 子码流之间切换；智能事件可订阅，并在视频层叠加检测框",[116,281,282,285],{},[134,283,284],{},"录像回放",[134,286,287],{},"按日期检索，在 24 小时时间轴上定位片段；通过独立的 WHEP 回放会话播放设备端录像，不占用直播会话",[116,289,290,293],{},[134,291,292],{},"AI 与事件联动",[134,294,295],{},"本地检测结果进入统一事件模型，经布防时间与目标过滤等规则，联动录像、抓图、声音、灯光和报警输出",[116,297,298,301],{},[134,299,300],{},"固件升级",[134,302,303],{},"客户端经 JSON-RPC 分片上传，首片预检产品、版本、大小、MD5 与资源预算；设备采用 A\u002FB 分区，边收边写非活动槽并回读校验镜像 SHA-256，提交后切换启动槽，新系统启动失败时自动回退",[88,305],{},[81,307,308],{"id":308},"技术选型",[110,310,311,321],{},[113,312,313],{},[116,314,315,318],{},[119,316,317],{},"层面",[119,319,320],{},"技术",[129,322,323,331,339,347,355],{},[116,324,325,328],{},[134,326,327],{},"语言与构建",[134,329,330],{},"C \u002F C++17，HAL 为纯 C 接口；CMake，Python 构建与打包；Linux 5.10",[116,332,333,336],{},[134,334,335],{},"流媒体",[134,337,338],{},"自研 stream_service，组合 ireader \u002F media-server 与 libdatachannel，提供 RTSP、WebRTC \u002F WHEP、RTMP",[116,340,341,344],{},[134,342,343],{},"基础库",[134,345,346],{},"FFmpeg、SQLite、OpenSSL、spdlog、nlohmann\u002Fjson；自研 web_client 作为访问外部云服务的 HTTP \u002F HTTPS 与 WebSocket 客户端",[116,348,349,352],{},[134,350,351],{},"Web",[134,353,354],{},"Vue 3、Pinia、Vue Router、Ant Design Vue、Vite 5、Vue I18n",[116,356,357,360],{},[134,358,359],{},"AI 与扩展",[134,361,362],{},"本地 YOLO 目标检测与自定义模型；MCP、Agent、Qwen、阿里云 ASR \u002F TTS、OpenAI 兼容模型为可选扩展",[88,364],{},[81,366,367],{"id":367},"定制入口",[369,370,371,382,391,400,409],"ul",{},[372,373,374,378,379,381],"li",{},[375,376,377],"strong",{},"新增产品型号","：从 ",[101,380,216],{}," 开始，定义型号、传感器、功能裁剪和 RootFS overlay；",[372,383,384,387,388,390],{},[375,385,386],{},"适配新板卡","：在 ",[101,389,203],{}," 管理 SoC \u002F 板卡共性，包括板级 RootFS、内核、启动文件、分区布局与打包 hook；",[372,392,393,396,397,399],{},[375,394,395],{},"适配新 SoC","：需要同时适配工具链、HAL、板级文件和打包流程，HAL 实现遵守 ",[101,398,190],{}," 的接口契约；",[372,401,402,405,406,408],{},[375,403,404],{},"新增协议、接入或云服务适配","：放在 ",[101,407,164],{},"；",[372,410,411,414],{},[375,412,413],{},"新增算法或事件","：通过模型文件管理与统一事件模型接入。",[77,416,417,418,423],{},"公开版当前只覆盖 Hi3516CV610 的 ipc200；其他平台的适配范围按目标产品评估，见",[419,420,422],"a",{"href":421},"\u002Fproducts\u002Fbrief\u002Fmarketing","产品介绍","。软件和硬件均可定制：软件源码可商业授权，硬件提供原理图、PCB 和可生产资料，授权范围与交付物以正式协议为准。",[88,425],{},[81,427,428],{"id":428},"访问与安全边界",[369,430,431,434,437,440],{},[372,432,433],{},"登录采用服务端 nonce 挑战应答，业务访问使用 Bearer Token；",[372,435,436],{},"角色分为管理员、操作员、查看者，JSON-RPC 方法与 WebSocket \u002F WHEP 入口执行统一权限检查；",[372,438,439],{},"设备原生入口当前是 HTTP，不提供设备内置 HTTPS \u002F TLS，部署到不可信网络时需要受控网络、VPN 或反向代理提供传输保护；",[372,441,442],{},"固件签名、安全启动和视频加密当前不在承诺范围内。",[88,444],{},[81,446,447],{"id":447},"联系我们",[369,449,450],{},[372,451,452,455,456,460],{},[375,453,454],{},"联系方式","：关注微信公众号并直接私聊，二维码见",[419,457,459],{"href":458},"\u002Fsupport#wechat-contact","服务支持","。",{"title":103,"searchDepth":462,"depth":462,"links":463},2,[464,465,466,467,468,469,470,471],{"id":83,"depth":462,"text":83},{"id":92,"depth":462,"text":92},{"id":108,"depth":462,"text":108},{"id":257,"depth":462,"text":257},{"id":308,"depth":462,"text":308},{"id":367,"depth":462,"text":367},{"id":428,"depth":462,"text":428},{"id":447,"depth":462,"text":447},"说明 Endless 的分层依赖方向、目录职责、关键链路与定制入口。","md","中文",{},true,"\u002Fproducts\u002Fbrief\u002Farchitecture",{"title":64,"description":472},"products\u002Fbrief\u002Farchitecture","_79zufWB4nJtnXd2RI7fRbXyyjpob3uKI0zoMI4Qqao",[482,483],null,{"title":484,"path":485,"stem":486,"description":487,"children":-1},"Architecture Document","\u002Fproducts\u002Fbrief\u002Farchitecture-en","products\u002Fbrief\u002Farchitecture-en","The layering and dependency direction of Endless, directory responsibilities, key flows and customization entry points.",1792541372811]