抖剧TV的桌面端并不是网页播放器的简单套壳,而是把Electron运行时、React交互层与mpv.net原生内核拆成明确边界:界面负责检索、登录、收藏与状态管理,真正的解码、缓存与全屏控制下沉到本地播放器。这种分层让跨端开发效率与专业观影能力可以同时成立。
架构上,Electron主进程承担窗口渲染、IPC通信、Cookie会话、文件下载与自动更新等系统职责;preload作为安全桥接层,隔离前端与主进程权限。React 19配合TypeScript构建全部UI、全局状态与路由切换,Vite负责源码编译并输出静态产物。涉及登录、收藏等需要会话的业务请求,统一由主进程发起,既能规避浏览器跨域限制,也能让账号状态在客户端内持久化。全局参数集中在统一配置中,主进程与前端共同读取,避免接口域名、播放参数与更新策略散落在各处。
原生播放器的集成原理,核心是主进程通过命名管道与mpv.net建立IPC,从而精准控制播放生命周期。起播时系统会清空原有播放列表,再批量导入当前剧集资源,保证播放器侧只呈现对应影片。窗口比例、自适应缩放等基础参数来自全局player配置;硬件解码、网络缓存、缓冲策略则落在播放器配置文件中,默认开启D3D11高性能渲染、安全硬解与约30秒预缓存,以提升高清流的流畅度。控制栏与键盘鼠标交互由uosc及定制Lua脚本完成,覆盖剧集切换、点击双击与ESC等沉浸式操作。发布形态上,客户端采用多文件运行,mpvnet内核目录必须与可执行程序同级,否则播放器无法启动;非Electron环境则可用hls.js作为HLS预览的兜底方案。
因此,Electron+React解决的是“能看、能管、能更新”,mpv.net解决的是“能硬解、能缓存、能全屏”。两者通过主进程IPC与配置分层协同,构成抖剧TV跨端界面与原生播放能力并存的技术骨架。
参与讨论
分层架构思路挺清晰的