{"_id":"@crybaby4x4/scrypted-tplink-cn-talkback","_rev":"3-12cf2b47ce3fbe6f3f56740f7ce96894","name":"@crybaby4x4/scrypted-tplink-cn-talkback","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.3":{"name":"@crybaby4x4/scrypted-tplink-cn-talkback","version":"0.0.3","keywords":["scrypted-plugin","scrypted","tplink","camera","ipc","talkback","two-way-audio","multitrans"],"license":"Apache-2.0","_id":"@crybaby4x4/scrypted-tplink-cn-talkback@0.0.3","maintainers":[{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"}],"dist":{"shasum":"76022a4ecc066466e75711fd19a46703c351a931","tarball":"https://registry.npmjs.org/@crybaby4x4/scrypted-tplink-cn-talkback/-/scrypted-tplink-cn-talkback-0.0.3.tgz","fileCount":5,"integrity":"sha512-gAUWNp3npqSIKOhGzYVLNFoLqS0bxLM7tDCAAuDWrKdfSwxE7g8+FqFgyiLTrBwfgqQJvEFZUGvymjPbn/Fq9A==","signatures":[{"sig":"MEYCIQC4BNkuhpOZnqQ7I37oiBOmpQbmt+8nHwbfD99Ovq7WQwIhAKowE9dtvDcm+ik3609uAayYQp1xFZGOX8/sgd6AxqWT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212619},"gitHead":"e34e05b5c4af167f02b375eada41884028797a8e","scripts":{"build":"scrypted-webpack","watch":"webpack --watch","deploy":"scrypted-deploy"},"_npmUser":{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"},"scrypted":{"name":"TP-Link IPC CN Two-Way Audio","type":"MixinProvider","interfaces":["MixinProvider"]},"_npmVersion":"11.9.0","description":"Scrypted plugin for TP-Link IPC Chinese version cameras with two-way audio via MULTITRANS protocol","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@scrypted/sdk":"^0.5.58"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.0.0","ts-loader":"^9.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","webpack-cli":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/scrypted-tplink-cn-talkback_0.0.3_1774677043712_0.6329639870787667","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@crybaby4x4/scrypted-tplink-cn-talkback","version":"0.0.4","keywords":["scrypted-plugin","scrypted","tplink","camera","ipc","talkback","two-way-audio","multitrans"],"license":"Apache-2.0","_id":"@crybaby4x4/scrypted-tplink-cn-talkback@0.0.4","maintainers":[{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"}],"dist":{"shasum":"b106ec00bb9092fb3700831a174f2d0a21fe1ced","tarball":"https://registry.npmjs.org/@crybaby4x4/scrypted-tplink-cn-talkback/-/scrypted-tplink-cn-talkback-0.0.4.tgz","fileCount":5,"integrity":"sha512-9sJcmDxCeiQKYkv1EWGufjTxinlD3KolpOkw7Hcm1mnZ7t/xfmmyIRoXRDAwpkgD2tcBh470DUYRNgz7hm1/UA==","signatures":[{"sig":"MEUCIQDmBKPSG3Y3OQagF/mSpiNVX+1aiFU6wvF3/vyWV+DVmQIgdfv0Ktf0rKz5scQf7QjUlxL6iiQ4LJOGz+mnOOJIOzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193954},"gitHead":"0bf93ca9255f840f81ab9934c47d5c45b4e65b57","scripts":{"build":"NODE_ENV=production scrypted-webpack","watch":"webpack --watch","deploy":"scrypted-deploy"},"_npmUser":{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"},"scrypted":{"name":"TP-Link IPC CN Two-Way Audio","type":"MixinProvider","interfaces":["MixinProvider"]},"_npmVersion":"11.9.0","description":"Scrypted plugin for TP-Link IPC Chinese version cameras with two-way audio via MULTITRANS protocol","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@scrypted/sdk":"^0.5.58"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.0.0","ts-loader":"^9.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","webpack-cli":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/scrypted-tplink-cn-talkback_0.0.4_1774713273535_0.9511450567677313","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@crybaby4x4/scrypted-tplink-cn-talkback","version":"0.0.6","description":"Scrypted plugin for TP-Link IPC Chinese version cameras with two-way audio via MULTITRANS protocol","keywords":["scrypted-plugin","scrypted","tplink","camera","ipc","talkback","two-way-audio","multitrans"],"license":"Apache-2.0","scripts":{"build":"NODE_ENV=production scrypted-webpack","deploy":"scrypted-deploy","watch":"webpack --watch"},"scrypted":{"name":"TP-Link IPC CN Two-Way Audio","type":"MixinProvider","interfaces":["MixinProvider"]},"dependencies":{"@scrypted/sdk":"^0.5.58"},"devDependencies":{"@types/node":"^20.0.0","ts-loader":"^9.0.0","typescript":"^5.0.0","webpack":"^5.0.0","webpack-cli":"^5.0.0"},"gitHead":"2afa811628855798ac42cf92ba1c49f9ef2dd9e0","_id":"@crybaby4x4/scrypted-tplink-cn-talkback@0.0.6","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-HZEd3yFZHzdeAeHhTKPGq1KcbiNzKtH5v7E64T3rvGug5/ZlksL/5VtPJ9XFu2SJhhzEjMd/TXbf3IGm+7N5cQ==","shasum":"719580c2a65cb873d28609d5e474bfca19472d83","tarball":"https://registry.npmjs.org/@crybaby4x4/scrypted-tplink-cn-talkback/-/scrypted-tplink-cn-talkback-0.0.6.tgz","fileCount":5,"unpackedSize":226132,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICIybews0kW7uc9xA5cIVWdnTizYPkm78gbtyv2yvQUhAiBnZAt/g0ZoB/j6tJCwki1Gz8Q73U8z5VlV5eOtxtelBg=="}]},"_npmUser":{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"},"directories":{},"maintainers":[{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scrypted-tplink-cn-talkback_0.0.6_1775916974894_0.16800598172971615"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-28T05:50:43.558Z","modified":"2026-04-11T14:16:15.137Z","0.0.3":"2026-03-28T05:50:43.848Z","0.0.4":"2026-03-28T15:54:33.705Z","0.0.6":"2026-04-11T14:16:15.042Z"},"license":"Apache-2.0","keywords":["scrypted-plugin","scrypted","tplink","camera","ipc","talkback","two-way-audio","multitrans"],"description":"Scrypted plugin for TP-Link IPC Chinese version cameras with two-way audio via MULTITRANS protocol","maintainers":[{"name":"crybaby4x4","email":"crybaby4x4@gear4ai.com"}],"readme":"# TP-Link IPC CN Two-Way Audio — Scrypted Plugin\n\n为国内版 TP-Link IPC 摄像头添加真正的双向音频（对讲）支持。\n\n> 适用于：TP-Link IPC 系列（国内版），不适用于国际版 Tapo。\n\n---\n\n## 特性\n\n本插件以 **MixinProvider** 方式追加在已有 ONVIF 摄像头上，无需重新添加设备，原有的人体检测、云台控制、动作侦测等功能完全保留。\n\n---\n\n## 系统架构\n\n```\nHomeKit / Scrypted UI\n        │\n        ├─── 视频流 ──▶ Scrypted ONVIF 插件 ──▶ 摄像头（直连）\n        │\n        └─── 话筒 ────▶ TalkbackMixin（本插件）──▶ 摄像头 TCP（MULTITRANS 直连，默认 554）\n```\n\n| 组件 | 职责 |\n|------|------|\n| **Scrypted ONVIF 插件** | 视频流、人体检测、动作侦测、云台、快照 |\n| **本插件（TalkbackMixin）** | 双向音频：直连摄像头 MULTITRANS 协议 |\n\n### Mixin 架构\n\n```\nScrypted ONVIF 设备（保留所有原有功能）\n  └── TalkbackMixin（本插件追加）\n        ├── 覆盖 Intercom 接口 → MULTITRANS 协议\n        └── 代理 Settings 接口 → 合并显示 ONVIF + Talkback 配置\n```\n\n只需要：摄像头网络可达 + Scrypted 已通过 ONVIF 接入摄像头。\n\n---\n\n## 使用指南\n\n### 前提条件\n\n- Scrypted 已通过 ONVIF 插件添加 TP-Link 摄像头，视频流正常\n- Scrypted 服务器与摄像头在同一局域网\n- 摄像头的 RTSP 端口（默认 554）可被 Scrypted 服务器访问\n\n### 安装插件\n\n在 Scrypted 管理界面（`https://你的IP:10443`）：\n\n1. 左侧菜单 → **Plugins**\n2. 搜索 `@crybaby4x4/scrypted-tplink-cn-talkback`，点击安装\n\n### 启用双向音频\n\n1. 打开目标摄像头设备\n2. 进入 **Extensions（扩展）** 标签\n3. 找到 **TP-Link IPC CN Two-Way Audio** → 点击启用\n4. 在设备 **Settings** 页面，滚动到 **TP-Link Talkback** 分组：\n\n   | 字段 | 说明 |\n   |------|------|\n   | Camera IP Address | 摄像头 IP，通常与 ONVIF 的 IP 相同 |\n   | RTSP Port | MULTITRANS 协议端口，默认 `554` |\n   | Username | 摄像头登录用户名（通常为 `admin`） |\n   | Password | 摄像头登录密码 |\n   | Duplex Mode | `half_duplex`（默认）：对讲模式，说话时无法同时收听；`full_duplex`：全双工，可同时说话和收听 |\n\n5. 保存后话筒按钮即可正常使用\n\n### 使用对讲\n\n- 在 Scrypted 或 HomeKit 中点击话筒按钮，即可向摄像头端说话\n- 默认为 `half_duplex` 模式；如需全双工可在设置中切换为 `full_duplex`\n\n---\n\n## MULTITRANS 协议说明\n\n国内TP-Link 双语音私有协议\n\n### 握手流程\n\n```\n客户端  →  MULTITRANS rtsp://ip/multitrans RTSP/1.0\n           CSeq: 0  X-Client-UUID: <uuid>\n\n摄像头  →  200 OK（部分固件）或 401（需要 Digest 认证）\n           Session: <session_id>\n\n客户端  →  MULTITRANS ... + Session + Content-Type: application/json\n           {\"type\":\"request\",\"seq\":0,\"params\":{\"method\":\"get\",\"talk\":{\"mode\":\"half_duplex|full_duplex\"}}}\n\n摄像头  →  200 OK  {\"error_code\":0, \"session_id\":\"2\"}\n```\n\n> **注意**：不同固件版本行为不同。部分摄像头直接返回 200（无需认证），部分需要 Digest。已兼容两种情况。\n\n### 音频格式\n\n| 参数 | 值 |\n|------|-----|\n| 编码 | PCM A-law (`pcm_alaw`) |\n| 采样率 | 8000 Hz |\n| 声道 | 单声道 (mono) |\n| 传输 | RTP over UDP → 封装为 RTSP interleaved frame → TCP |\n\nRTSP interleaved 帧格式：`$ | channel(0x01) | length(2B BE) | rtp_payload`\n\n### FFmpeg 转码参数\n\n```\n-af aresample=8000,pan=mono|c0=c0,adelay=300:all=1,arealtime\n-acodec pcm_alaw -ar 8000 -ac 1\n-f rtp rtp://127.0.0.1:<udp_port>\n```\n\n---\n\n## 已知限制\n\n- 部分固件仅支持 `half_duplex`，切换为 `full_duplex` 后若对讲无效，请恢复默认值\n\n---\n\n## 参考资料与致谢\n\nMULTITRANS 协议实现基于以下开源项目的逆向工程成果：\n\n- **[hass-tplink-ipc](https://github.com/bingooo/hass-tplink-ipc)**（作者：bingooo）\n  - Home Assistant 版本的 Python 实现\n\n- **[go2rtc multitrans](https://github.com/AlexxIT/go2rtc/blob/master/pkg/multitrans/client.go)**（作者：AlexxIT）\n  - go2rtc中 的 go 版本实现\n\n- **[Scrypted Developer Docs](https://developer.scrypted.app)**\n  - 插件开发指南\n\n本插件在上述参考基础上新增：\n- TypeScript/Node.js 实现\n- 200/401 双认证流程兼容（部分固件跳过 Digest 认证直接返回 200）\n- Scrypted MixinProvider 集成（保留 ONVIF 原有功能）\n","readmeFilename":"README.md"}