Остановить масштабирование видео FFMPEG

Я использую FFMPEG для перекодирования видео, функция которого запускается автоматически. Я пытаюсь масштабировать видео в нескольких разрешениях с сохранением пропорций (подгонка). Если исходное разрешение видео меньше разрешения, указанного в команде, пропустите перекодирование и прекратите создание выходного файла для этого разрешения.

например:

У меня есть видео с разрешением 1920x1080

выход:

  • 3840х2160 (переход/стоп)
  • 2560х1440 (переход/стоп)
  • 1920x1080 (перейдите к выходу-1080p.mp4)
  • 1280x720 (перейти к выходу-720p.mp4)

Я перепробовал много команд, но ни одна из них не работает. Могу ли я узнать, есть ли команда, способная достичь этого?

Ниже приведена последняя рабочая команда, которую я имею для FFMPEG. Извините, я очень новичок в FFMPEG, я понимаю нынешнее командование все еще далеко от того, к чему я собираюсь подойти.

ffmpeg -i sample.mp4 -c:a copy -vf scale='min(2160,iw):-2' -movflags +faststart out2160.mp4 -vf scale='min(1440,iw):-2' -movflags +faststart out1440.mp4 -vf scale='min(1080,iw):-2' -movflags +faststart out1080.mp4 -vf scale='min(720,iw):-2' -movflags +faststart out720.mp4 -vf thumbnail -vf scale='min(500,iw):-2' -vframes 1 thumb500.png -vf scale='min(270,iw):-2' -vframes 1 thumb270.png

Если образец.mp4 является 1920x1080p или даже меньшее разрешение, эта команда будет выводить эти файлы:

  • out2160.МР4
  • out1440.МР4
  • out1080.МР4
  • out720.МР4
  • thumb500.png
  • thumb270.png

поскольку я запускаю ffmpeg автоматически, я хочу, чтобы команда могла сравнить разрешение, которое было установлено. Если исходное разрешение видео меньше, то просто пропустите его, нет смысла создавать или масштабировать файл, который больше исходного разрешения. Только выходной же или меньшее разрешение, сохраняя пропорции (подгонка). Было бы здорово, если бы вы могли направлять меня на этом, спасибо еще раз.

7
задан slhck
16.05.2023 12:06 Количество просмотров материала 2966
Распечатать страницу

1 ответ

Это можно сделать с помощью фильтра обрезки, который не будет работать, если обрезанные выходные размеры больше входных. Если команда завершится неудачно, выходной файл будет создан, но его размер будет равен 0.

каждый вариант необходимо преобразовать с помощью отдельной команды. Одна команда не может использоваться, как если бы один из конвейера завершается неудачей, вся команда прерывается.

фильтр урожая следует использовать так:

ffmpeg -i sample.mp4 -c:a copy -vf crop=iw:'max(ih,2160)',scale=-2:2160 -movflags +faststart out2160.mp4 

ширина обрезки то же, что и ширина ввода. Высота обрезки устанавливается на максимум входной высоты и целевой высоты. Если входная высота меньше целевой, инициализация фильтра обрезки завершается неудачей и команда прерывается. Если высота входного сигнала равна или большле, то полные ширина & высота пропущены до конца к фильтру маштаба.

1
отвечен Gyan 2023-05-17 19:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх