fix: legacy渲染引擎concat前音频不归一化exit=234 + 视频改为pad留黑边 #503
Reference in New Issue
Block a user
Delete Branch "fix/legacy-audio-normalize-and-pad"
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?
问题
渲染引擎挑素材——横屏/竖屏/不同帧率/不同采样率的素材混在一起,concat必崩exit=234。渲染引擎的基本功是:任何素材进来都必须能统一规格后出片。
根因定位
P0: 音频完全没有归一化(exit=234 主因)
concat 前音频流直接拼接,没有统一采样率、声道数、采样格式。
P1: 视频用crop裁剪而不是pad留黑边
原实现 scale + crop 会裁掉超出部分的画面内容。横屏素材做竖屏输出时,左右内容被裁掉。
修复内容
1. 音频归一化(P0)
concat 前每个音频流加
aformat滤镜,统一为:aformat → atrim → asetpts 顺序:先统一格式再裁剪。
2. 视频改为pad留黑边(P1)
scale + pad 方式,保持原始比例不裁剪内容:
scale=W:H:force_original_aspect_ratio=decrease等比缩小pad=W:H:(ow-iw)/2:(oh-ih)/2:black居中+黑边填充确保横屏/竖屏/正方形/任何分辨率的素材都能正常出片,不丢失内容。
测试
关联 #406
代码审查结果 - PR #503
⚠️ 问题(0个需要修改)
无
💡 建议(1个可选)
sample_rates=48000、channel_layouts=stereo等参数提取为类常量或配置项,以便未来支持不同的音频输出标准(如 44100Hz 或 5.1 声道),避免硬编码导致灵活性降低。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-07-18 13:50:32 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。