视频元数据分析器

基于 Python + uv 的命令行工具,用于递归扫描一个或多个目录中的视频文件,调用 ffprobe 提取结构化元数据,并调用 ffmpeg 记录运行环境能力,最终输出:

  • report.json:完整元数据与汇总统计
  • files.csv:逐文件明细
  • report.html:可直接打开的离线可视化报告

当前能力

  • 输入一个或多个目录,递归发现常见视频文件
  • 提取视频时长、大小、编码、分辨率、帧率、音频编码等字段
  • 汇总时长分布、大小分布、视频编码分布、分辨率分布
  • 生成适合人工查看的 HTML 报告,以及适合后续二次处理的 JSON / CSV

依赖要求

  • Python 3.11+
  • uv
  • ffprobe
  • ffmpeg

要求 ffprobe 与 ffmpeg 已经在系统 PATH 中,或者在运行时通过参数显式指定。

初始化

uv sync --dev

运行方式

最直接的方式:

uv run video-metadata-analyzer D:\Videos E:\Archive --output-dir .\reports\latest

如果你更习惯模块方式:

uv run python -m video_metadata_analyzer D:\Videos --output-dir .\reports\latest

如果 ffprobe / ffmpeg 不在 PATH 中,可以显式指定:

uv run video-metadata-analyzer D:\Videos `
  --ffprobe-bin C:\ffmpeg\bin\ffprobe.exe `
  --ffmpeg-bin C:\ffmpeg\bin\ffmpeg.exe `
  --output-dir .\reports\latest

输出内容

生成目录内默认包含以下文件:

  • report.json
  • files.csv
  • report.html

其中 report.html 是离线静态页面,可以直接双击打开查看。

开发与测试

运行测试:

uv run pytest -q

查看命令帮助:

uv run video-metadata-analyzer --help

第一版边界

当前版本优先保证“扫描、提取、汇总、可视化”这条主链路可用,暂时没有做这些增强项:

  • 损坏视频的深度解码验证
  • 单文件失败后的错误报告面板
  • 更复杂的前端交互图表
  • 增量扫描与数据库缓存

如果后续要继续做,最值得优先加的是“探测失败文件单独记录,不让整次扫描因为一个坏文件直接中断”。

S
Description
视频元数据分析并可视化展示 大小,时长分布
Readme 101 KiB
Languages
Python 100%