e68801eb59
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2m6s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m46s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 28s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m28s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m55s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 6m18s
AI Code Review / AI Code Review (pull_request) Successful in 9m20s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 13m37s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 15m54s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 21m45s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 29m4s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 20m45s
CI/CD Pipeline / CI Gate (pull_request) Successful in 1m7s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 4m14s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 4m46s
Code Review 阻塞问题修复 + 建议采纳:
1. 缩放规则与校验规则对齐(真 bug):
旧滤镜仅按短边 1080 触发缩放(横屏看 ih、竖屏看 iw),对超宽屏
(如 4000x1000)短边不超 1080 完全不缩放,产物长边 4000 超过
validate_transcode_output 的 1920 上限,转码被判定失败而降级用
原始 HEVC——浏览器仍无法播放。改为统一滤镜:
scale=w=if(gte(iw\,ih)\,min(1920\,iw)\,-2):
h=if(gt(ih\,iw)\,min(1920\,ih)\,-2),format=yuv420p
横屏限宽、竖屏限高、短边 -2 自适应,min() 保证小视频不放大;
build_transcode_vf 不再需要 is_portrait 参数(方向无关)。
ffmpeg 实测:1920x1080→1920x1080、4K竖屏→1080x1920、
4000x1000→1920x480、1080x2400→864x1920、640x360 不放大,均无 side data。
2. 合并 ffprobe(性能建议):新增 probe_video_info(path) 一次
-show_streams -of json 同时解析 width/height 与 Display Matrix
rotation(用全量 JSON 输出,规避 show_entries 嵌套 section 名在
ffmpeg 4.x/7.x 不一致的问题);主流程两次探测合并为一次。
probe_rotation/probe_dimensions 保留供测试与 validate 复用。
3. 临时文件清理:转码 try 块 finally 中 _tc_tmp.unlink() 在 #1449
即已存在(develop 基线代码),本轮 review 该条为窗口外误判,
已在 PR 评论说明。
测试:
- TestBuildTranscodeVF 重写为统一滤镜断言(逗号转义、无 transpose、
横竖双分支 min(1920)、yuv420p 后缀)。
- 新增 TestProbeVideoInfo(真实 ffprobe 320x240 无 rotation;
不存在文件返回三元 None)。
- 端到端新增 test_ultra_wide_long_edge_capped(4000x1000→1920x480
且 validate 通过);_transcode_like_production 改用 probe_video_info
+ 无参 build_transcode_vf,与生产完全一致。
- 任务级竖屏用例滤镜特征断言更新为 min(1920)。