Files
MAcode/docs/CC码音视频监管系统-技术方案.md
T

665 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CC码音视频监管系统——可落地技术方案
> 基于业务版方案的技术实现规划
> 编制日期:2026年7月
---
## 一、技术架构总览
### 1.1 架构原则
| 原则 | 说明 |
|------|------|
| **复用现有基础** | 在TCS-IPTV系统(Go+Gin+PostgreSQL)上扩展,不推倒重来 |
| **云原生** | Kubernetes容器化部署,微服务架构,支持水平扩展 |
| **等保三级** | 所有组件部署于广电云等保三级VPC内 |
| **音视频统一** | 视频和音频共用CC码体系、共用API网关、共用监管架构 |
| **分层解耦** | API网关层、业务服务层、检测引擎层、存储层独立部署、独立扩缩 |
### 1.2 服务拆分
| 服务名 | 语言 | 职责 | 部署形态 |
|--------|------|------|---------|
| **api-gateway** | Go | 统一API网关,鉴权、限流、路由 | K8s Deployment, 3副本 |
| **cc-code-svc** | Go | CC码生成、签发、生命周期管理、码段分配 | K8s Deployment, 3副本 |
| **verify-svc** | Go | CC码验证、状态查询、哈希校验 | K8s Deployment, 5副本 |
| **ugc-code-svc** | Go | UGC批量赋码、码段管理、批量回传 | K8s Deployment, 3副本 |
| **takedown-svc** | Go | 秒级下架指令分发、全网同步、下架验证 | K8s Deployment, 3副本 |
| **appeal-svc** | Go | 申诉接收、审核流转、恢复指令 | K8s Deployment, 2副本 |
| **probe-crawler** | Python | 网络探针爬虫集群,音视频内容采集 | K8s Deployment, 10~50副本 |
| **probe-detector** | Python | 水印提取、指纹比对、AI语义分析 | K8s Deployment + GPU节点 |
| **fingerprint-svc** | Python | 视频/音频指纹提取与入库 | K8s Deployment + GPU节点 |
| **watermark-svc** | Rust/Go | 视频水印嵌入/提取、音频水印嵌入/提取 | K8s Deployment, 3副本 |
| **live-monitor** | Go+Python | 直播/广播实时录制、切片检测、断流指令 | K8s Deployment, 5副本 |
| **admin-frontend** | React | 监管后台、运营管理、数据大屏 | Nginx静态部署 |
---
## 二、技术栈选型
### 2.1 后端服务层
| 组件 | 选型 | 版本 | 选型理由 |
|------|------|------|---------|
| 核心语言 | Go | 1.22+ | 高并发、低延迟,已有TCS-IPTV代码基础 |
| Web框架 | Gin | 1.10+ | 轻量高性能,已有代码基础 |
| ORM | GORM | 2.0+ | Go生态最成熟ORM,已有代码基础 |
| API网关 | Kong | 3.x | 开源成熟,插件丰富(JWT/限流/日志) |
| 服务间通信 | gRPC | — | 内部服务高性能RPCProtobuf契约 |
| 依赖注入 | Wire | — | Go编译时依赖注入,类型安全 |
### 2.2 检测引擎层
| 组件 | 选型 | 版本 | 选型理由 |
|------|------|------|---------|
| 检测服务语言 | Python | 3.11+ | AI/媒体处理生态最丰富 |
| 检测服务框架 | FastAPI | 0.110+ | 异步高性能,自动生成API文档 |
| 任务调度 | Celery + Redis | 最新版 | 异步任务队列,支持GPU任务排队 |
| GPU推理框架 | NVIDIA Triton | 2.x | 多模型并行、动态批处理 |
| 深度学习框架 | PyTorch | 2.x | 模型训练与推理 |
### 2.3 媒体处理层
| 组件 | 选型 | 版本 | 选型理由 |
|------|------|------|---------|
| 视频水印 | 自研(DCT+QIM算法) | — | 广电要求自主可控,需定制标准 |
| 视频水印备选 | Digimarc / 海致BD | 商用 | 快速落地可采购商用方案 |
| 音频水印 | 自研(DSSS+心理声学模型) | — | 抗翻录需定制优化 |
| 音频水印备选 | Fraunhofer AudioMark | 商用 | 成熟商用方案,快速验证 |
| 视频指纹 | 自研(关键帧+深度指纹) | — | 需自建指纹库,不依赖第三方 |
| 视频指纹备选 | 腾讯云/字节火山引擎API | SaaS | 快速验证阶段可调用第三方 |
| 音频指纹 | 自研(频谱图+Constellation Map | — | 类Shazam算法,技术成熟可自研 |
| 音频指纹备选 | ACRCloud / Audible Magic | SaaS | 成熟商用音频识别服务 |
| 视频处理 | FFmpeg | 6.x+ | 开源标准,转码/裁剪/帧提取 |
| 音频处理 | librosa / torchaudio | 最新版 | Python音频分析标准库 |
### 2.4 AI推理层
| 组件 | 选型 | 版本 | 选型理由 |
|------|------|------|---------|
| 推理服务 | NVIDIA Triton | 2.x | GPU模型服务化,动态批处理 |
| 视频语义理解 | CLIP + 时序模型 | — | OpenAI CLIP用于视频帧理解 |
| 视频语义备选 | 商汤/百度多模态API | SaaS | 快速落地可调用第三方 |
| 音频语义理解 | Whisper + 音频Embedding | — | 语音识别+音频特征提取 |
| 模型仓库 | MLflow | 最新版 | 模型版本管理、实验追踪 |
| GPU硬件 | NVIDIA A10 / A100 | — | A10性价比优,A100用于大规模推理 |
### 2.5 数据存储层
| 组件 | 选型 | 版本 | 用途 | 选型理由 |
|------|------|------|------|---------|
| 关系型数据库 | PostgreSQL | 16.x | CC码记录、元数据、码段、申诉 | 已有代码基础,JSONB灵活schema |
| 数据库高可用 | Patroni + etcd | 最新版 | 自动故障切换、读写分离 | PG生态标准HA方案 |
| 缓存 | Redis Cluster | 7.x | 热点CC码状态缓存、限流、分布式锁 | 毫秒级状态查询 |
| 向量数据库 | Milvus | 2.x | 视频/音频指纹向量相似度检索 | 亿级指纹检索 |
| 时序数据库 | ClickHouse | 24.x | 播放数据、检测日志、运营分析 | 海量写入、快速聚合 |
| 对象存储 | MinIO | 最新版 | 视频片段、音频片段、证据包 | S3兼容,私有部署 |
| 搜索引擎 | Elasticsearch | 8.x | 审核报告检索、日志检索 | 全文检索标准方案 |
### 2.6 消息与异步层
| 组件 | 选型 | 版本 | 用途 |
|------|------|------|------|
| 消息队列 | Apache Kafka | 3.x | 下架指令广播、检测任务分发、播放数据回传 |
| 流处理 | Apache Flink | 1.18+ | 实时播放统计、异常检测、直播流处理 |
| 任务队列 | Celery + Redis | 最新版 | 异步任务(爬虫调度、通知发送) |
| 定时调度 | Airflow | 2.x | 定时爬虫、存量补码监控、报表生成 |
### 2.7 基础设施与DevOps
| 组件 | 选型 | 版本 | 用途 |
|------|------|------|------|
| 容器编排 | Kubernetes | 1.29+ | 容器编排、自动扩缩容 |
| 镜像仓库 | Harbor | 2.x | 私有镜像仓库、安全扫描 |
| 密钥管理 | HashiCorp Vault | 最新版 | API Key、数据库密码管理 |
| 指标监控 | Prometheus + Grafana | 最新版 | 指标采集、告警、可视化 |
| 日志采集 | Loki + Promtail | 最新版 | 全链路日志聚合 |
| 链路追踪 | Jaeger / OpenTelemetry | 最新版 | 分布式请求追踪 |
| CI/CD | GitLab CI + ArgoCD | 最新版 | 自动化构建、GitOps持续交付 |
### 2.8 前端层
| 组件 | 选型 | 版本 | 用途 |
|------|------|------|------|
| 管理后台 | React | 18.x | 监管后台、运营管理 |
| UI组件库 | Ant Design | 5.x | 企业级中后台组件 |
| 图表可视化 | ECharts | 5.x | 监管数据可视化 |
| 状态管理 | Zustand | 最新版 | 轻量全局状态管理 |
---
## 三、核心模块技术实现
### 3.1 CC码生成与生命周期管理(cc-code-svc
**复用现有**`tcs-iptv/internal/cccode` 已实现码段分配、序列号生成、PostgreSQL持久化。
**需扩展**
| 功能 | 实现方案 | 数据库表 |
|------|---------|---------|
| CC码生成 | 复用现有Generator,扩展音频内容类型 | `cc_segments`表扩展category字段 |
| 生命周期状态机 | 状态字段+状态机校验,非法转换返回错误 | `cc_records`表增加status字段 |
| 状态变更审计 | 每次变更记录操作人、时间、原因 | 新增`cc_status_log`表 |
| 码段管理 | 广电分配码段给平台,平台在码段内赋码 | `cc_segments`表增加platform_id字段 |
| 码段冻结/回收 | 广电通过API冻结平台码段 | `cc_segments`表增加frozen字段 |
**CC码状态机**
```
pending(审核中)─审核通过→ active(有效)
active ─举报/疑似违规→ paused(暂停)
paused ─核实无违规→ active(恢复)
paused ─确认违规→ taken_down(下架)
active ─授权到期/内容下线→ expired(过期)
```
**关键API**
| 接口 | 方法 | 说明 | 调用方 |
|------|------|------|--------|
| `/api/v1/code/apply` | POST | 申请CC码 | 内容制作方/平台 |
| `/api/v1/code/issue` | POST | 审核通过后签发 | 监管方 |
| `/api/v1/code/status` | GET | 查询CC码状态 | 平台(高频调用) |
| `/api/v1/code/suspend` | POST | 暂停CC码 | 监管方 |
| `/api/v1/code/restore` | POST | 恢复CC码 | 监管方 |
| `/api/v1/code/takedown` | POST | 下架CC码 | 监管方 |
| `/api/v1/code/segment/allocate` | POST | 分配码段给平台 | 监管方 |
| `/api/v1/code/segment/freeze` | POST | 冻结平台码段 | 监管方 |
### 3.2 平台门禁验证(verify-svc
**复用现有**`tcs-iptv/internal/api/handlers.go` 已有 `/content/verify``/content/inject` 等验证接口。
**需扩展**:增加音频内容验证、UGC批量验证、直播实时验证。
**验证流程**
```
平台调用API → API网关鉴权 → verify-svc → Redis缓存查询
├── 命中缓存 → 直接返回状态(毫秒级)
└── 未命中 → 查询PostgreSQL → 写入Redis → 返回(秒级)
```
**四关验证API**
| 关卡 | 接口 | 检查内容 | 响应时间 |
|------|------|---------|---------|
| 上传拦截 | `POST /api/v1/verify/upload` | CC码是否存在、是否在有效号段内 | <100ms |
| 播出校验 | `GET /api/v1/verify/playback?cc_code=xxx` | CC码状态是否active | <50ms(缓存) |
| CDN注入校验 | `POST /api/v1/verify/cdn` | 文件哈希与登记哈希是否一致 | <200ms |
| 终端抽检 | `POST /api/v1/verify/terminal` | 播放内容哈希与登记哈希抽样比对 | <200ms |
**性能设计**
- Redis缓存CC码状态,TTL=10秒,热点码命中率>99%
- verify-svc水平扩展,支持10万QPS
- API网关限流:单平台默认1万QPS,可按需调整
### 3.3 秒级下架指令分发(takedown-svc
**复用现有**`tcs-iptv` 已有 `/content/takedown` 接口。
**需扩展**:从单平台下架升级为全网秒级同步下架。
**技术实现**
```
监管方下达下架指令
├── takedown-svc接收指令
│ ├── 查询CC码关联的所有平台、CDN(从PostgreSQL
│ ├── 生成各平台的下架指令
│ └── 写入Kafka topic: takedown.broadcast
├── Kafka多分区并行消费
│ ├── 消费者1 → 通知视频平台A(HTTP回调)
│ ├── 消费者2 → 通知视频平台B(HTTP回调)
│ ├── 消费者3 → 通知音频平台A(HTTP回调)
│ ├── 消费者4 → 通知CDN全网(API调用)
│ └── 消费者N → ...
└── 各平台/CDN执行下架 → 回传确认 → takedown-svc记录
```
**关键设计**
| 设计点 | 方案 |
|--------|------|
| 指令分发 | Kafka多分区并行,每个平台一个分区,保证并行度 |
| 平台回调 | HTTP POST回调平台下架API,超时3秒,重试2次 |
| CDN清除 | 调用CDN API清除缓存+加入黑名单 |
| 下架确认 | 平台执行后回调确认接口,超时未确认自动告警 |
| 下架验证 | 网络探针分钟后验证URL是否仍可访问 |
| 指令幂等 | 指令ID去重,重复指令不重复执行 |
### 3.4 UGC批量赋码(ugc-code-svc
**技术实现**
```
平台获得码段授权
├── 平台本地赋码(无需实时联网)
│ ├── 从分配的码段中取序号
│ ├── 生成CC码(平台本地完成,毫秒级)
│ └── 嵌入水印(平台转码环节)
└── 批量回传CC码中心(异步)
├── 平台调用 POST /api/v1/ugc/batch-report
├── 请求体:[{cc_code, content_hash, title, uploader_id, timestamp}, ...]
├── 单次最多1000条
└── CC码中心写入PostgreSQL,建立指纹索引
```
**API设计**
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/v1/ugc/segment/apply` | POST | 平台申请码段 |
| `/api/v1/ugc/batch-report` | POST | 批量回传赋码信息 |
| `/api/v1/ugc/batch-verify` | POST | 批量验证UGC的CC码 |
**性能设计**
- 平台本地赋码,零延迟,不影响用户上传体验
- 批量回传异步进行,5分钟一批,不阻塞业务
- 批量回传支持10万条/分钟吞吐
### 3.5 视频水印嵌入与提取(watermark-svc
**技术方案**:基于DCT域量化索引调制(QIM)算法。
**嵌入流程**
```
原始视频 → FFmpeg解码 → 分帧 → DCT变换 → QIM嵌入水印信息 → IDCT → 重新编码
水印信息 = CC码(48bit) + 平台代码(16bit) + 时间戳(32bit)
```
**提取流程**
```
待检测视频 → FFmpeg解码 → 分帧 → DCT变换 → QIM提取水印 → 多帧投票 → 输出CC码
```
**技术参数**
| 参数 | 指标 | 说明 |
|------|------|------|
| 嵌入容量 | 96bit/帧 | CC码48bit + 平台16bit + 时间戳32bit |
| 不可见性 | PSNR > 38dB | 人眼不可察觉 |
| 抗压缩 | H.264/H.265压缩后提取率 > 95% | 常见转码场景 |
| 抗裁剪 | 画面裁剪50%后提取率 > 80% | 多帧冗余保证 |
| 嵌入速度 | 1分钟视频处理 < 10秒 | FFmpeg GPU加速 |
| 提取速度 | 1分钟视频处理 < 5秒 | 关键帧采样提取 |
**实现语言**:Rust(性能要求高,FFmpeg绑定成熟)或 Go+CGO(复用FFmpeg C库)。
### 3.6 音频水印嵌入与提取
**技术方案**:基于扩频水印(DSSS)+心理声学模型。
**嵌入流程**
```
原始音频 → 分帧 → FFT → 心理声学模型计算掩蔽阈值 → DSSS扩频嵌入 → IFFT → 重编码
水印信息 = CC码(48bit) + 平台代码(16bit) + 时间戳(32bit)
```
**技术参数**
| 参数 | 指标 | 说明 |
|------|------|------|
| 嵌入容量 | 96bit/10秒 | 每10秒嵌入一轮完整水印 |
| 不可听性 | SNR > 20dB | 人耳不可察觉 |
| 抗压缩 | MP3 128kbps后提取率 > 90% | 常见音频格式 |
| 抗翻录 | 安静环境翻录提取率 > 70% | 嘈杂环境下降明显,依赖音频指纹兜底 |
| 抗变速 | 0.9x~1.1x范围内提取率 > 80% | 超出范围依赖音频指纹 |
| 嵌入速度 | 1分钟音频处理 < 5秒 | |
| 提取速度 | 1分钟音频处理 < 3秒 | |
> **关键设计**:音频水印作为追溯手段,音频指纹(3.7节)作为主力识别技术。两者独立运行,互为补充。
### 3.7 视频指纹(fingerprint-svc
**技术方案**:关键帧提取 + 深度感知哈希(Deep pHash)。
**指纹提取流程**
```
视频 → FFmpeg关键帧提取(每秒1帧) → ResNet50特征提取 → 降维到256维向量 → 存入Milvus
```
**指纹比对流程**
```
待检测视频 → 同样提取指纹向量 → Milvus余弦相似度检索 → Top-K结果 → 阈值判断
├── 相似度 > 0.85 → 疑似搬运
├── 相似度 0.50~0.85 → 疑似二创
└── 相似度 < 0.50 → 原创内容
```
**技术参数**
| 参数 | 指标 | 说明 |
|------|------|------|
| 指纹维度 | 256维浮点向量 | ResNet50特征降维 |
| 提取速度 | 1分钟视频 < 2秒(GPU | A10 GPU |
| 比对速度 | 毫秒级 | Milvus HNSW索引 |
| 指纹库容量 | 亿级 | Milvus分布式集群 |
| 准确率 | > 95%(搬运检测) | 经转码/加滤镜后仍可识别 |
### 3.8 音频指纹
**技术方案**:基于频谱图的Constellation Map算法(类Shazam)。
**指纹提取流程**
```
音频 → FFT频谱分析 → 提取能量峰值点 → 组合峰值对 → 生成指纹哈希 → 存入Milvus
```
**指纹比对流程**
```
待检测音频 → 同样提取指纹哈希 → Milvus检索 → 匹配峰值对数量统计 → 阈值判断
├── 匹配数 > 阈值高 → 疑似翻录
├── 匹配数中等 → 疑似翻唱/改编
└── 匹配数低 → 原创音频
```
**技术参数**
| 参数 | 指标 | 说明 |
|------|------|------|
| 指纹格式 | 32bit哈希/峰值对 | Constellation Map |
| 提取速度 | 1分钟音频 < 1秒(CPU | 纯信号处理,无需GPU |
| 比对速度 | 毫秒级 | Milvus HNSW索引 |
| 抗翻录 | 翻录后识别率 > 90% | Shazam级别 |
| 抗变速 | 0.9x~1.1x识别率 > 85% | 超出范围需AI语义辅助 |
| 抗降噪 | 常规降噪后识别率 > 90% | |
| 翻唱识别 | 有限(需AI语义辅助) | 翻唱改变波形特征,指纹难匹配 |
### 3.9 网络探针爬虫集群(probe-crawler
**技术方案**:分布式爬虫 + 浏览器自动化。
| 采集方式 | 技术实现 | 部署规模 |
|---------|---------|---------|
| 视频网站巡查 | Scrapy + Playwright(浏览器自动化) | 10~20副本 |
| 音频平台巡查 | Scrapy + API抓取 | 5~10副本 |
| 直播/广播录制 | FFmpeg拉流录制,按分钟切片 | 5副本(每副本50路) |
| 音频流监测 | FFmpeg拉取音频流 → 切片 → 送检测 | 5副本 |
**反反爬策略**
| 策略 | 说明 |
|------|------|
| 代理IP池 | 商业代理IP服务,轮换IP |
| User-Agent轮换 | 随机UA,模拟真实浏览器 |
| 请求频率控制 | 每站点QPS限制,避免触发反爬 |
| 浏览器自动化 | Playwright渲染JS,绕过简单反爬 |
| 群众举报补充 | Web举报入口 + API,作为爬虫补充 |
### 3.10 直播实时监管(live-monitor
**技术方案**
```
直播流/广播流 → FFmpeg拉流 → 按分钟切片 → 并行送检
├── 水印提取(秒级)
├── 指纹比对(秒级)
└── AI语义分析(分钟级)
检测结果 → 正常:继续监控
→ 违规:秒级断流指令
```
**技术参数**
| 参数 | 指标 | 说明 |
|------|------|------|
| 并发监测路数 | 500路(初期)→ 2000路(目标) | 按GPU资源线性扩展 |
| 切片间隔 | 60秒 | 平衡检测延迟与计算量 |
| 检测延迟 | 水印/指纹 < 10秒,AI语义 < 60秒 | 切片完成后计时 |
| 断流指令 | < 1秒 | 通过API通知平台断流 |
---
## 四、数据库设计
### 4.1 核心表结构
**cc_recordsCC码记录表)**
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| cc_code | VARCHAR(64) | CC码,唯一索引 |
| content_type | VARCHAR(16) | video/audio/live_video/live_audio |
| category | VARCHAR(32) | 内容类目(微短剧/网剧/音乐/播客等) |
| title | VARCHAR(256) | 内容标题 |
| file_hash | VARCHAR(64) | 文件SHA256哈希 |
| perceptual_hash | VARCHAR(128) | 感知哈希(视频/音频指纹摘要) |
| fingerprint_vector | JSONB | 指纹向量(存Milvus的引用ID |
| status | VARCHAR(16) | pending/active/paused/taken_down/expired |
| platform_id | VARCHAR(32) | 所属平台 |
| cp_name | VARCHAR(128) | 内容制作方 |
| is_ugc | BOOLEAN | 是否UGC内容 |
| parent_cc_code | VARCHAR(64) | 父CC码(二创/衍生音频关联) |
| watermark_info | JSONB | 水印嵌入信息 |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |
**cc_segments(码段表)**
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| segment_prefix | VARCHAR(32) | 码段前缀 |
| platform_id | VARCHAR(32) | 分配给哪个平台 |
| category | VARCHAR(32) | 内容类目 |
| start_seq | BIGINT | 起始序号 |
| end_seq | BIGINT | 结束序号 |
| current_seq | BIGINT | 当前已用序号 |
| frozen | BOOLEAN | 是否冻结 |
| allocated_at | TIMESTAMP | 分配时间 |
**takedown_orders(下架指令表)**
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| order_id | VARCHAR(64) | 指令ID,唯一索引 |
| cc_code | VARCHAR(64) | 目标CC码 |
| reason | TEXT | 下架原因 |
| issued_by | VARCHAR(64) | 下达人 |
| status | VARCHAR(16) | pending/executing/confirmed/failed |
| targets | JSONB | 下架目标列表(平台+CDN |
| confirmations | JSONB | 各平台确认回执 |
| created_at | TIMESTAMP | 下达时间 |
| completed_at | TIMESTAMP | 完成时间 |
**appeals(申诉表)**
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGSERIAL | 主键 |
| appeal_id | VARCHAR(64) | 申诉ID |
| cc_code | VARCHAR(64) | 关联CC码 |
| appellant | VARCHAR(128) | 申诉人/平台 |
| reason | TEXT | 申诉理由 |
| evidence | JSONB | 证据材料 |
| status | VARCHAR(16) | pending/reviewing/approved/rejected |
| reviewer | VARCHAR(64) | 审核人 |
| result | TEXT | 审核结论 |
| created_at | TIMESTAMP | 申诉时间 |
| resolved_at | TIMESTAMP | 结案时间 |
**detection_logs(检测日志表,ClickHouse**
| 字段 | 类型 | 说明 |
|------|------|------|
| event_id | UUID | 事件ID |
| cc_code | String | 检测到的CC码(如有) |
| content_url | String | 内容URL |
| detection_method | String | watermark/fingerprint/ai_semantic |
| result | String | normal/suspected/violation |
| confidence | Float32 | 置信度 |
| platform | String | 发现平台 |
| detected_at | DateTime | 检测时间 |
### 4.2 Kafka Topic规划
| Topic | 分区数 | 用途 | 保留期 |
|-------|--------|------|--------|
| `topic.code.apply` | 6 | CC码申请事件 | 7天 |
| `topic.code.issued` | 6 | CC码签发事件 | 30天 |
| `topic.takedown.broadcast` | 24 | 下架指令广播 | 7天 |
| `topic.takedown.confirm` | 6 | 下架确认回执 | 30天 |
| `topic.detection.task` | 12 | 检测任务分发 | 3天 |
| `topic.detection.result` | 12 | 检测结果上报 | 30天 |
| `topic.ugc.batch-report` | 6 | UGC批量回传 | 7天 |
| `topic.playback.event` | 24 | 播放数据回传 | 3天 |
| `topic.appeal.created` | 3 | 申诉创建 | 30天 |
| `topic.system.dlq` | 3 | 死信队列 | 永久 |
---
## 五、部署架构
### 5.1 Kubernetes集群规划
| 集群 | 节点配置 | 用途 |
|------|---------|------|
| **业务集群** | 6~10台 8C16G | API网关、业务服务、管理后台 |
| **检测集群** | 4~8台 8C16G + 2~4台 GPU(A10) | 爬虫、检测引擎、指纹提取、AI推理 |
| **存储集群** | 3台 4C8GPG主从)+ 3台 8C32GMilvus+ 3台 4C8GClickHouse | 数据库 |
| **消息集群** | 3台 4C8G | Kafka + ZooKeeper |
### 5.2 GPU资源规划
| 用途 | GPU型号 | 数量 | 说明 |
|------|---------|------|------|
| 视频指纹提取 | A10 | 2~4张 | ResNet50深度模型推理,GPU比CPU快10~50倍 |
| 音频指纹提取 | 无需GPU | — | Constellation Map是纯信号处理(FFT+峰值检测),CPU即可,1分钟音频<1秒 |
| AI视频语义 | A10 | 1~2张 | CLIP多模态模型推理,兜底检测 |
| AI音频语义 | A10 | 1张 | Whisper语音识别+音频Embedding,兜底检测 |
| 水印嵌入/提取 | 无需GPU | — | DCT/DSSS变换,CPU计算即可 |
### 5.3 网络架构
```
互联网 ←→ 广电云安全网关 ←→ API网关(Kong) ←→ 业务服务集群
├── 检测集群(内网,不对外)
├── 存储集群(内网)
└── 消息集群(内网)
平台用户 ←→ 互联网 ←→ API网关 ←→ 业务服务
监管人员 ←→ 广电专网 ←→ 管理后台 ←→ 业务服务
```
---
## 六、分阶段实施计划
### 第一阶段(3个月):平台门禁上线
| 交付物 | 说明 |
|--------|------|
| cc-code-svc | CC码生成、签发、状态管理,复用现有TCS-IPTV代码 |
| verify-svc | 四关验证APIRedis缓存 |
| takedown-svc | 秒级下架指令分发 |
| api-gateway | Kong网关,鉴权限流 |
| 平台SDK | Go/Java SDK,分发给试点平台 |
| 管理后台 | CC码管理、下架操作界面 |
| 部署 | K8s业务集群 + PG + Redis + Kafka |
**对接目标**:IPTV平台 + 1~2家持证视频平台
### 第二阶段(6个月):网络探针MVP + UGC赋码
| 交付物 | 说明 |
|--------|------|
| ugc-code-svc | UGC批量赋码、码段管理 |
| probe-crawler | 爬虫集群,覆盖主流视频+音频平台 |
| probe-detector | 水印提取 + 视频指纹比对 + 音频指纹比对 |
| fingerprint-svc | 视频指纹提取与入库 |
| watermark-svc | 视频水印嵌入/提取 |
| Milvus集群 | 指纹向量库 |
| 检测集群 | GPU节点部署 |
**对接目标**:短视频平台 + 1~2家音频平台
### 第三阶段(9个月):存量补码 + 直播监管 + 音频扩展
| 交付物 | 说明 |
|--------|------|
| 存量补码工具 | 平台批量补码API + 进度监控 |
| live-monitor | 直播/广播实时录制、切片检测、断流 |
| 音频watermark-svc | 音频水印嵌入/提取 |
| 音频fingerprint-svc | 音频指纹提取与入库 |
| AI语义检测 | CLIP视频语义 + Whisper音频语义 |
| appeal-svc | 申诉接收、审核流转 |
### 第四阶段(12个月):全量运行
| 交付物 | 说明 |
|--------|------|
| 全平台对接 | 全网视频+音频平台完成API对接 |
| 存量补码完成 | 全量存量音视频内容补码 |
| 网络探针全量 | 爬虫覆盖全量平台,日检测量达标 |
| 完整监管闭环 | 告警→下架→验证→申诉全流程 |
| 监管大屏 | 数据可视化、运营报表 |
### 第五阶段(15个月):音频监管优化
| 交付物 | 说明 |
|--------|------|
| 音频指纹库完善 | Top10000音乐 + Top5000播客指纹入库 |
| 音频水印加固 | 抗翻录优化、抗变速优化 |
| 翻唱/混音检测 | AI音频语义模型优化 |
| 播客/有声书全量 | 全量覆盖 |
### 第六阶段(18个月):运营优化
| 交付物 | 说明 |
|--------|------|
| 误判率优化 | 误判率 < 2% |
| 对抗测试 | 去水印/翻录/变速对抗测试通过 |
| 自动化运营 | 告警自动处理率 > 80% |
| 性能优化 | 全链路性能调优 |
---
## 七、关键技术风险与应对
| 风险 | 等级 | 应对方案 |
|------|------|---------|
| **音频水印抗翻录不达标** | 高 | 自研方案先验证再上线;备选采购Fraunhofer商用方案;音频指纹作为主力兜底 |
| **视频指纹库规模过大** | 中 | Milvus分布式集群,按内容类目分CollectionHNSW索引优化 |
| **爬虫被反爬阻挡** | 中 | 代理IP池+Playwright浏览器自动化+群众举报补充 |
| **GPU资源不足** | 中 | 分级检测策略,快速筛查用CPU,深度检测才用GPU;按需扩容 |
| **平台对接进度滞后** | 中 | SDK简化对接难度,提供Go/Java双语言SDK+完整文档+技术支持 |
| **直播检测延迟超标** | 中 | 优先用水印/指纹(秒级),AI语义作为后台异步补充 |
| **Kafka消息积压** | 低 | Consumer Lag告警+自动扩容消费者副本 |
| **PG单点故障** | 低 | Patroni HA方案,一主两从,自动故障切换 |
---
## 八、与现有TCS-IPTV系统的关系
| 现有模块 | 复用方式 | 扩展内容 |
|---------|---------|---------|
| `internal/cccode` | 直接复用码段分配、序列号生成 | 扩展音频内容类型、码段冻结 |
| `internal/api/handlers.go` | 复用验证、下架接口框架 | 增加音频验证、UGC批量、直播接口 |
| `internal/chain` | 复用版权链交互 | 无需改动 |
| `internal/config` | 复用配置管理 | 增加新服务配置项 |
| `internal/monitor` | 复用Prometheus监控 | 无需改动 |
| `cmd/api-svc/main.go` | 复用服务启动框架 | 拆分为多个独立微服务 |
> **核心理念:TCS-IPTV是CC码中心的核心服务基础,音视频监管系统在其之上扩展检测引擎、网络探针、音频监管能力,形成完整闭环。**