feat: 上传时自动检测 HEVC 编码并转码为 1080p H.264 #1449
Reference in New Issue
Block a user
Delete Branch "feat/hevc-auto-transcode"
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?
问题
4K HEVC 素材在浏览器 WebCodecs 硬件解码时输出黑帧,flush 超时 10 秒。
方案
上传时检测 HEVC 编码,自动转码为 1080p H.264,前端零改动。
改动范围
仅 1 个文件:
apps/worker/worker_app/tasks/ingest.py(+88 行)逻辑
_h264.mp4验收
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
from video_processing.oss_helpers import upload_to_oss放在了try块内部的业务逻辑分支中(第265行)。虽然这可以实现懒加载或避免循环依赖,但通常建议将模块导入放在文件顶部,以提高代码可读性和依赖关系的明确性。除非存在必须在此处导入的特殊原因(如解决循环依赖),否则建议移至文件头部。✅ 良好实践
ingest.py中,采用了先提取转码后的元元数据,确认成功后再更新job.storage_key的策略。这有效避免了因元数据提取失败导致数据库存储了无效文件路径的脏数据问题。tempfile.NamedTemporaryFile并配合finally块进行清理,防止临时文件残留;同时使用了delete=False配合显式unlink(),兼容了 Windows 平台下的文件占用问题。ffmpeg时使用了列表形式传递参数,避免了命令注入风险;同时设置了stdout=DEVNULL和stderr=PIPE,既避免了内存溢出(相比capture_output=True),又保留了错误日志用于排查。test_ingest_hevc_transcode.py覆盖了命名规则、脏数据防护、安全修复验证等关键场景,质量较高。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-08-20 03:56:50 | 模型:
🗑️ 预览环境已清理
PR #1449 已关闭或合并,对应的预览环境已被清理。