FFmpeg - изменение разрешения видео с соотношением сторон

все.

Как изменить разрешение видео с соотношением сторон с FFmpeg?

Есть варианты http://manpages.ubuntu.com/manpages/oneiric/man1/ffmpeg.1.html

       -s size
       Set frame size. The format is wxh (ffserver default = 160x128,
       ffmpeg default = same as source).  The following abbreviations are
       recognized:

и

       -aspect aspect
       Set the video display aspect ratio specified by aspect.

       aspect can be a floating point number string, or a string of the
       form num:den, where num and den are the numerator and denominator
       of the aspect ratio. For example "4:3", "16:9", "1.3333", and
       "1.7777" are valid argument values.

Например, у меня есть два входных видео:

  • с разрешением 200 * 400
  • с разрешением 400 * 700

Мне нужно сделать выходное видео с разрешением 100 * 200.

Если я запустим ffmpeg с -s 100x200, то второе видео будет иметь плохую пропорцию.

Как ограничить выходное видео по ширине, с автоматическим соотношением сторон по высоте?

Например, я хочу указать для выходного видео только ширину 100 пикселей, а ffmpeg должен автоматически вычислять высоту с правильным соотношением сторон.

Для первого видео это будет:

200/100 = 2

400/2 = 200

Т.е. 100x200

Для второго видео это будет:

400/100 = 4

700/4 = 75

Т.е. 100x75

Возможно ли это?

Ответ 2

Не работает с видео. Эта страница касается только неподвижных изображений.

По причинам, не полностью понятым, обезьяны FFMPEG вокруг с соотношением Sample/Pixel Aspect Ratio возвращают видео в исходное соотношение сторон. Например, если вы растягиваете видеоизображение вдвое шире, это сделает соотношение сторон 1: 2 или что-то подобное (2: 1?)

Таким образом, если вы действительно хотите растянуть видео из стиля "Stretch Armstrong", вам нужно заставить SAR (Sample Aspect Ratio):

ffmpeg -i <something> -vf scale=iw*55:ih,setsar=1:1 ...

Это не очень хорошо описано в руководстве FFMPEG, здесь ответ video.stackexchange, который помещает все это в одном месте.

Ответ 3

Ниже приведены оба варианта: со шкалой:

ffmpeg -i source.mp4 -r 15 -s 320x240 -strict -2 destination.mp4

С соотношением сторон:

ffmpeg -i source.mp4 -r 15 -aspect 1:1 -strict -2 destination.mp4

Ответ 4

Используйте магическое число -1 для пропорционального изменения размера видео, и setdar нужно использовать косую черту / качестве разделителя, а не двоеточия :

ffmpeg -i <input> -vf "scale=100:-1,setdar=16/9" <output>

Команда изменит размер видео от 200x400 до 100x200 и от 400x700 до 100x175 с соотношением сторон 16:9

Ответ 5

Я использую iDealshare VideoGo, чтобы изменить соотношение сторон видео: нажмите "Настройка..." → "Дополнительные параметры" → "Соотношение сторон", нажмите кнопку "Авто", чтобы выбрать 4: 3 или 16: 9, или просто перезаписать желаемый, такой как 2,35: 1, 1,85: 1, 1:1 и т.д.