fix: 渲染失败三重修复 - legacy fps滤镜 + 横屏过滤 + legacy分辨率读取 #500

Merged
auto-approve-bot merged 1 commits from fix/render-fps-and-landscape into develop 2026-07-18 13:11:59 +08:00
Owner

问题背景

第十二轮一键生成测试再次出现渲染失败 exit=234,排查发现三个独立Bug:

修复清单

P0: legacy路径fps滤镜缺失

  • 根因_build_clip_filter 函数签名有 fps 参数,但函数体完全没使用
  • 影响:concat filter要求所有输入帧率一致,不同帧率素材必崩(exit=234)
  • 修复:在crop之后、setpts之前增加 fps={fps} 滤镜
  • 位置apps/api/app/services/video_compose_service.py _build_clip_filter

P1: 自动选素材无横屏过滤

  • 根因auto_select_video_assets 只过滤了编码格式,完全没有横竖屏判断
  • 影响:1920x1080等横屏素材被选中进入竖屏剪辑,裁剪后画面不可用
  • 修复:增加 width > height 横屏过滤,正方形放过,尺寸未知放过
  • 兼容:优先读 width/height 字段,fallback到 metadata.width/height
  • 位置apps/api/app/api/routes/_helpers.py auto_select_video_assets

P2: legacy路径不读取plan配置的分辨率

  • 根因_render_with_legacy 硬编码1280x720,不读 plan.config.export.resolution
  • 影响:模板配置的1080x1920竖屏分辨率不生效,始终输出横屏
  • 修复:从plan.config.export读取resolution和fps,传给build_compose_command
  • 位置apps/worker/worker_app/tasks/edit_plan_generation.py _render_with_legacy

测试

  • 新增11个自动选素材横屏过滤测试
  • 新增2个legacy fps滤镜测试
  • 共55个相关单元测试全过

关联Issue

  • #495 【P0】legacy渲染引擎帧率不统一
  • #496 【P1】自动选素材无编码格式过滤
  • #497 【P2】自动选素材无横竖屏过滤
## 问题背景 第十二轮一键生成测试再次出现渲染失败 exit=234,排查发现三个独立Bug: ## 修复清单 ### P0: legacy路径fps滤镜缺失 - **根因**:`_build_clip_filter` 函数签名有 `fps` 参数,但函数体完全没使用 - **影响**:concat filter要求所有输入帧率一致,不同帧率素材必崩(exit=234) - **修复**:在crop之后、setpts之前增加 `fps={fps}` 滤镜 - **位置**:`apps/api/app/services/video_compose_service.py` `_build_clip_filter` ### P1: 自动选素材无横屏过滤 - **根因**:`auto_select_video_assets` 只过滤了编码格式,完全没有横竖屏判断 - **影响**:1920x1080等横屏素材被选中进入竖屏剪辑,裁剪后画面不可用 - **修复**:增加 `width > height` 横屏过滤,正方形放过,尺寸未知放过 - **兼容**:优先读 width/height 字段,fallback到 metadata.width/height - **位置**:`apps/api/app/api/routes/_helpers.py` `auto_select_video_assets` ### P2: legacy路径不读取plan配置的分辨率 - **根因**:`_render_with_legacy` 硬编码1280x720,不读 plan.config.export.resolution - **影响**:模板配置的1080x1920竖屏分辨率不生效,始终输出横屏 - **修复**:从plan.config.export读取resolution和fps,传给build_compose_command - **位置**:`apps/worker/worker_app/tasks/edit_plan_generation.py` `_render_with_legacy` ## 测试 - 新增11个自动选素材横屏过滤测试 - 新增2个legacy fps滤镜测试 - 共55个相关单元测试全过 ## 关联Issue - #495 【P0】legacy渲染引擎帧率不统一 - #496 【P1】自动选素材无编码格式过滤 - #497 【P2】自动选素材无横竖屏过滤
xiaoxia added 1 commit 2026-07-18 13:08:23 +08:00
fix: 渲染失败三重修复 - legacy fps滤镜 + 横屏过滤 + legacy分辨率读取
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 16s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 29s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 49s
AI Code Review / AI Code Review (pull_request) Failing after 1m32s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 1m44s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m8s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m22s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 3m35s
Preview Cleanup / Cleanup Preview Environment (pull_request) Failing after 0s
28e7931388
## P0: legacy路径fps滤镜缺失导致concat失败
- _build_clip_filter有fps参数但从未使用
- concat要求所有输入帧率一致,不同帧率必崩
- 修复:在crop后setpts前增加fps滤镜,统一到目标帧率

## P1: 自动选素材无横屏过滤
- 只过滤了编码格式,完全没有横竖屏判断
- 横屏素材混入竖屏剪辑,裁剪后画面不可用
- 修复:width > height的横屏素材过滤掉
- 兼容:正方形放过,尺寸未知放过,metadata兜底

## P2: legacy路径不读取plan配置的分辨率
- 硬编码1280x720,忽略plan.config.export.resolution
- 导致模板配置的1080x1920不生效
- 修复:从plan.config读取resolution和fps传给build_compose_command

55个单元测试全过
auto-approve-bot approved these changes 2026-07-18 13:10:32 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-18 13:10:32 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 8f5176aadb into develop 2026-07-18 13:11:59 +08:00
auto-approve-bot deleted branch fix/render-fps-and-landscape 2026-07-18 13:11:59 +08:00
Sign in to join this conversation.