Skip to content

refactor(ffmpeg): 拆分 FFmpegTool — 硬件检测 / ffprobe 独立模块#76

Merged
Agions merged 1 commit into
mainfrom
refactor/split-ffmpeg-tool
Jun 16, 2026
Merged

refactor(ffmpeg): 拆分 FFmpegTool — 硬件检测 / ffprobe 独立模块#76
Agions merged 1 commit into
mainfrom
refactor/split-ffmpeg-tool

Conversation

@Agions

@Agions Agions commented Jun 16, 2026

Copy link
Copy Markdown
Owner

概述

P3 当初有意跳过的遗留项:把 FFmpegTool(812 行)的三类职责拆开。

改动

  • 新增 video_tools/hardware.pyHWAccelType + 硬件加速检测(detect_hw_accel / _check_nvidia_smi / _check_vaapi / _check_intel_cpu / ffmpeg_supports_encoder / get_hw_accel_encoder
  • 新增 video_tools/probe.py:ffprobe 元数据(run_ffprobe_json + get_duration/resolution/framerate/bitrate/video_info
  • ffmpeg_tool.py 瘦身为业务便捷门面:trim/concat/extract_audio/缩略图/转码等保留;硬件 + 探测方法改薄委托;HWAccelType 从 hardware 再导出

向后兼容

FFmpegTool.* 调用面与 HWAccelType 导出完全不变(外部 40+ 处调用、测试 patch 底座 SecureExecutor.run 全部照过)。

验收

  • ruff 通过;mypy 改动文件 0 新增错误
  • pytest 597 passed / 11 skipped(新增 2 个测试覆盖拆出模块)

P3 后续 — 拆分 FFmpegTool 三职责:

- 新增 video_tools/hardware.py: HWAccelType + detect_hw_accel / 各 _check_*
  / ffmpeg_supports_encoder / get_hw_accel_encoder(FFmpeg 编码器探测经统一
  执行器,nvidia-smi/wmic 保留裸 subprocess)
- 新增 video_tools/probe.py: run_ffprobe_json + get_duration/resolution/
  framerate/bitrate/video_info
- ffmpeg_tool.py 瘦身为业务便捷门面(trim/concat/extract_audio 等保留),
  硬件/探测方法改薄委托;HWAccelType 从 hardware 再导出
- __init__.py 导出 hardware / probe 子模块
- 向后兼容:FFmpegTool.* 调用面与 HWAccelType 导出不变(测试 patch 底座
  SecureExecutor.run,全部照过);新增 2 个测试覆盖拆出模块

回归: ruff 通过, pytest 597 passed / 11 skipped, mypy 改动文件 0 新增错误
@Agions Agions merged commit 138a469 into main Jun 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant