Skip to content

lu0b0/SceneCut-Pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SceneCut Pro - 智能视频场景分割API

Version Python PyTorch License

基于 TransNetV2 深度学习模型的专业视频场景自动分割API服务。SceneCut Pro 能够智能识别视频中的场景变化,提供高精度的场景边界检测,支持多种部署方式。

✨ 核心特性

🎯 智能场景检测

  • 动态阈值算法:根据视频内容自动计算最佳分割阈值
  • 双模式支持:场景模式(scene)和转场模式(transition)
  • 高精度识别:基于 TransNetV2 深度学习模型,准确率高达 95%+
  • 最小场景过滤:智能合并过短场景,避免过度分割

🚀 多种接口

  • REST API:完整的异步API服务,支持后台任务处理
  • 命令行工具:本地批量处理,支持脚本集成
  • Docker部署:一键部署,支持容器化运行

📊 丰富的输出

  • 视频分割:自动将视频分割成独立的场景片段
  • 可视化图表:生成场景边界分布图
  • 场景信息:详细的场景时间戳、帧范围等元数据
  • 批量处理:支持多视频并行处理

📦 快速开始

环境要求

  • Python 3.7+
  • FFmpeg(用于视频处理)
  • CUDA(可选,用于GPU加速)

安装

# 克隆仓库
git clone https://github.com/yourusername/scenecut-pro.git
cd scenecut-pro

# 安装依赖
pip install -r requirements.txt

# 安装程序
python setup.py install

下载模型权重

# 自动下载(如果没有)
wget -O app/models/transnetv2_pytorch_weights.pth \
  https://github.com/soCzech/TransNetV2/releases/download/v1.0/transnetv2_pytorch_weights.pth

🎮 使用方法

1. API服务器模式

启动服务器

# 方式1:直接启动
python -m app.api.server

# 方式2:使用uvicorn(支持热重载)
uvicorn app.api.server:app --reload --host 0.0.0.0 --port 8000

# 方式3:安装后使用命令
scenecut-api

API使用示例

上传视频文件分割:

# 使用动态阈值(推荐)
curl -X POST -F "video=@video.mp4" \
  http://localhost:8000/api/v1/segment

# 使用固定阈值
curl -X POST -F "video=@video.mp4" \
  -F "threshold=0.5" \
  http://localhost:8000/api/v1/segment

处理网络视频URL:

curl -X POST \
  -F "video_url=https://example.com/video.mp4" \
  -F "split_mode=scene" \
  http://localhost:8000/api/v1/segment-url

查询任务状态:

curl http://localhost:8000/api/v1/tasks/{task_id}

2. 命令行工具模式

# 基本使用
scenecut video.mp4

# 指定输出目录
scenecut video.mp4 --output-dir ./results

# 使用固定阈值
scenecut video.mp4 --threshold 0.5 --split-mode scene

# 批量处理目录
scenecut ./videos_folder --output-dir ./results

# 生成可视化和缩略图
scenecut video.mp4 --visualize --create-thumbnails

# 使用GPU加速
scenecut video.mp4 --device gpu

3. Docker部署

# 构建镜像
docker build -t scenecut-pro:latest .

# 运行容器
docker run -d \
  -p 8000:8000 \
  -v $(pwd)/videos:/app/videos \
  -v $(pwd)/output:/app/output \
  scenecut-pro:latest

# 或使用docker-compose
docker-compose up -d

🔧 配置参数

场景检测参数

参数 类型 默认值 说明
threshold float None 场景检测阈值(0.1-0.9),不填则使用动态阈值
split_mode string "scene" 分割模式:scene/transition
min_scene_length int 15 最小场景长度(帧数)
visualize bool true 是否生成可视化图表

性能参数

参数 类型 默认值 说明
batch_size int 512 批处理大小
device string "auto" 计算设备:auto/cpu/gpu
threads int 4 处理线程数

📊 API端点

核心端点

端点 方法 描述
/api/v1/segment POST 上传视频文件进行分割
/api/v1/segment-url POST 处理网络视频URL
/api/v1/tasks/{task_id} GET 获取任务状态
/api/v1/tasks GET 列出所有任务
/api/v1/download/{task_id}/{file} GET 下载处理结果

辅助端点

端点 方法 描述
/health GET 健康检查
/api/v1/info GET API信息
/docs GET Swagger文档
/api/v1/merge-videos POST 合并多个视频

🏗️ 项目结构

scenecut-pro/
├── app/
│   ├── api/           # API服务器
│   ├── core/          # 核心处理模块
│   │   ├── scene_detector.py    # 场景检测算法
│   │   ├── scene_predictor.py   # 模型预测
│   │   ├── frame_extractor.py   # 帧提取
│   │   └── video_splitter.py    # 视频分割
│   ├── models/        # 深度学习模型
│   │   └── transnetv2.py        # TransNetV2实现
│   ├── utils/         # 工具模块
│   └── plugins/       # 插件系统
├── bin/
│   └── segmentation_cli.py      # 命令行工具
├── tests/             # 测试文件
├── docker/            # Docker配置
└── docs/              # 文档

🧪 测试

# 运行API完整性测试
python test_api_completeness.py

# 测试阈值功能
python test_threshold_api.py

# 运行使用示例
python api_usage_example.py video.mp4

🎯 使用场景

  • 视频编辑:自动识别场景切换点,辅助视频剪辑
  • 内容分析:分析视频结构,提取关键场景
  • 广告检测:识别电视节目中的广告片段
  • 视频索引:为长视频创建场景级索引
  • 素材管理:自动分类和整理视频素材库
  • 直播剪辑:快速提取直播精彩片段

📈 性能指标

  • 准确率:场景检测准确率 95%+
  • 处理速度
    • CPU:约 5-10 FPS
    • GPU:约 30-50 FPS(NVIDIA GPU)
  • 内存占用:< 2GB(标准配置)
  • 支持格式:MP4, AVI, MOV, MKV, FLV, WMV, WebM

🔬 技术细节

核心算法

  • 模型架构:TransNetV2 with DDCNN(Dilated Dense CNN)
  • 输入尺寸:48x27 RGB frames
  • 特征提取:帧相似度 + 颜色直方图
  • 阈值策略
    • 动态阈值:基于视频内容复杂度自适应计算
    • 固定阈值:用户指定(0.1-0.9)

处理流程

  1. 视频验证:检查格式和编码兼容性
  2. 帧提取:提取并调整为模型输入尺寸
  3. 场景预测:使用TransNetV2模型预测转场概率
  4. 边界检测:应用阈值和后处理算法
  5. 场景合并:智能合并过短场景
  6. 视频分割:使用FFmpeg分割视频

🤝 贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🙏 致谢

📮 联系方式


Made with ❤️ by SceneCut Pro Team

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages