视频质量打分系统使用指南
📌 功能概述
自动评估合成视频的质量,提供5个维度的详细评分和优化建议:
- 🔍 清晰度评分 - Laplacian方差分析
- ☀️ 亮度适中性 - 0-255范围归一化
- 🎨 对比度评分 - 画面层次感
- 📐 分辨率评分 - 480p ~ 4K等级
- 🎬 运动流畅度 - 帧率与光流分析
🚀 快速开始
1. 自动启用(默认)
质量评分已默认启用,合成完成后自动分析并显示评分卡片。
2. 手动控制
如需关闭评分(加快处理速度):
javascript
options: {
enable_quality_score: false // 关闭质量评分
}📊 评分指标详解
清晰度(Sharpness)0-100分
评估方法:
- 使用 FFmpeg
signalstatsfilter 提取 YDIF(帧间差异) - Laplacian 方差计算边缘清晰度
- 考虑分数稳定性(标准差加分)
评分标准:
- 90-100分:非常清晰,细节丰富
- 70-89分:清晰可见,正常质量
- 50-69分:略有模糊,可接受
- <50分:模糊严重,需优化
优化建议:
- 分数 <70:使用 Real-ESRGAN 超分提升画质
亮度适中性(Brightness)0-100分
评估方法:
- 提取 YAVG(Y通道平均值)
- 归一化到 0-1 范围
- 理想区间:0.4-0.6
评分标准:
- 100分:亮度在 0.4-0.6(完美)
- 80分:亮度在 0.3-0.4 或 0.6-0.7(良好)
- 60分:亮度在 0.2-0.3 或 0.7-0.8(偏暗/偏亮)
- 40分:亮度 <0.2 或 >0.8(严重过曝/欠曝)
优化建议:
- 分数 <60:使用颜色校正调整曝光
对比度(Contrast)0-100分
评估方法:
- 基于清晰度指标归一化
- 简化版对比度估算
评分标准:
- 80-100分:层次分明
- 60-79分:对比适中
- <60分:画面平淡
优化建议:
- 分数 <60:增强对比度或使用 LUT
分辨率(Resolution)0-100分
评估方法:
- 像素总数分级
评分标准:
4K (3840×2160) → 100分
2K (2560×1440) → 95分
1080p (1920×1080) → 90分
720p (1280×720) → 75分
480p (854×480) → 60分
<480p → 40分优化建议:
- 分数 <75:使用 Real-ESRGAN 超分到 1080p+
运动流畅度(Motion Smoothness)0-100分
评估方法:
- 基于帧率分级
- 光流分析(简化版)
评分标准:
≥60fps → 100分
≥30fps → 85分
≥24fps → 70分
<24fps → 50分优化建议:
- 分数 <70:使用 FILM/RIFE 插帧到 60fps
🏆 质量等级
| 等级 | 分数范围 | 说明 |
|---|---|---|
| S | 90-100 | 优秀,可直接发布 |
| A | 80-89 | 良好,轻微优化 |
| B | 70-79 | 中等,建议优化 |
| C | 60-69 | 及格,需要改进 |
| D | <60 | 较差,强烈建议重制 |
💡 使用示例
示例 1:查看质量评分
javascript
// 前端默认开启质量评分
await start() // 合成完成后自动显示评分卡片评分卡片显示:
🏆 视频质量评估 [S 级]
85.5
综合评分
📊 各维度得分:
清晰度: ████████████████░░ 88
亮度适中: ███████████████░░░ 75
对比度: ███████████████░░░ 82
分辨率: ██████████████████ 90
运动流畅: ████████████████░░ 85
💡 优化建议:
• 亮度不理想,建议调整曝光或使用颜色校正示例 2:根据建议优化
场景:评分 72 分(B级),清晰度 65 分,帧率 30fps
优化步骤:
启用超分(提升清晰度和分辨率)
bash# 使用 Real-ESRGAN 超分到 1080p python super_resolution.py --input video.mp4 --output video_hd.mp4启用插帧(提升流畅度)
bash# 使用 FILM 插帧到 60fps python interpolate_film.py --input video_hd.mp4 --fps 60 --output video_final.mp4再次评分
- 预期清晰度:65 → 85+
- 预期分辨率:75 → 90
- 预期流畅度:85 → 100
- 综合评分:72 → 90+(S级)
🔧 高级配置
调整采样帧数
默认采样 20 帧,可自定义:
python
# 快速评分(10帧)
quality_score = QualityScorer.analyze_video(video_path, sample_frames=10)
# 完整评分(50帧,更准确)
quality_score = QualityScorer.analyze_video(video_path, sample_frames=50)返回数据结构
json
{
"overall_score": 85.5,
"grade": "A",
"dimensions": {
"sharpness": 88.2,
"brightness": 75.0,
"contrast": 82.1,
"resolution": 90.0,
"motion_smoothness": 85.0
},
"video_info": {
"duration": 15.3,
"fps": 30,
"resolution": "1280x720",
"frames_analyzed": 20
},
"suggestions": [
"亮度不理想,建议调整曝光或使用颜色校正"
]
}⚙️ 技术实现
后端模块
文件:/pybridge/src/bridge/quality_scorer.py
核心类:
python
class QualityScorer:
@staticmethod
def analyze_video(video_path, sample_frames=30)
# 分析视频质量,返回评分结果
@staticmethod
def _score_sharpness(scores)
# 清晰度评分算法
@staticmethod
def _score_brightness(scores)
# 亮度评分算法
# ... 其他评分方法集成流程
合成完成 → 质量评估 → 保存评分 → 前端显示
↓ ↓ ↓ ↓
ffmpeg scorer jobs[id] 卡片UIPipeline 可视化
✅ 音频拼接
✅ 视频缩放
✅ 运镜效果
✅ 转场合成
✅ 字幕渲染
✅ 最终编码
🔄 质量评估 ← 新增阶段📈 性能说明
| 采样帧数 | 处理时间 | 准确度 | 适用场景 |
|---|---|---|---|
| 10帧 | ~2秒 | 中 | 快速预览 |
| 20帧(默认) | ~4秒 | 高 | 通用场景 |
| 50帧 | ~10秒 | 极高 | 精确评估 |
优化建议:
- 短视频(<30s):10-20帧
- 中等视频(30s-2min):20-30帧
- 长视频(>2min):30-50帧
⚠️ 注意事项
FFprobe 依赖
- 需要 FFmpeg 完整安装
- 检查:
ffprobe -version
评分仅供参考
- 基于统计分析,非感知质量
- 最终质量以人眼观看为准
默认启用
- 会增加约 5-10秒处理时间
- 可通过
enable_quality_score: false关闭
分数解读
- 综合评分:加权平均(清晰度 35%,其他各 15-20%)
- 建议优先关注清晰度和分辨率
🎯 典型场景
场景 1:解说视频
期望质量:
- 清晰度:80+(文字清晰可见)
- 亮度:70+(适中偏亮)
- 分辨率:75+(720p起步)
优化策略:
- 如果清晰度 <80:超分 + 字幕优化
- 如果亮度 <70:色彩校正
场景 2:剧情短片
期望质量:
- 清晰度:85+(画面细腻)
- 流畅度:85+(30fps+)
- 对比度:80+(层次分明)
优化策略:
- 如果流畅度 <85:FILM插帧到60fps
- 如果对比度 <80:调色增强
场景 3:知识讲解
期望质量:
- 清晰度:90+(极致清晰)
- 分辨率:90+(1080p)
- 亮度:80+(明亮)
优化策略:
- 清晰度 <90:Real-ESRGAN x4超分
- 分辨率 <90:重新渲染高分辨率
📝 更新日志
- 2025-12-15: 初始版本发布
- ✅ 5维度质量评估
- ✅ S/A/B/C/D 等级划分
- ✅ 智能优化建议
- ✅ Pipeline 可视化集成
- ✅ 前端评分卡片显示
开发团队: Stooland AI 视频团队
技术栈: FFmpeg + Python + Vue3
相关文档: 转场运镜指南