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