# 转码保持原始宽高比 ## 目标 - 横屏源按档位短边作为高度,竖屏源按档位短边作为宽度。 - 源短边小于档位短边时按源短边输出,不放大。 - 输出宽高均为偶数,SAR 固定为 1。 - rendition 的 width/height 使用 ffprobe 探测到的实际值。 ## 实施 1. ffprobe 读取源显示方向尺寸,旋转 90/270 度时交换宽高。 2. `effectiveShort = min(sourceShort, rungShort)` 并向下取偶数。 3. 横屏使用 `scale=-2::flags=lanczos,setsar=1`; 竖屏使用 `scale=:-2:flags=lanczos,setsar=1`。 4. 转码完成后 ffprobe variant playlist,写入实际输出尺寸。 5. master playlist 的 RESOLUTION 同步使用实际尺寸。 ## 不放大策略 选用“用源尺寸输出”:高于源短边的档位仍保留原 quality 标识和码率, 但分辨率封顶到源短边,避免所有档位都被跳过导致无产物。 ## 验证 - 先补横屏、竖屏、小源码片、偶数、SAR=1 与实际尺寸回写测试。 - 门禁:`mvn -pl fruitshorts-module-media,fruitshorts-transcode-worker test`。