# CC码音视频监管系统——系统设计和开发方案 > 用于指导系统开发工作、多团队分工协作和关键技术合作 > 编制日期:2026年7月 --- ## 一、项目概述 ### 1.1 项目目标 建设CC码音视频监管系统,实现全网所有音视频内容的统一编码、实时验证、自动检测、秒级下架和全生命周期监管。 ### 1.2 核心能力 | 能力 | 说明 | 响应速度 | |------|------|---------| | 平台门禁 | 各平台调用API在上传/播出/CDN/终端四个环节验证CC码 | 秒级 | | 网络探针 | CC码中心独立运行的爬虫巡查+水印提取+指纹比对+AI语义识别 | 分钟级 | | 秒级下架 | 一条指令全网同步下架(视频平台+音频平台+CDN) | 秒级 | | UGC赋码 | 平台代理批量赋码,码段授权+本地赋码+异步回传 | 毫秒级 | | 直播监管 | 直播/广播实时录制、切片检测、秒级断流 | 秒级~分钟级 | | 申诉恢复 | 48小时申诉+24小时审核+秒级恢复 | 秒级恢复 | ### 1.3 系统边界 ``` 本系统负责 各平台负责 ───────────── ───────────── · CC码生成、签发、生命周期管理 · 平台内业务流程 · 四关验证API · UGC内容审核 · 秒级下架指令分发 · 水印嵌入(平台转码环节) · 网络探针爬虫+检测 · 播放数据回传 · 指纹库建设与维护 · 下架指令执行 · 水印/指纹/AI检测引擎 · 申诉发起 · 监管后台+数据大屏 · 申诉审核 ``` --- ## 二、系统架构 ### 2.1 总体架构 ``` ┌─────────────────────────────────────────────┐ │ CC码中心(广电云) │ │ │ ┌──────────┐ │ ┌─────────┐ ┌──────────┐ ┌───────────┐ │ │ 视频平台 │──API──────│──│ API网关 │─→│ 业务服务 │→│ 检测引擎 │ │ │ (爱奇艺等)│ │ │ (Kong) │ │ (Go微服务)│ │(Python+GPU)│ │ └──────────┘ │ └────┬────┘ └────┬─────┘ └─────┬─────┘ │ │ │ │ │ │ ┌──────────┐ │ │ ┌────┴─────┐ ┌────┴─────┐ │ │ 音频平台 │──API──────│──┐ │ │ 存储层 │ │ 指纹库 │ │ │ (喜马拉雅)│ │ │ │ │(PG+Redis │ │(Milvus │ │ └──────────┘ │ │ │ │ +MinIO) │ │+ClickHse)│ │ │ │ │ └──────────┘ └──────────┘ │ ┌──────────┐ │ │ │ │ │ 短视频平台│──API──────│──┤ │ │ │ (抖音等) │ │ │ │ │ └──────────┘ │ │ │ │ │ │ │ ┌──────────┐ │ ┌──────────┐ │ │ │ │ 消息队列 │ │ │ 网络探针 │──内部─────│──┘ │ │ (Kafka) │ │ │ (爬虫集群)│ │ └───────│ │ │ └──────────┘ │ └──────────┘ │ │ │ ┌──────────┐ │ ┌──────────┐ │ │ 监管后台 │──内部─────│───────────────│ 管理前端 │ │ │ (广电总局)│ │ │(React) │ │ └──────────┘ │ └──────────┘ │ └─────────────────────────────────────────────┘ ``` ### 2.2 架构原则 | 原则 | 说明 | |------|------| | 复用现有基础 | 在TCS-IPTV系统(Go+Gin+PostgreSQL)上扩展 | | 云原生 | Kubernetes容器化部署,微服务架构 | | 等保三级 | 所有组件部署于广电云等保三级VPC内 | | 音视频统一 | 共用CC码体系、API网关、监管架构 | | 分层解耦 | API网关层、业务服务层、检测引擎层、存储层独立部署 | | 数据安全 | 不使用闭源外国商用SDK,水印/指纹技术自主可控 | --- ## 三、模块分解与技术规格 ### 3.1 模块总览 ``` CC码音视频监管系统 ├── 业务网关层 │ └── api-gateway # Go, Kong, 鉴权限流路由 ├── 核心业务层(Go微服务) │ ├── cc-code-svc # CC码生成与生命周期管理 │ ├── verify-svc # 平台门禁四关验证 │ ├── ugc-code-svc # UGC批量赋码与码段管理 │ ├── takedown-svc # 秒级下架指令分发 │ ├── appeal-svc # 申诉接收与审核流转 │ └── live-monitor-svc # 直播监管调度 ├── 检测引擎层(Python) │ ├── probe-crawler # 网络探针爬虫集群 │ ├── probe-detector # 水印提取+指纹比对+AI语义 │ ├── fingerprint-svc # 视频/音频指纹提取与入库 │ ├── watermark-svc # 视频/音频水印嵌入与提取 │ └── ai-semantic-svc # AI视频/音频语义理解 ├── 前端层 │ └── admin-frontend # React监管后台+数据大屏 ├── 存储层 │ ├── PostgreSQL # 关系型数据 │ ├── Redis Cluster # 缓存 │ ├── Milvus # 指纹向量库 │ ├── ClickHouse # 时序数据/检测日志 │ ├── MinIO # 对象存储 │ └── Elasticsearch # 搜索引擎 ├── 消息层 │ └── Kafka # 异步事件流 └── 基础设施层 ├── Kubernetes # 容器编排 ├── Harbor # 镜像仓库 ├── Vault # 密钥管理 ├── Prometheus+Grafana # 监控告警 └── Loki+Jaeger # 日志+链路追踪 ``` ### 3.2 各模块技术规格 #### 3.2.1 api-gateway(API网关) | 项 | 说明 | |----|------| | 语言 | Go | | 框架 | Kong 3.x | | 职责 | 统一API入口、JWT鉴权、API Key验证、限流、路由、日志 | | 部署 | K8s Deployment, 3副本 | | 性能目标 | 10万QPS | | 依赖 | Redis(限流计数)、Vault(密钥) | | 开发团队 | 后端团队 | #### 3.2.2 cc-code-svc(CC码生成与生命周期管理) | 项 | 说明 | |----|------| | 语言 | Go | | 框架 | Gin + GORM | | 职责 | CC码生成、签发、状态机管理、码段分配、码段冻结 | | 部署 | K8s Deployment, 3副本 | | 复用 | `tcs-iptv/internal/cccode` 码段分配、序列号生成 | | 数据库 | PostgreSQL: `cc_records`, `cc_segments`, `cc_status_log` | | Kafka | `topic.code.apply`, `topic.code.issued` | | 开发团队 | 后端团队 | | 技术难度 | ⭐⭐ 低(复用现有代码) | **CC码状态机**: ``` pending ─审核通过→ active ─举报/疑似违规→ paused ─核实无违规→ active active ─授权到期/内容下线→ expired paused ─确认违规→ taken_down ``` **关键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.3 verify-svc(平台门禁验证) | 项 | 说明 | |----|------| | 语言 | Go | | 框架 | Gin + GORM | | 职责 | 四关验证(上传/播出/CDN/终端)、UGC批量验证 | | 部署 | K8s Deployment, 5副本 | | 复用 | `tcs-iptv/internal/api/handlers.go` 验证接口框架 | | 缓存 | Redis Cluster, TTL=10秒, 命中率>99% | | 性能目标 | 10万QPS, 缓存命中<50ms, 未命中<200ms | | 开发团队 | 后端团队 | | 技术难度 | ⭐⭐ 低 | **四关验证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 | #### 3.2.4 ugc-code-svc(UGC批量赋码) | 项 | 说明 | |----|------| | 语言 | Go | | 框架 | Gin + GORM | | 职责 | 码段授权、UGC批量赋码、批量回传、批量验证 | | 部署 | K8s Deployment, 3副本 | | 性能目标 | 批量回传10万条/分钟 | | Kafka | `topic.ugc.batch-report` | | 开发团队 | 后端团队 | | 技术难度 | ⭐⭐ 低 | #### 3.2.5 takedown-svc(秒级下架指令分发) | 项 | 说明 | |----|------| | 语言 | Go | | 框架 | Gin + GORM | | 职责 | 下架指令生成、Kafka广播、平台回调、CDN清除、确认追踪 | | 部署 | K8s Deployment, 3副本 | | Kafka | `topic.takedown.broadcast`(24分区), `topic.takedown.confirm` | | 数据库 | PostgreSQL: `takedown_orders` | | 性能目标 | 指令分发<1秒, 平台回调超时3秒, 重试2次 | | 开发团队 | 后端团队 | | 技术难度 | ⭐⭐⭐ 中等(多平台并行分发+幂等+确认追踪) | #### 3.2.6 appeal-svc(申诉管理) | 项 | 说明 | |----|------| | 语言 | Go | | 框架 | Gin + GORM | | 职责 | 申诉接收、审核流转、恢复指令、误判案例记录 | | 部署 | K8s Deployment, 2副本 | | 数据库 | PostgreSQL: `appeals` | | Kafka | `topic.appeal.created` | | 开发团队 | 后端团队 | | 技术难度 | ⭐⭐ 低 | #### 3.2.7 live-monitor-svc(直播监管调度) | 项 | 说明 | |----|------| | 语言 | Go + Python | | 职责 | 直播流拉取调度、按分钟切片、并行送检、断流指令 | | 部署 | K8s Deployment, 5副本 | | 性能目标 | 500路(初期)→2000路(目标),切片间隔60秒 | | 依赖 | FFmpeg, probe-detector, takedown-svc | | 开发团队 | 后端团队 + 检测团队 | | 技术难度 | ⭐⭐⭐ 中等(实时流处理+并发调度) | #### 3.2.8 probe-crawler(网络探针爬虫集群) | 项 | 说明 | |----|------| | 语言 | Python | | 框架 | Scrapy + Playwright | | 职责 | 视频网站巡查、音频平台巡查、直播录制、音频流监测 | | 部署 | K8s Deployment, 10~50副本 | | 依赖 | 代理IP池, MinIO(片段存储) | | Kafka | `topic.detection.task` | | 开发团队 | 检测团队 | | 技术难度 | ⭐⭐⭐ 中等(反爬对抗+大规模调度) | #### 3.2.9 probe-detector(检测引擎) | 项 | 说明 | |----|------| | 语言 | Python | | 框架 | FastAPI + Celery | | 职责 | 水印提取、指纹比对、AI语义分析、检测结果上报 | | 部署 | K8s Deployment + GPU节点 | | 依赖 | watermark-svc, fingerprint-svc, ai-semantic-svc, Milvus | | Kafka | `topic.detection.result` | | 开发团队 | 检测团队 | | 技术难度 | ⭐⭐⭐⭐ 较难(多种检测手段编排+分级检测策略) | #### 3.2.10 fingerprint-svc(指纹提取与入库) | 项 | 说明 | |----|------| | 语言 | Python | | 职责 | 视频指纹提取(ResNet50)、音频指纹提取(Constellation Map)、入库Milvus | | 部署 | K8s Deployment, GPU节点(视频指纹需要) | | 视频指纹 | ResNet50 → 256维向量 → Milvus, GPU推理, 1分钟视频<2秒 | | 音频指纹 | FFT → 峰值检测 → 组合哈希 → Milvus, CPU即可, 1分钟音频<1秒 | | 开发团队 | 算法团队 | | 技术难度 | 视频指纹⭐⭐ 低, 音频指纹⭐⭐ 低 | | 开源参考 | audio-fingerprint-engine, Audio-Fingerprint, ResNet50+Milvus | #### 3.2.11 watermark-svc(水印嵌入与提取) | 项 | 说明 | |----|------| | 语言 | Rust 或 Go+CGO | | 职责 | 视频水印嵌入/提取(DCT+QIM)、音频水印嵌入/提取(DSSS+心理声学) | | 部署 | K8s Deployment, 3副本, 无需GPU | | 视频水印参数 | 96bit/帧, PSNR>38dB, 抗压缩>95%, 抗裁剪>80% | | 音频水印参数 | 96bit/10秒, SNR>20dB, 抗压缩>90%, 抗翻录>70% | | 开发团队 | 算法团队 | | 技术难度 | 视频水印⭐⭐⭐ 中等, 音频水印⭐⭐⭐⭐ 较难 | | 开源参考 | VidMark, open-video-watermark, audiowmark, Audio-Watermarking | #### 3.2.12 ai-semantic-svc(AI语义理解) | 项 | 说明 | |----|------| | 语言 | Python | | 框架 | NVIDIA Triton + PyTorch | | 职责 | 视频语义理解(CLIP)、音频语义理解(Whisper)、兜底检测 | | 部署 | K8s Deployment + GPU节点 | | 开发团队 | 算法团队 | | 技术难度 | ⭐⭐⭐ 中等(模型部署+推理优化) | #### 3.2.13 admin-frontend(监管后台) | 项 | 说明 | |----|------| | 框架 | React 18 + Ant Design 5 + ECharts 5 | | 职责 | CC码管理、下架操作、申诉审核、检测监控、数据大屏、平台管理 | | 部署 | Nginx静态部署 | | 开发团队 | 前端团队 | | 技术难度 | ⭐⭐ 低 | --- ## 四、技术栈总览 ### 4.1 后端服务层 | 组件 | 选型 | 版本 | 选型理由 | |------|------|------|---------| | 核心语言 | Go | 1.22+ | 高并发、低延迟,已有TCS-IPTV代码基础 | | Web框架 | Gin | 1.10+ | 轻量高性能,已有代码基础 | | ORM | GORM | 2.0+ | Go生态最成熟ORM | | API网关 | Kong | 3.x | 开源成熟,插件丰富 | | 服务间通信 | gRPC | — | 内部高性能RPC | | 依赖注入 | Wire | — | 编译时DI,类型安全 | ### 4.2 检测引擎层 | 组件 | 选型 | 版本 | 选型理由 | |------|------|------|---------| | 检测服务语言 | Python | 3.11+ | AI/媒体处理生态最丰富 | | 检测服务框架 | FastAPI | 0.110+ | 异步高性能,自动API文档 | | 任务调度 | Celery + Redis | 最新版 | 异步任务队列,GPU任务排队 | | GPU推理框架 | NVIDIA Triton | 2.x | 多模型并行、动态批处理 | | 深度学习框架 | PyTorch | 2.x | 模型训练与推理 | ### 4.3 媒体处理层 | 组件 | 选型 | 说明 | |------|------|------| | 视频水印 | 自研(DCT+QIM) | 先采购国产商用快速落地,同步自研替换 | | 音频水印 | 自研(DSSS+心理声学) | 基于开源算法改进,不使用闭源外国SDK | | 视频指纹 | 自研(ResNet50+Milvus) | 直接自研,工程集成 | | 音频指纹 | 自研(Constellation Map) | 类Shazam算法,直接自研 | | 视频处理 | FFmpeg 6.x+ | 开源标准 | | 音频处理 | librosa / torchaudio | Python音频分析标准库 | ### 4.4 数据存储层 | 组件 | 选型 | 版本 | 用途 | |------|------|------|------| | 关系型数据库 | PostgreSQL | 16.x | CC码记录、元数据、码段、申诉 | | 数据库高可用 | Patroni + etcd | 最新版 | 自动故障切换 | | 缓存 | Redis Cluster | 7.x | 热点CC码缓存、限流、分布式锁 | | 向量数据库 | Milvus | 2.x | 视频/音频指纹向量检索 | | 时序数据库 | ClickHouse | 24.x | 播放数据、检测日志、运营分析 | | 对象存储 | MinIO | 最新版 | 视频片段、音频片段、证据包 | | 搜索引擎 | Elasticsearch | 8.x | 审核报告检索、日志检索 | ### 4.5 消息与异步层 | 组件 | 选型 | 用途 | |------|------|------| | 消息队列 | Apache Kafka 3.x | 下架指令广播、检测任务分发、播放数据回传 | | 流处理 | Apache Flink 1.18+ | 实时播放统计、异常检测 | | 任务队列 | Celery + Redis | 异步任务 | | 定时调度 | Airflow 2.x | 定时爬虫、报表生成 | ### 4.6 基础设施与DevOps | 组件 | 选型 | 用途 | |------|------|------| | 容器编排 | Kubernetes 1.29+ | 容器编排、自动扩缩容 | | 镜像仓库 | Harbor 2.x | 私有镜像仓库 | | 密钥管理 | HashiCorp Vault | API Key、数据库密码 | | 指标监控 | Prometheus + Grafana | 指标采集、告警 | | 日志采集 | Loki + Promtail | 全链路日志聚合 | | 链路追踪 | Jaeger / OpenTelemetry | 分布式请求追踪 | | CI/CD | GitLab CI + ArgoCD | 自动化构建、GitOps | ### 4.7 前端层 | 组件 | 选型 | 版本 | 用途 | |------|------|------|------| | 管理后台 | React | 18.x | 监管后台、运营管理 | | UI组件库 | Ant Design | 5.x | 企业级中后台组件 | | 图表可视化 | ECharts | 5.x | 监管数据可视化 | | 状态管理 | Zustand | 最新版 | 轻量全局状态管理 | --- ## 五、数据库设计 ### 5.1 核心表结构 **cc_records(CC码记录表)**: | 字段 | 类型 | 说明 | |------|------|------| | 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 | 指纹向量引用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 | 下架目标列表 | | 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 | 检测时间 | ### 5.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 | 死信队列 | 永久 | --- ## 六、部署架构 ### 6.1 Kubernetes集群规划 | 集群 | 节点配置 | 用途 | |------|---------|------| | **业务集群** | 6~10台 8C16G | API网关、业务服务、管理后台 | | **检测集群** | 4~8台 8C16G + 2~4台 GPU(A10) | 爬虫、检测引擎、指纹提取、AI推理 | | **存储集群** | 3台 4C8G(PG主从)+ 3台 8C32G(Milvus)+ 3台 4C8G(ClickHouse) | 数据库 | | **消息集群** | 3台 4C8G | Kafka + ZooKeeper | ### 6.2 GPU资源规划 | 用途 | GPU型号 | 数量 | 说明 | |------|---------|------|------| | 视频指纹提取 | A10 | 2~4张 | ResNet50深度模型推理 | | 音频指纹提取 | 无需GPU | — | Constellation Map纯信号处理,CPU即可 | | AI视频语义 | A10 | 1~2张 | CLIP多模态模型推理 | | AI音频语义 | A10 | 1张 | Whisper语音识别+音频Embedding | | 水印嵌入/提取 | 无需GPU | — | DCT/DSSS变换,CPU计算 | ### 6.3 网络架构 ``` 互联网 ←→ 广电云安全网关 ←→ API网关(Kong) ←→ 业务服务集群 │ ├── 检测集群(内网,不对外) ├── 存储集群(内网) └── 消息集群(内网) 平台用户 ←→ 互联网 ←→ API网关 ←→ 业务服务 监管人员 ←→ 广电专网 ←→ 管理后台 ←→ 业务服务 ``` --- ## 七、团队分工与协作 ### 7.1 团队划分 | 团队 | 负责模块 | 人数 | 技术栈 | |------|---------|------|--------| | **后端团队** | api-gateway, cc-code-svc, verify-svc, ugc-code-svc, takedown-svc, appeal-svc, live-monitor-svc | 6~8人 | Go, Gin, GORM, Kafka, PostgreSQL, Redis | | **检测团队** | probe-crawler, probe-detector, live-monitor-svc(Python部分) | 4~6人 | Python, Scrapy, Playwright, FastAPI, Celery | | **算法团队** | fingerprint-svc, watermark-svc, ai-semantic-svc | 4~6人 | Python, PyTorch, FFmpeg, librosa, Rust | | **前端团队** | admin-frontend | 2~3人 | React, Ant Design, ECharts | | **运维团队** | K8s, CI/CD, 监控, 存储, 消息 | 3~4人 | Kubernetes, Prometheus, Kafka, PostgreSQL | | **平台对接团队** | 平台SDK、对接文档、技术支持 | 3~4人 | Go, Java, 技术文档 | ### 7.2 模块与团队映射 ``` 后端团队(Go) ├── api-gateway ─────────── 独立开发 ├── cc-code-svc ─────────── 复用TCS-IPTV代码,独立开发 ├── verify-svc ──────────── 复用TCS-IPTV代码,独立开发 ├── ugc-code-svc ────────── 独立开发 ├── takedown-svc ────────── 独立开发,与检测团队协作(下架验证) ├── appeal-svc ──────────── 独立开发 └── live-monitor-svc ────── 与检测团队协作(切片送检) 检测团队(Python) ├── probe-crawler ───────── 独立开发 ├── probe-detector ──────── 与算法团队协作(调用检测引擎) └── live-monitor(Python) ── 与后端团队协作(调度层) 算法团队(Python/Rust) ├── fingerprint-svc ─────── 独立开发,开源参考多 ├── watermark-svc ───────── 独立开发,难度最高 └── ai-semantic-svc ─────── 独立开发 前端团队(React) └── admin-frontend ──────── 与后端团队协作(API对接) 运维团队 ├── K8s集群 ─────────────── 所有团队提供基础设施 ├── 存储集群 ─────────────── PG/Redis/Milvus/ClickHouse/MinIO ├── 消息集群 ─────────────── Kafka └── CI/CD ──────────────── 所有团队提供流水线 平台对接团队 ├── 平台SDK(Go/Java)──── 独立开发 ├── 对接文档 ─────────────── 独立编写 └── 技术支持 ─────────────── 协助各平台对接 ``` ### 7.3 团队间接口契约 | 接口 | 提供方 | 消费方 | 协议 | |------|--------|--------|------| | CC码验证API | 后端团队 | 平台对接团队→各平台 | REST HTTP | | 下架指令事件 | 后端团队(takedown-svc) | 检测团队(probe-detector) | Kafka | | 检测任务事件 | 检测团队(probe-crawler) | 算法团队(probe-detector) | Kafka | | 指纹提取请求 | 检测团队 | 算法团队(fingerprint-svc) | gRPC | | 水印提取请求 | 检测团队 | 算法团队(watermark-svc) | gRPC | | AI语义请求 | 检测团队 | 算法团队(ai-semantic-svc) | gRPC | | 管理后台API | 后端团队 | 前端团队 | REST HTTP | | 指纹向量存储 | 算法团队 | 运维团队(Milvus) | Milvus SDK | | 检测日志写入 | 检测团队 | 运维团队(ClickHouse) | ClickHouse SDK | ### 7.4 协作里程碑 | 里程碑 | 时间 | 涉及团队 | 交付物 | |--------|------|---------|--------| | API契约冻结 | 第2周 | 后端+前端+平台对接 | 所有REST API OpenAPI文档 | | gRPC契约冻结 | 第3周 | 检测+算法 | 检测引擎Protobuf定义 | | Kafka Topic定稿 | 第3周 | 后端+检测+运维 | Topic schema + 分区规划 | | 数据库schema定稿 | 第4周 | 后端+运维 | DDL脚本 + ER图 | | 基础设施就绪 | 第6周 | 运维 | K8s集群+PG+Redis+Kafka | | 第一阶段联调 | 第10周 | 后端+前端+平台对接 | 试点平台跑通验证流程 | | 检测引擎联调 | 第16周 | 检测+算法 | 爬虫→检测→告警全链路 | | 全链路联调 | 第24周 | 全部团队 | 平台门禁+网络探针完整闭环 | --- ## 八、关键技术难度评估 ### 8.1 难度分级总览 | 技术模块 | 难度 | 周期 | 负责团队 | 关键风险 | |---------|------|------|---------|---------| | CC码生成与生命周期 | ⭐⭐ 低 | 4周 | 后端团队 | 复用现有代码,风险低 | | 四关验证API | ⭐⭐ 低 | 3周 | 后端团队 | Redis缓存一致性 | | UGC批量赋码 | ⭐⭐ 低 | 3周 | 后端团队 | 并发序号分配 | | 秒级下架分发 | ⭐⭐⭐ 中等 | 6周 | 后端团队 | 多平台并行+幂等+确认 | | 直播监管调度 | ⭐⭐⭐ 中等 | 8周 | 后端+检测 | 实时流并发调度 | | 网络探针爬虫 | ⭐⭐⭐ 中等 | 8周 | 检测团队 | 反爬对抗 | | 检测引擎编排 | ⭐⭐⭐⭐ 较难 | 10周 | 检测+算法 | 多种检测手段分级编排 | | 视频水印 | ⭐⭐⭐ 中等 | 3~6个月 | 算法团队 | 抗裁剪+抗压缩鲁棒性调优 | | 音频水印 | ⭐⭐⭐⭐ 较难 | 6~9个月 | 算法团队 | 抗翻录是公认难题 | | 视频指纹 | ⭐⭐ 低 | 2~3个月 | 算法团队 | 指纹库规模扩大后检索性能 | | 音频指纹 | ⭐⭐ 低 | 2~3个月 | 算法团队 | 工程化即可 | | AI语义理解 | ⭐⭐⭐ 中等 | 3~4个月 | 算法团队 | 模型部署+推理优化 | | 监管后台 | ⭐⭐ 低 | 8周 | 前端团队 | 业务逻辑复杂但技术难度低 | ### 8.2 关键技术难点与应对 #### 难点1:音频水印抗翻录(难度⭐⭐⭐⭐) | 项 | 说明 | |----|------| | 问题描述 | 安静环境翻录提取率>70%,嘈杂环境下降明显 | | 应对方案 | ①音频指纹作为主力识别技术,水印作为补充追溯;②持续优化心理声学模型参数;③多段冗余嵌入 | | 降级策略 | 水印提取失败时自动切换到音频指纹比对 | | 开源参考 | audiowmark(⭐569), Audio-Watermarking, carnation-radio | #### 难点2:视频水印鲁棒性(难度⭐⭐⭐) | 项 | 说明 | |----|------| | 问题描述 | 需同时抗压缩、抗裁剪、抗转码 | | 应对方案 | ①DWT-DCT-QIM三重变换增强鲁棒性;②多帧冗余嵌入;③大量对抗测试调优 | | 开源参考 | VidMark(DWT-DCT-QIM), open-video-watermark, video-invisible-watermark | #### 难点3:秒级下架全网同步(难度⭐⭐⭐) | 项 | 说明 | |----|------| | 问题描述 | 一条指令需同时通知多个视频平台+音频平台+CDN,保证秒级到达+幂等+确认追踪 | | 应对方案 | ①Kafka 24分区并行分发;②指令ID去重保证幂等;③超时3秒重试2次;④未确认自动告警 | #### 难点4:检测引擎分级编排(难度⭐⭐⭐⭐) | 项 | 说明 | |----|------| | 问题描述 | 水印→指纹→AI语义三级检测,需智能编排,不同内容走不同检测路径 | | 应对方案 | ①快速筛查(元数据验证)→重点检测(指纹比对)→深度检测(水印+AI);②置信度阈值动态调整;③误判案例反哺模型 | #### 难点5:爬虫反爬对抗(难度⭐⭐⭐) | 项 | 说明 | |----|------| | 问题描述 | 主流平台反爬策略持续升级 | | 应对方案 | ①代理IP池轮换;②Playwright浏览器自动化;③请求频率控制;④群众举报补充 | ### 8.3 自研难度评估与落地策略 | 技术模块 | 自研难度 | 预估周期 | 难点分析 | 落地策略 | |---------|---------|---------|---------|---------| | **视频水印** | ⭐⭐⭐ 中等 | 3~6个月 | DCT+QIM经典学术成果,难点在鲁棒性调优 | 先采购国产商用快速集成(3个月),同步自研(6个月)替换 | | **音频水印** | ⭐⭐⭐⭐ 较难 | 6~9个月 | DSSS+心理声学模型复杂,抗翻录是公认难题 | 自研为主,基于开源算法改进 | | **视频指纹** | ⭐⭐ 低 | 2~3个月 | ResNet50现成模型,工程集成 | 直接自研,1个PyTorch工程师 | | **音频指纹** | ⭐⭐ 低 | 2~3个月 | Shazam算法公开20年,工程化即可 | 直接自研,1个Python工程师 | **双轨落地路线**: ``` 快速落地(3个月内): ├── 视频水印 → 采购国产商用方案集成上线 ├── 音频水印 → 基于开源算法改进,自研MVP上线 ├── 视频指纹 → 自研MVP上线 └── 音频指纹 → 自研MVP上线 自主可控(6~12个月): ├── 视频水印 → 自研版替换国产商用方案 └── 音频水印 → 自研版持续优化抗翻录能力 ``` ### 8.4 开源参考项目 | 技术模块 | 开源项目 | 语言 | License | 说明 | |---------|---------|------|---------|------| | **视频水印** | [VidMark](https://github.com/AlexAgents/VidMark) | Python | MIT | DWT-DCT-QIM完整实现 | | **视频水印** | [open-video-watermark](https://github.com/fabriziosalmi/open-video-watermark) | Python | MIT | DCT频域水印+REST API | | **视频水印** | [video-invisible-watermark](https://github.com/JumiRay/video-invisible-watermark) | Python | MIT | YUV亮度通道DCT嵌入 | | **音频水印** | [audiowmark](https://github.com/swesterfeld/audiowmark) | C++ | GPL-3.0 | ⭐569星,Patchwork算法 | | **音频水印** | [Audio-Watermarking](https://github.com/dmeldrum6/Audio-Watermarking) | JS | — | DSSS+心理声学+Reed-Solomon | | **音频水印** | [carnation-radio](https://github.com/Tranquil-Flow/carnation-radio) | Rust/TS | — | Masked DSSS+Painter-Spanias模型 | | **音频指纹** | [audio-fingerprint-engine](https://github.com/rhthm/audio-fingerprint-engine) | Python | — | Constellation Map+PostgreSQL | | **音频指纹** | [Audio-Fingerprint](https://github.com/inboxpraveen/Audio-Fingerprint) | Python | — | 生产级,3秒片段识别 | | **音频指纹** | [AudioFingerprinting](https://github.com/ankitjosh78/AudioFingerprinting) | Python | — | FastAPI+librosa+麦克风实时 | | **视频指纹** | ResNet50 + Milvus | Python | Apache-2.0 | torchvision+Milvus SDK | --- ## 九、分阶段开发计划 ### 第一阶段(3个月):平台门禁上线 | 交付物 | 负责团队 | 技术难度 | |--------|---------|---------| | api-gateway | 后端+运维 | ⭐⭐ | | cc-code-svc | 后端 | ⭐⭐ | | verify-svc | 后端 | ⭐⭐ | | takedown-svc | 后端 | ⭐⭐⭐ | | 平台SDK(Go/Java) | 平台对接 | ⭐⭐ | | 管理后台(CC码+下架) | 前端+后端 | ⭐⭐ | | K8s业务集群+PG+Redis+Kafka | 运维 | ⭐⭐ | **对接目标**:IPTV平台 + 1~2家持证视频平台 **里程碑**:第3个月,试点平台上传验证+播出校验+秒级下架跑通 ### 第二阶段(6个月):网络探针MVP + UGC赋码 | 交付物 | 负责团队 | 技术难度 | |--------|---------|---------| | ugc-code-svc | 后端 | ⭐⭐ | | probe-crawler | 检测 | ⭐⭐⭐ | | probe-detector | 检测+算法 | ⭐⭐⭐⭐ | | fingerprint-svc(视频) | 算法 | ⭐⭐ | | watermark-svc(视频) | 算法 | ⭐⭐⭐ | | Milvus集群 | 运维 | ⭐⭐ | | GPU检测集群 | 运维 | ⭐⭐ | **对接目标**:短视频平台 + 1~2家音频平台 **里程碑**:第6个月,短视频平台批量赋码上线,日检测5000条,准确率≥90% ### 第三阶段(9个月):存量补码 + 直播监管 + 音频扩展 | 交付物 | 负责团队 | 技术难度 | |--------|---------|---------| | 存量补码工具 | 后端 | ⭐⭐ | | live-monitor-svc | 后端+检测 | ⭐⭐⭐ | | 音频watermark-svc | 算法 | ⭐⭐⭐⭐ | | 音频fingerprint-svc | 算法 | ⭐⭐ | | ai-semantic-svc | 算法 | ⭐⭐⭐ | | appeal-svc | 后端 | ⭐⭐ | **里程碑**:第9个月,存量Top1000补码完成,50路直播实时监测,2家音频平台对接 ### 第四阶段(12个月):全量运行 | 交付物 | 负责团队 | |--------|---------| | 全平台对接 | 平台对接 | | 存量补码完成 | 后端+平台对接 | | 网络探针全量 | 检测 | | 完整监管闭环 | 全部团队 | | 监管大屏 | 前端 | **里程碑**:第12个月,全网视频+音频覆盖,完整告警+下架+验证+申诉闭环 ### 第五阶段(15个月):音频监管优化 | 交付物 | 负责团队 | |--------|---------| | 音频指纹库完善(Top10000音乐+Top5000播客) | 算法 | | 音频水印抗翻录加固 | 算法 | | 翻唱/混音检测优化 | 算法 | ### 第六阶段(18个月):运营优化 | 交付物 | 负责团队 | |--------|---------| | 误判率优化(<2%) | 算法+检测 | | 对抗测试(去水印/翻录/变速) | 算法 | | 自动化运营(告警自动处理率>80%) | 检测+运维 | | 全链路性能调优 | 全部团队 | --- ## 十、关键技术合作建议 ### 10.1 水印技术合作 | 合作方向 | 合作方 | 合作模式 | |---------|--------|---------| | 视频水印快速落地 | 国产商用方案供应商(如海致BD) | 采购集成,3个月内上线 | | 视频水印自研 | 高校信息隐藏实验室 | 联合研发,6个月出MVP | | 音频水印自研 | 高校音频信号处理实验室 | 联合研发,基于开源算法改进 | | 水印标准制定 | 广电总局+厂商+高校 | 联合标准组,统一视频+音频水印规范 | ### 10.2 指纹技术合作 | 合作方向 | 合作方 | 合作模式 | |---------|--------|---------| | 视频指纹 | 内部自研 | 1个PyTorch工程师,2~3个月 | | 音频指纹 | 内部自研 | 1个Python工程师,2~3个月 | | 指纹库建设 | 内容方+平台 | 平台提供内容指纹入库 | ### 10.3 AI语义技术合作 | 合作方向 | 合作方 | 合作模式 | |---------|--------|---------| | 视频语义理解 | 商汤/百度多模态API | 快速落地调用SaaS,后期自研 | | 音频语义理解 | Whisper开源模型 | 自研部署,Triton推理服务化 | | 模型训练 | 高校AI实验室 | 误判案例数据集联合训练 | ### 10.4 平台对接合作 | 合作方向 | 合作方 | 合作模式 | |---------|--------|---------| | 平台SDK | 内部开发 | Go+Java双语言SDK+完整文档 | | 试点平台 | IPTV+持证视频平台 | 第一阶段对接,验证流程 | | 短视频平台 | 抖音/快手/B站 | 第二阶段对接,UGC批量赋码 | | 音频平台 | 喜马拉雅/蜻蜓FM | 第三阶段对接,音频赋码 | --- ## 十一、风险与应对 | 风险 | 等级 | 负责团队 | 应对方案 | |------|------|---------|---------| | 音频水印抗翻录不达标 | 高 | 算法团队 | 自研先验证再上线;音频指纹作为主力兜底 | | 视频指纹库规模过大 | 中 | 算法+运维 | Milvus分布式集群,按内容类目分Collection | | 爬虫被反爬阻挡 | 中 | 检测团队 | 代理IP池+Playwright+群众举报补充 | | GPU资源不足 | 中 | 运维 | 分级检测策略,快速筛查用CPU,深度检测才用GPU | | 平台对接进度滞后 | 中 | 平台对接 | SDK简化对接,提供Go/Java双语言+完整文档 | | 直播检测延迟超标 | 中 | 检测团队 | 优先用水印/指纹(秒级),AI语义作为异步补充 | | Kafka消息积压 | 低 | 运维 | Consumer Lag告警+自动扩容消费者 | | PG单点故障 | 低 | 运维 | Patroni HA方案,一主两从,自动故障切换 | | 多团队协作接口不一致 | 中 | 全部团队 | 第2~3周冻结API/gRPC/Kafka契约,CI校验 | --- ## 十二、与现有TCS-IPTV系统的关系 | 现有模块 | 复用方式 | 扩展内容 | 负责团队 | |---------|---------|---------|---------| | `internal/cccode` | 直接复用码段分配、序列号生成 | 扩展音频内容类型、码段冻结 | 后端团队 | | `internal/api/handlers.go` | 复用验证、下架接口框架 | 增加音频验证、UGC批量、直播接口 | 后端团队 | | `internal/chain` | 复用版权链交互 | 无需改动 | 后端团队 | | `internal/config` | 复用配置管理 | 增加新服务配置项 | 后端团队 | | `internal/monitor` | 复用Prometheus监控 | 无需改动 | 运维团队 | | `cmd/api-svc/main.go` | 复用服务启动框架 | 拆分为多个独立微服务 | 后端团队 | --- ## 十三、项目管理建议 ### 13.1 开发流程 ``` 需求评审 → API契约定义 → 技术方案设计 → 编码 → 单元测试 → 代码审查 → 集成测试 → 灰度发布 → 全量发布 ``` ### 13.2 CI/CD流水线 | 阶段 | 工具 | 说明 | |------|------|------| | 代码提交 | GitLab | 分支管理,MR评审 | | 自动构建 | GitLab CI | Go编译、Python打包、前端构建 | | 自动测试 | GitLab CI | 单元测试+集成测试 | | 镜像构建 | Kaniko | 构建Docker镜像推送Harbor | | 安全扫描 | Trivy | 镜像漏洞扫描 | | 部署 | ArgoCD | GitOps自动部署K8s | | 监控 | Prometheus+Grafana | 部署后指标监控 | ### 13.3 质量标准 | 指标 | 目标 | |------|------| | 单元测试覆盖率 | >80% | | API契约一致性 | 100%(CI校验) | | 代码审查通过率 | 100% | | P0故障修复时间 | <1小时 | | P1故障修复时间 | <4小时 | | 部署成功率 | >99% |