Files
FruitServer/docs/plans/2026-10-22-transcode-preserve-aspect.md

1.1 KiB
Raw Permalink Blame History

转码保持原始宽高比

目标

  • 横屏源按档位短边作为高度,竖屏源按档位短边作为宽度。
  • 源短边小于档位短边时按源短边输出,不放大。
  • 输出宽高均为偶数,SAR 固定为 1。
  • rendition 的 width/height 使用 ffprobe 探测到的实际值。

实施

  1. ffprobe 读取源显示方向尺寸,旋转 90/270 度时交换宽高。
  2. effectiveShort = min(sourceShort, rungShort) 并向下取偶数。
  3. 横屏使用 scale=-2:<effectiveShort>:flags=lanczos,setsar=1; 竖屏使用 scale=<effectiveShort>:-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。