From d10759b26ba2f4091c1ba415c9f24eec2c8a44fa Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 19 Aug 2026 11:50:16 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20pad=20=D0=BA=D0=B0=D0=B4=D1=80=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BE=20=D0=BA=D1=80=D0=B0=D1=82=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=2016=20(H.264=20=D0=BC=D0=B0=D0=BA=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=D0=B8)=20=E2=80=94=20scale+pad=3Dceil(iw/16)?= =?UTF-8?q?*16,=20=D0=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=B8=D1=81=D0=BA=D0=B0=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Эмуляторный декодер (c2.goldfish) отказывался декодировать 893x480 (не кратно 16). Теперь после scale любой ширины pad доводит кадр до кратного 16 чёрными полями, пропорции не меняются. --- .../kotlin/pw/binom/mirror/worker/convert/FfmpegService.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/pw/binom/mirror/worker/convert/FfmpegService.kt b/src/main/kotlin/pw/binom/mirror/worker/convert/FfmpegService.kt index 991bbf4..535f412 100644 --- a/src/main/kotlin/pw/binom/mirror/worker/convert/FfmpegService.kt +++ b/src/main/kotlin/pw/binom/mirror/worker/convert/FfmpegService.kt @@ -82,7 +82,9 @@ class FfmpegService( } if (width != null || height != null) { args += "-vf" - args += "scale=${width ?: "-1"}:${height ?: "-1"}" + // Высота прибита (480), ширина — по пропорциям; pad доводит кадр до кратности 16 + // (H.264 макроблоки 16x16): чёрные поля по краям, картинка не искажается. + args += "scale=${width ?: "-1"}:${height ?: "-1"},pad=ceil(iw/16)*16:ceil(ih/16)*16:(ow-iw)/2:(oh-ih)/2" } if (!removeAudio) { if (audioCodec != null) {