Вам необходимо указать параметры в фильтре по имени, поэтому ваши первоначальные настройки фильтра необходимо изменить на ...
-filter_complex "[0:v]eq=contrast=1:brightness=0:saturation=1:gamma=1: gamma_r=1:gamma_g=1:gamma_b=1:gamma_weight=1[outv]"
... если вы хотите установить все эти параметры. В противном случае фильтр будет игнорировать ваши настройки и применять значения по умолчанию, или он мог бы неправильно интерпретировать значение одной предполагаемой опции для другой (это не должно происходить, но с фильтрами FFmpeg произошли более странные вещи).
Что касается выбранных значений в сравнении с конечными результатами, то код, указанный в slhck, показывает, что значения, которые устанавливаются для каждой опции, проходят через серию внутренних вычислений, а затем результаты используются для оценки и корректировки на уровне пикселей. Похоже, что "базовый" расчет для contrast
...
(param->contrast * 256 * 16)
... так что значение по умолчанию 0
приведет к 0, указанное значение 1
приведет к 4096, значение к -0.00275
-11.264 и т. д., и эти базовые значения будут использованы в дальнейших вычислениях в дальнейшем. Другими словами, было бы лучше рассматривать обработку этих параметров фильтром как уникальную, поэтому потратьте некоторое время, чтобы поиграть с ними, чтобы посмотреть, как они работают. Чтобы получить истинное представление об эффектах, вы можете настроить и просмотреть вывод eq
настроек с помощью FFplay, например:
ffplay -i input.jpg -vf "eq=contrast=1.5:brightness=-0.05:saturation=0.75"
Что касается вашего исходного сценария, так как вы использовали только один вход (ваш jpeg), один фильтр (eq) и все параметры, кроме contrast
несущих значения по умолчанию, вы можете уменьшить сценарий до следующего, чтобы получить ваши 3 секунды MP4, при условии, что eq=contrast=1
дает желаемые результаты:
ffmpeg -y -loop 1 -i input.jpg -vf "eq=contrast=1" -c:v libx264 \ -pix_fmt yuv420p -t 3 out.mp4
полное раскрытие: опубликовано в редакции 2016/06/19 для большей ясности и расширенной информации