feat: 视频渲染后随机边缘裁剪 2-5% 降重 #1664 #1682
Reference in New Issue
Block a user
Delete Branch "feat/random-edge-crop-1664"
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?
改动
渲染完成后、上传 OSS 前,自动对视频四个边缘做随机裁剪再缩放回原分辨率,改变 pHash 指纹。
ffmpeg_utils.py — 新增
random_edge_crop()probe_video_info获取原始 W×Hrandom.uniform(2%, 5%)随机裁剪crop=W_new:H_new:x_offset:y_offset,scale=W_orig:H_origoutput_path=None时覆盖原文件;指定时写入新文件generation.py — 渲染后插入裁剪步骤
测试 — 9 个单测
验证
🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
[apps/worker/video_processing/ffmpeg_utils.py:324] 极小分辨率视频处理逻辑缺陷
new_w = max(..., 2),即最小裁剪尺寸为 2。如果原始宽度 W=1,计算出的new_w会被强制设为 2。crop=2:2:...试图从 1 像素宽的图像中裁剪出 2 像素宽的区域,FFmpeg 会抛出 "Requested area is not within the frame" 错误,导致任务失败。<= 0改为< 2,因为编码器通常要求至少 2 像素,且当前逻辑无法处理 1 像素的情况。[apps/worker/video_processing/ffmpeg_utils.py:346-349] 分辨率处理逻辑与文档描述不符
out_w = W if W % 2 == 0 else W + 1。+1会导致轻微的画面拉伸或宽高比变化,且违背了函数承诺。pad滤镜保持分辨率不变(如果业务严格要求分辨率一致)。鉴于目的是“改变 pHash”,建议修改文档字符串以如实反映行为。💡 改进建议(不阻塞合并)
[apps/worker/video_processing/ffmpeg_utils.py:362] 编码参数设置过于激进
-crf 18,这是一个非常高质量(接近无损)的设置,会导致编码速度变慢且文件体积变大。对于“降重”和“改变指纹”这一非关键任务,建议使用默认值(如 23)或稍高一点的值(如 20-23),以提升处理速度并节省存储空间。[apps/worker/video_processing/ffmpeg_utils.py:319-321, 352] 模块导入位置不规范
import random,import shutil,import tempfile以及import os被放置在函数内部或条件块内部。虽然 Python 允许这样做,但通常建议将所有模块导入放在文件顶部,以符合 PEP8 规范并减少重复执行的开销(尽管有缓存机制)。✅ 良好实践
generation.py中,对random_edge_crop的异常捕获非常合理,作为非关键路径的降重功能,失败时记录日志并继续使用原始视频,不会阻塞主流程。ffmpeg_utils.py中,使用了try...except块确保在 FFmpeg 执行失败时清理临时文件,防止残留垃圾文件。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-09-04 03:53:07 | 模型:
🗑️ 预览环境已清理
PR #1682 已关闭或合并,对应的预览环境已被清理。