Skip to content

wwnlp731/315_monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CCTV 315 晚会实时监控系统

实时监控 CCTV 315 晚会(或任意 CCTV 频道直播),自动截图 + 语音识别 + AI 多模态分析,提取涉事品牌、违规行为、排查关键词,辅助电商平台商品安全治理。

功能特性

  • 双模式支持:315 晚会回放(完整视频流)/ CCTV 直播(定时截图 + 音频流)
  • 30 秒分析周期:每轮自动截取 3 张画面 + 30 秒音频
  • 语音识别:DashScope paraformer-v2 实时 ASR
  • AI 多模态分析:qwen3.5-flash 分析画面 + 语音,输出结构化治理建议
  • 智能汇总:自动合并同一事件的多轮分析,按主题分类
  • 实时推送:SSE 实时更新前端
  • Prompt 可编辑:前端实时调整分析 / 汇总 Prompt,下一轮立即生效
  • 排查关键词:一键复制,可直接用于电商平台搜索

技术栈

技术
后端 Python 3.10+ / FastAPI / uvicorn
前端 React 18 / TypeScript / Vite / Tailwind CSS
AI 模型 DashScope qwen3.5-flash(多模态)/ paraformer-v2(ASR)
数据库 SQLite(aiosqlite)
流媒体 FFmpeg / hls.js
UI 风格 iOS Liquid Glass

系统要求

  • macOS(已测试 macOS 15 Sequoia / Apple Silicon)
  • Python 3.10+
  • Node.js 18+
  • FFmpeg(流媒体处理)
  • DashScope API Key(阿里云百炼平台)

快速开始

1. 安装系统依赖

# Homebrew(如果没装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# FFmpeg + Node.js
brew install ffmpeg node

2. 克隆项目

git clone <repo-url>
cd 315_monitor

3. 配置环境变量

cp .env.example .env
# 编辑 .env,填入你的 DashScope API Key

.env 文件内容:

DASHSCOPE_API_KEY=sk-你的API密钥
CAPTURE_MODE=ffmpeg

DashScope API Key 申请:https://dashscope.console.aliyun.com/

4. 安装 Python 依赖

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

5. 安装前端依赖

cd frontend
npm install
cd ..

6. 启动

chmod +x start.sh
./start.sh

或手动分别启动:

# 终端 1 — 后端
source venv/bin/activate
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8002 --reload

# 终端 2 — 前端
cd frontend
npm run dev -- --port 5180

7. 访问

打开浏览器访问 http://localhost:5180

使用说明

选择监控源

  1. 在控制面板的「直播源地址」中选择预设:
    • CCTV-2 直播:实时监控(截图模式,直播受版权保护)
    • 315 晚会回放:回放完整视频流
  2. 也可手动粘贴任意 CCTV 页面 URL 或 m3u8 地址
  3. 点击 开始 启动监控

监控流程

启动 → 每 30 秒一个周期:
  ├─ 截取 3 张画面(每 10 秒一张)
  ├─ 录制 30 秒音频 → ASR 语音转写
  ├─ 截图 + ASR 文本 → qwen3.5-flash 多模态分析
  └─ 结果推送前端 → 自动分组合并 → 定期 AI 汇总

Prompt 配置

右侧「Prompt 配置」面板可实时编辑:

  • 实时分析 Prompt:控制每轮 AI 分析的行为
  • 汇总 Prompt:控制 AI 汇总的输出格式
  • 高亮标注可定制的关键片段(变量、角色、平台、等级)
  • 保存后下一轮立即生效

直播 vs 回放

回放模式 直播模式
视频 完整视频流播放 定时截图(每 5 秒刷新)
音频 从视频流提取 独立音频流
截图来源 FFmpeg 从 m3u8 提取帧 CCTV CDN 实时截图
AI 分析 3 张截图 + ASR 3 张截图 + ASR(效果一致)
说明 - 直播视频受 DRM 保护,无法直接获取

项目结构

315_monitor/
├── .env                        # 环境配置(API Key 等)
├── requirements.txt            # Python 依赖
├── start.sh                    # 一键启动脚本
├── README.md
│
├── backend/                    # FastAPI 后端
│   ├── main.py                 # API 端点、SSE、代理
│   ├── config.py               # 配置项、Prompt 定义
│   ├── pipeline.py             # 监控管道(30s 周期调度)
│   ├── stream_grabber.py       # 截图 + 音频采集(FFmpeg / CDN)
│   ├── cctv_parser.py          # CCTV URL 解析(VOD / 直播 API)
│   ├── asr_worker.py           # 语音识别(DashScope paraformer-v2)
│   ├── analysis_worker.py      # AI 多模态分析(qwen3.5-flash)
│   └── database.py             # SQLite 数据库操作
│
├── frontend/                   # React + Vite 前端
│   ├── src/
│   │   ├── App.tsx             # 主布局(双栏)
│   │   ├── index.css           # 全局样式(Liquid Glass)
│   │   └── components/
│   │       ├── ControlPanel.tsx    # 启停控制 + 直播源选择
│   │       ├── LivePlayer.tsx      # 视频/截图播放器
│   │       ├── ASRPanel.tsx        # 语音识别实时显示
│   │       ├── PromptEditor.tsx    # Prompt 编辑器(高亮)
│   │       └── InsightPanel.tsx    # AI 分析洞察 + 智能汇总
│   ├── package.json
│   ├── vite.config.ts          # Vite 配置(代理 → 8002)
│   └── tailwind.config.js
│
└── data/                       # 运行时数据(自动创建)
    ├── monitor.db              # SQLite 数据库
    ├── snapshots/              # 截图文件
    └── audio/                  # 音频文件

API 端点

方法 路径 说明
GET /api/status 管道运行状态
POST /api/pipeline/start 启动监控
POST /api/pipeline/stop 停止监控
POST /api/pipeline/pause 暂停监控
POST /api/pipeline/resume 恢复监控
GET /api/stream SSE 实时事件流
GET /api/cycles/latest 最新分析结果
GET/POST /api/prompts 获取/更新 Prompt
POST /api/analysis/summarize AI 汇总
GET /api/proxy/stream.m3u8 HLS 视频代理
GET /api/proxy/segment TS 分片代理
GET /api/proxy/live-snapshot 直播截图代理

端口说明

服务 端口 说明
后端 8002 FastAPI API 服务
前端 5180 Vite 开发服务器

前端通过 Vite proxy 将 /api/snapshots/audio 请求转发到后端 8002 端口。

常见问题

Q: 启动后前端白屏? 确认后端已启动且在 8002 端口运行,前端 Vite proxy 才能正常转发请求。

Q: 语音识别为空? 检查 .env 中的 DASHSCOPE_API_KEY 是否正确。ASR 使用 DashScope WebSocket API,需要有效的 API Key。

Q: 直播模式黑屏? CCTV 直播视频受 DRM 保护,无法直接获取视频流。系统会自动切换为截图模式,显示 CDN 实时截图。

Q: 端口被占用?

# 查看占用端口的进程
lsof -i :8002
lsof -i :5180
# 杀掉占用进程
kill <PID>

Q: FFmpeg 报错? 确认已通过 brew install ffmpeg 安装,且 ffmpeg 在 PATH 中:

which ffmpeg
ffmpeg -version

费用说明

本系统调用 DashScope API 会产生费用:

  • qwen3.5-flash:每轮分析约消耗 1-2K tokens(含图片)
  • paraformer-v2:ASR 按音频时长计费
  • 停止监控后不再调用 API

建议在 DashScope 控制台设置用量告警。

About

CCTV 315 晚会实时监控系统 - AI 多模态分析辅助电商平台商品安全治理

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors