# TK_live **Repository Path**: wangfengming/tk_live ## Basic Information - **Project Name**: TK_live - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-06 - **Last Updated**: 2026-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TK LiveHub — 海鸥双屏推流工作台 面向 TikTok 主播的 **Windows 桌面双路直播工作台**:当前任务内横屏(电脑端 16:9)与竖屏(手机端 9:16)两条独立 lane(独立素材/画布/编码/推流目标/预览),四种推流模式(伴侣双推/伴侣横+海鸥竖/海鸥横+伴侣竖/海鸥双推)。账号会话按任务隔离;多任务并行运行时、任务代理和真实平台开播仍按差距明细逐项验收,不把“双 lane 独立”外推为“多任务完全隔离”。 > 本项目只参考参考产品的功能、界面、交互及允许研读的公开明文资源;账号浏览器与捕获管理等少量自包含明文模块的复用在源码头部和 `docs/06` 中单独记录。**不复制、逆向或分发参考产品的二进制、混淆核心或私有协议实现**。 ## 参考项目位置(唯一权威,2026-11-06 更新) | 用途 | 路径 | 说明 | | ------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | | 当前开发项目 | `C:\workspace\tk\TK-LiveHub` | 本仓库;旧文档中的 `E:\prodect\TK-LiveHub` 已作废 | | **参考项目(便携包)** | `C:\workspace\tk\TK-LiveHub-1.1.35-win-x64` | 第三方商业产品 TK LiveHub **v1.1.35 / win-x64**,2026-10-30 构建;旧文档中的 `D:\TK-LiveHub` 在本机不存在 | | 参考包压缩源 | `C:\workspace\tk\TK-LiveHub-1.1.35-win-x64.zip` | 769MB,解压后即上表目录 | | 明文资源(可合法研读) | `C:\workspace\tk\TK-LiveHub-1.1.35-win-x64\app\resources\app.asar`(36.5MB)与 `app.asar.unpacked\` | asar 内明文 JS/CSS/配置;提取数据区基址 = `8 + readUInt32LE(4)` | | | | | | 官方客户端(非参考包) | `C:\Program Files\TikTok LIVE Studio`(1.39.2) | 真实 TikTok LIVE Studio,PartnerBridge 的探测目标 | > 本机实测只有 C: 一个盘,`D:\TK-LiveHub`、`E:\prodect\TK-LiveHub` 均为历史路径、当前不存在。**所有文档统一以本表为准,路径变更只改这一处**;`docs/06` §1.1 的「复用优先」核查对象即本表参考项目目录内的 `app.asar` 明文模块。参考包只作组件与流程参考,本项目保留双路独立推流 + 四模式设计,不转向其矩阵任务工作台。 ## 当前开发进度(2026-11-06) > 历史台账见 **`docs/04-开发进度与参考对比.md`**;最新参考核对与交付差距以 **`docs/08-参考产品核对与交付差距明细.md`** 为准。双路 RTMP、双路音频三场景、运行时隔离/DPAPI/日志诊断脱敏、VLESS 受控协议/Chromium 和当前成品迁移已有本机实测;真实 TikTok 登录、取码、平台开播与观众端效果仍未验证,不再使用“全部完成/全部实测”的笼统口径。当前只承诺单组双 lane 的任务内隔离,不承诺多任务独立并行矩阵。 - **双路画布(地基)**:两条独立 lane,各出独立 flv(ffprobe 含音视频)、双 canvas 预览采样非黑、杀一路另一路不断(进程隔离) - **四模式**:PushMode 持久化,伴侣侧 lane 本程序不编码不推流只显示状态;`partner_dual` 下零 ffmpeg 进程;四种模式逐一实测日志证据齐全 - **图层 8 项全落 ffmpeg filter**:置顶/置底(zIndex 重建滤镜图)、镜像(hflip/vflip)、铺满(scale increase + 居中 crop)、居中、旋转(rotate + 非 90° 补 pad)、裁剪(crop 坐标换算)、不透明度(colorchannelmixer aa)、参考线吸附(前端 6px 阈值,画布中线/三分线/图层边缘);每项导出静态帧肉眼验收 - **OBS 本地直连端到端**:内嵌 mediamtx 接收 OBS 推流(生成即启动、API+TCP 双探测就绪)、UI 展示 Server/Key 一键复制、OBS→mediamtx→本程序→flv 全链路实测、关 OBS 后该源显示「等待 OBS 推流」不挂管线 - **UI 改版**:按设计稿落地深色双屏工作台(顶栏/任务矩阵/四模式卡片/双画布/右栏 6 Tab);清理全部测试任务残留;无素材显示「请添加素材」(引擎层不再用 testsrc2 冒充,无素材推流如实失败);FPS 显示真实输出帧率(Δframe/Δtime,修复 218 假象) - **TikTok 登录入口**:新建任务默认娱乐直播并打开 `https://www.tiktok.com/login`;可切换带货后台,显式保存为带货的旧任务不被强制改写;已打开窗口可真正切换地址。地址与同窗口导航已实测,真实账号登录和身份核验仍待真机 - **VLESS 账号浏览器代理**:支持 VLESS URI 解析、官方 sing-box 协议转换、任务绑定、当前用户 DPAPI、错误提示与资源清理;本机受控 HTTP/HTTPS 和真实 Chromium 五模式已实测。当前只覆盖账号浏览器与取码页面,**不改变 FFmpeg/RTMP 推流线路**;合法外部节点和 TikTok 实际登录仍需单独验收 ## 目录结构 ``` C:\workspace\tk\TK-LiveHub (参考项目位置见上文「参考项目位置」) ├─ docs/ │ ├─ 01-PRD-产品需求文档.md # 完整功能清单 + 交互(以参考产品为基准) │ ├─ 02-架构设计文档.md # 分层架构图 + 模块划分 + 接口协议 │ ├─ 03-TikTok开播接入方案.md # 开播编排方案(含前置条件清单) │ ├─ 04-开发进度与参考对比.md # 【进度台账】参考产品功能 → 我们状态 → 差距 → 计划 │ ├─ 05-测试文档.md # 实测记录(每项功能的验证证据) │ ├─ 06-开发约束与验收标准.md # 复用优先/实测验收/禁止虚报/按钮完整性约束 │ ├─ 07-客户交接与真实环境验证清单.md # 【交付用】解压启动/迁移/已验证与未验证/验收步骤 │ ├─ 08-参考产品核对与交付差距明细.md # 【当前权威】34项对比、参考优势、P0-P2修复顺序 │ ├─ 开发任务书-功能补齐.md # 本轮 5 项补齐规格 │ └─ design/双屏直播工作台设计稿.html # UI 设计稿 ├─ src/ │ ├─ shell/ # Electron 壳(顶栏 + 任务矩阵 + 双画布 + 6 Tab 面板) │ │ ├─ main/ # 主进程(窗口/账号浏览器/CDP 取码/OBS 控制/IPC) │ │ ├─ preload/ # 安全桥 │ │ └─ renderer/ # 渲染层 │ ├─ core-cs/TKLiveHub.Core/ # C# 核心(LaneEngine×2 + StreamManager + 定时调度 + OBS 接入) │ └─ ... ├─ bin/ │ ├─ ffmpeg/ # FFmpeg 编码器 │ ├─ mediamtx/ # 本地 RTMP 服务器(测试 + OBS 接入) │ ├─ sing-box/ # 官方 VLESS 运行时(含 LICENSE/SOURCE) │ └─ out/ # 验收证据输出(flv/静态帧) ├─ tools/ │ ├─ pack.js # 便携打包(含交付卫生清理 + 核心占用检查) │ ├─ make-zip.py # 标准 ZIP 生成(PK 头 + CRC 自检) │ ├─ e2e-rtmp.py / e2e-audio.py # 双路 RTMP 与音频端到端回归 │ ├─ runtime-safety.py # 任务隔离、DPAPI 与日志/诊断脱敏专项 │ ├─ vless-regression.js # VLESS 配置、HTTP/HTTPS 真实协议回环 │ ├─ browser-proxy-regression.cjs # 真实 Chromium 五模式与错误页回归 │ └─ ui-smoke.js # 首启/授权/账号与真实按钮 CDP 验收 └─ dist/ # 打包产物 ``` ## 快速开始 ### 开发环境 ```bash # 安装 .NET 8 SDK(编译核心用) # 安装 Node.js 22+(壳开发用) # 安装 Python 3(回归测试与 ZIP 打包用) # 编译核心 dotnet build src/core-cs/TKLiveHub.Core/TKLiveHub.Core.csproj -c Release -r win-x64 # 启动壳(开发模式) cd src/shell env -u ELECTRON_RUN_AS_NODE node_modules/electron/dist/electron.exe . ``` > **SDK 用户级安装的注意点**:若用官方 `dotnet-install` 脚本把 SDK 装到用户目录(如 `%LOCALAPPDATA%\Microsoft\dotnet`),它不会写注册表,framework-dependent 的核心 exe 会报 `You must install .NET`。需把该目录同时加入 `PATH` 并设置用户环境变量 `DOTNET_ROOT` 指向它;或直接 `dotnet publish -c Release -r win-x64 --self-contained true` 生成免运行时产物(推荐,回归与壳默认优先使用)。 ### 便携打包 ```bash node tools/pack.js --no-clean --zip # 产物:dist/TK-LiveHub-portable.zip(标准 ZIP;当前 P1 修复包约 345MiB,免安装) ``` - `--zip` 由 `tools/make-zip.py`(Python 3,标准库 zipfile)生成**真正的 ZIP** 并做 PK 头 + CRC 自检;**不要再用系统 tar**(GNU tar 不支持 `-a` 自动选格式,会产出扩展名叫 .zip 的 tar,客户无法打开)。 - 客户交接与未验证能力清单会复制到成品根目录 `客户交接与真实环境验证清单.md`;ZIP 旁另生成 `SHA256SUMS.txt`,记录 ZIP、主程序、核心 EXE/DLL 和 sing-box 哈希,避免 ZIP 内文档自引用自身哈希。 - 打包会在清理旧产物和编译前核验所有必需壳文件、Electron、运行时依赖、FFmpeg、mediamtx、sing-box 与自验脚本;任一缺项退出 1,不继续生成 ZIP。 - 产品版本只读取 `src/shell/package.json#version`。成品根目录 `version.json` 记录同值版本、构建时间、源码清单哈希和文件数,`source-manifest.json` 记录逐源文件 SHA-256;文档修订号不属于产品版本。 - 打包时会自动剔除运行时数据(`data/`、日志、定时计划),保证客户首启干净;核心进程在运行时会拒绝打包(避免 publish 文件锁静默失败)。 - `--no-clean` 为增量覆盖模式(适用于限制批量删除的环境);发布正式交付包前建议先清空 `dist/` 再做全量打包。 - 需要保留正在运行的旧 `dist` 实例时,可构建到独立候选目录:`node tools/pack.js --no-clean --zip --out=dist/candidate/TK-LiveHub`。`--out` 仅允许位于项目 `dist/` 内;占用防护按源构建、源发布和本次输出的实际核心路径检查,不再被其他目录的实例误阻塞。 **当前 P1 稳定性修复便携版(2026-11-06,本机复验通过)**: - 文件:`dist/p1-delivery-2026-11-06/TK-LiveHub-portable.zip`;735 个条目,362,160,946 字节(345.38 MiB),全量 CRC、安全相对路径及 ZIP/发布目录/全新解压目录文件集合和逐文件 SHA-256 均通过。 - ZIP SHA256:`5a8f9ffe9d966cc25223b40bf232fac60a565b5576fbfe3cf1749599e8bfb703`;主程序 SHA256:`1925f358e7f0e9675a5ac4198fb076613f0db318da56d388799a97be74a5b19c`。 - 核心 EXE SHA256:`591d781d86ec5a998ad38edc90a53a31611d5297918ae37a52e58584c4bb3346`;核心 DLL SHA256:`d0f457cbb6a34308a4a2c6630de580c3bef2ec47a538e79bcb0504d133f3c7f8`;sing-box SHA256:`8f30682ee198855440d2a7fe070d5d3653793b2d01bb8c85eea88f93bbe7c8b9`。 - 产品版本为 `1.0.0`,源码、成品 `package.json` 与 `version.json` 一致;40 个源文件的逐文件哈希及 `sha256sum-lines-v1` 清单已独立复算,清单 SHA256 为 `a327da6b95482c095d371c3cd1d9d98688d5c17c67f39864ef936b1fba32c998`。 - ZIP 同目录的 `SHA256SUMS.txt` 五项校验均独立匹配;包内客户清单与 `docs/07` 逐字节一致,未携带任务、计划、代理配置或日志。 - 从 ZIP 全新解压到 `dist/p1-delivery-2026-11-06/verify-relocated/TK-LiveHub` 后,移除 `DOTNET_ROOT` 启动,实际壳、核心及音频编码 FFmpeg 均来自该目录。两种视口 UI、四模式七场景 RTMP、8 路有效画面、部分失败回滚与重试、双路音频三场景、VLESS HTTP/HTTPS 及 Chromium 五模式全部重新实测通过。 - 结束时任务、代理、计划均为 0,双路 idle,敏感测试字符串未检出,专用进程与端口全部释放;验收后交付哈希再次匹配。详细证据见 `docs/05` 第二十节。 - **作用边界**:这些是本机受控验收,不是外部 VLESS 节点、真实 TikTok 登录/取码/平台开播/观众端、长播或人工视觉复核通过;VLESS 仍只覆盖账号浏览器和取码页面,不改变 FFmpeg/RTMP 推流线路。 **历史 VLESS 随包文档交付版复验记录(2026-11-06,已被 P1 修复版取代)**: - 文件:`dist/vless-delivery-2026-11-06/TK-LiveHub-portable.zip`;734 个条目,362,154,042 字节(345.38 MiB),全量 CRC 通过,无随包任务、计划、代理节点或日志数据。 - ZIP SHA256:`c65dd84b9fa09898bc29da4d3283ea755b38001a6214437bbb04435a661b800a`;主程序 SHA256:`1925f358e7f0e9675a5ac4198fb076613f0db318da56d388799a97be74a5b19c`。 - 包内核心 EXE SHA256:`5d59a58a403417235f8340c5be179708cb1927350663984e1d4dd46ffeb1053e`;核心 DLL SHA256:`89b0b7992653296e28933026c87828f5991da419d58b159eb7e59b665dcf02fe`。 - 包内 sing-box 1.14.4 的 EXE SHA256:`8f30682ee198855440d2a7fe070d5d3653793b2d01bb8c85eea88f93bbe7c8b9`,LICENSE 与 SOURCE 均已随包。 - 成品根目录已附 `客户交接与真实环境验证清单.md`;ZIP 同目录的 `SHA256SUMS.txt` 记录上述关键文件身份。ZIP 内清单不写自身大小或哈希,避免重打后失效。 - 最终 ZIP 已重新解压到全新目录复验:无 `DOTNET_ROOT` 自包含启动、干净首启、两种视口真实按钮 UI、包内 RTMP 两轮、双路音频三场景、成品 VLESS HTTP/HTTPS 协议回环及 Chromium DIRECT/SOCKS5/HTTP/HTTPS/VLESS 五模式均通过。两种视口截图已生成,但图像读取模型不可用,不声称完成人工视觉复核。详细证据见 `docs/05` 第十九节。 - 与 733 条目候选包相比,本次新增客户清单;重新 publish 的核心 EXE/DLL/PDB 与 `version.json` 也发生变化,因此没有沿用候选包的实测结论,上述最终成品回归均已重新执行。 - **作用边界**:VLESS 当前只接入账号浏览器与取码页面,不改变 FFmpeg/RTMP 推流线路。真实 `www.tiktok.com` 经本机 VLESS 服务出口的 TLS 建连仍失败;合法外部节点、真实登录、平台开播与观众端均未验收。 - 历史 VLESS 候选 ZIP 为 733 个条目、362,145,586 字节,SHA256 `240ac85c1fa2a69f89d8d7fabd9f0efe2823cf04a348f9b03712c363cdb8b284`;历史娱乐默认版 ZIP 为 729 个条目、334,458,187 字节,SHA256 `ff310b4cbe15cbc3e36d319559dc3aee715199a9cfe126f53f1fc2751b8b5213`。两者仅作历史记录,不能用于当前交付包。 ### 回归测试 ```bash # 端到端 RTMP 四模式与故障回滚回归: # 本地 mediamtx 起服 → 建任务/加测试源 → 四种 pushMode 逐场景核验指定 lane # → 双路部分失败整体报错并回滚 → 补回素材重试 # → ffprobe 拉流验证 + PNG 真实解码尺寸/颜色/动态范围 → 活跃发布与清理断言 python tools/e2e-rtmp.py # 双路音频专项:AAC + 双路频率隔离 + 横屏混音 + 两种无音轨素材场景 # (使用 440/880/1000Hz 合成音源和 Goertzel 检测,不连接真实平台) python tools/e2e-audio.py # 运行时隔离与敏感信息专项:A/B 任务、预览/正式停止、定时操作、 # DPAPI 旧明文迁移与同用户重启解密、FFmpeg/日志/诊断包脱敏。 python tools/runtime-safety.py # 验收正在运行的成品/便携包(不启动、不关闭它,也不动已有任务): # 先双击 dist/TK-LiveHub/TK LiveHub.exe,再执行: python tools/e2e-rtmp.py 59554 --external # 首启/授权/账号弹窗 UI 验收(先以 --remote-debugging-port=9223 启动开发壳) node tools/ui-smoke.js 9223 # 小窗口复验:UI_WIDTH=1280 UI_HEIGHT=720 node tools/ui-smoke.js 9223 # VLESS 配置校验、真实 HTTP/HTTPS 协议回环、错误节点与资源清理 node tools/vless-regression.js # 真实 Chromium DIRECT/SOCKS5/HTTP/HTTPS/VLESS 五模式(不访问 TikTok) env -u ELECTRON_RUN_AS_NODE ./src/shell/node_modules/electron/dist/electron.exe ./tools/browser-proxy-regression.cjs ``` 两个代理脚本可通过 `TKLH_APP_MAIN_DIR`、`TKLH_SING_BOX` 指向解压成品;便携 EXE 本身会优先启动内嵌应用,浏览器脚本须用哈希一致的 Electron 测试入口。`vless-regression.js --with-public-tiktok` 是额外公网诊断,当前经本机 VLESS 出口的 TLS 失败,不能列为通过项。 脚本优先选用**自包含发布**的核心(`win-x64/publish`),无 .NET 运行时的机器也能跑;只有自包含产物不存在时才回退到 framework-dependent 构建(此时需要安装 .NET 8 运行时或设置 `DOTNET_ROOT`)。 ## 客户交接 接收便携包的人请直接读**成品根目录的 `客户交接与真实环境验证清单.md`**(开发仓库源文件为 `docs/07-客户交接与真实环境验证清单.md`):怎么解压启动、运行环境要求、数据存放位置(迁移/换机必看)、已验证与未验证的明确分界、真实环境验收步骤、常见问题。ZIP 旁的 `SHA256SUMS.txt` 用于核对文件身份,两者都应一并交接。 ## 真机联调前置条件 详见 `docs/03` §0。核心要点: - 必装:TikTok LIVE Studio(官方下载)、TikTok 手机 App - 账号:18+、≥1000 粉(多数地区)、注册满 30 天、近 180 天有 ≥25 分钟直播、无违规 - **不需要申请 TikTok 开发者账号**(公开文档无 LIVE 开播 API) - OBS 直连:本机装 OBS Studio,「设置→推流」填本程序生成的 Server/Key(任务内一键生成/复制) ## 已验证(本机实测,证据见 docs/05) - ✅ 双路画布:双独立 flv + ffprobe 音视频 + 双 canvas 采样非黑 + 隔离性(11/11) - ✅ 四模式:四种各跑一次的进程数/lane 状态日志证据 + partner_dual 零 ffmpeg + 持久化(6/6) - ✅ 图层 8 项:每项 ffmpeg 静态帧导出 + 肉眼验收(13/13) - ✅ OBS 端到端:OBS→mediamtx→本程序→flv 含音视频(9/9) - ✅ UI 改版:干净首启 + 全流程 + 清测试数据 + 空素材态 + FPS 修正(14/14) - ✅ 运行时安全专项:A/B 任务隔离、预览/正式停止、定时操作、DPAPI 迁移与同用户重启解密、日志/诊断脱敏(9 组,见 docs/05 第十六节) - ✅ TikTok 娱乐默认、娱乐/带货配置持久化与同窗口地址导航(历史候选实测见 docs/05 第十八节;不等于真实账号登录) - ✅ VLESS 受控 HTTP/HTTPS、真实 Chromium 五模式、错误节点失败页及当前 P1 成品换目录复验(见 docs/05 第二十节;不等于外部节点、真实 TikTok 或 RTMP-over-VLESS 通过) - ✅ 账号链路(官方接口核验身份)/定时开关播(真实拉起+失败重试)/多输出通道(split/asplit 双路)/屏蔽词寄语/日志/更新检查;这些历史本机结果不等于真实平台验收 --- *本项目基于参考产品公开明文资源进行功能核对;少量明文模块复用按源码头部与 `docs/06` 的清单管理,不触碰参考产品二进制、混淆核心或私有协议禁区。*