fix(P0): 视频封面缩略图抽帧时间调整到15%处 #586
Reference in New Issue
Block a user
Delete Branch "fix/p0-thumbnail-seek-time"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
成片库和视频库中的视频封面缩略图都是纯色(全绿/全蓝),完全看不出视频内容。原因:缩略图抽取的是第1秒帧,视频开头通常是转场/纯色画面。
修复
影响范围
素材库注意
素材库缩略图当前是复用视频文件URL(浏览器自动显示首帧),不走此函数。如需同步优化素材库缩略图,需单独改造ingest流程。
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #586
⚠️ 问题(2个需要修改)
apps/worker/video_processing/thumbnail_generator.py 第53行:Input Seeking(
-ss置于-i前)可能导致功能失效。seek_time(例如 seek 到 1.5秒,但关键帧在 0秒和 10秒),FFmpeg 会强制从 0秒关键帧开始解码,导致生成的封面图仍然是片头画面,违背了修改初衷。apps/worker/video_processing/thumbnail_generator.py 第19行:参数
seek_ratio和min_seek_seconds缺乏校验。seek_ratio=-1.0,min_seek_seconds=-1.0),计算出的seek_time可能为负数,导致_format_seek_time生成非法的时间戳字符串(如-00:00:05.00),进而导致 FFmpeg 执行失败。💡 建议(2个可选)
apps/worker/video_processing/thumbnail_generator.py 第40行:关注
probe_duration带来的性能开销。probe_duration调用会额外启动一个ffprobe进程。在高并发的视频处理场景下,这会增加 CPU 和 I/O 压力。如果业务允许,可考虑在视频上传时预存时长信息,或评估是否接受此开销。apps/worker/video_processing/thumbnail_generator.py 第41行:异常捕获范围过宽。
except Exception会捕获所有异常(包括键盘中断等)。建议捕获具体的异常(如RuntimeError,ValueError或subprocess.CalledProcessError),并增加日志记录(logging),以便排查probe_duration失败的具体原因。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 13:14:37 | 模型:
🗑️ 预览环境已清理
PR #586 已关闭或合并,对应的预览环境已被清理。
LGTM