Я пытаюсь создать несколько вариантов видео в моей библиотеке (форматы Mp4), и у меня запланированы передачи в диапазоне от 1080p до 240p и популярные размеры между ними. Для этого я снимаю видео с разрешением AxB, а затем запускаю код (на bash), который масштабирует их до желаемых следующих размеров - 426x240 640x360 842x480 1280x720 1920x1080, с разными битрейтами, конечно, и затем снова сохраняет как Mp4.
Теперь, это прекрасно работает, если исходное видео имеет высоту и ширину, кратные 2, но код разбит на следующую строку для видео с нечетной шириной и высотой: -vf scale=w=${width}:h=${height}:force_original_aspect_ratio=decrease"
Где ' width 'и' height '- это желаемые (и жестко заданные) для каждой итерации: например, "426x240" и "640x360"
Ошибка: [libx264 @ 00000187da2a1580] width not divisible by 2 (639x360)
Error initializing output stream 1:0 -- Error while opening encoder for output stream #1:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Теперь подходы, описанные в этом, не работают для меня, так как я масштабирую - FFMPEG (libx264) "высота не делится на 2"
И я попробовал это тоже, но кажется, что все качества приобретают одинаковый размер - ffmpeg: ширина не делится на 2 (при соблюдении пропорций)
- Вот как я пытался использовать вот этот:
scale='bitand(oh*dar,65534)':'min(${height},ih)'
Пожалуйста, предложите, как решить эту проблему, учитывая, что: 1. У меня очень большая библиотека, и я не могу выполнить ручную замену для каждого видео 2. Мне нужно масштабировать видео и сохранять соотношение сторон
Спасибо!
PS: [Редактировать] Один из способов, который я вижу, это заполнение всех нечетных видео рост / вес с использованием второго сценария заранее. Это, однако, удваивает мое рабочее время и нагрузку. Я бы предпочел сохранить это в одном сценарии. Вот скрипт, который я вижу, который я могу использовать для заполнения: `` `ffmpeg -r 24 -i -vcode c libx264 -y -an -vf" pad = ceil (iw / 2) * 2: ceil (ih / 2) * 2 "` `(от: FFMPEG (libx264)" высота не делится на 2 ")