Ошибка ffmpeg: -vf / -af / -filter и -filter_complex нельзя использовать вместе

5

Я пытаюсь запустить следующий cmd, который должен добавить водяной знак к видео, а также увеличить его.

ffmpeg -i "in.avi" -i "\logo.png" -vf scale=854:-1  -preset 
veryfast -crf 20 -filter_complex overlay=5:5 "ou.mkv"

Я получаю следующую ошибку.

Filtergraph 'scale=854:-1' was specified through the 
-vf/-af/-filter option for output stream 0:0, which is fed from 
a complex filtergraph. -vf/-af/-filter and -filter_complex 
cannot be used together for the same stream.

До того, как я попытался увеличить масштаб (без -vf scale = 854: -1), cmd работал до водяного знака.

Как я могу достичь обоих?

Что я пробовал?

  • Перемещение параметра -vf перед вводом, после ввода и т. Д.
cecilli0n
источник
Вы пытаетесь увеличить масштаб in.avi, logo.pngили выход из overlayфильтра? Вы должны использовать один фильтр для всей вашей фильтрации.
Llogan
@LordNeckbeard Я хочу просто увеличить масштаб in.avi, я пытался переместить масштаб -vf сразу после in.avi, а также непосредственно перед командой, но это не сработало. Собираюсь прочитать о filtergraph сейчас Спасибо!
cecilli0n
@LongNeckbeard filtergraph сработал -filter_complex "scale = 854: -1, overlay = 5: 5" . Если вы хотите опубликовать это в качестве ответа, я с радостью отмечу, что он принят. Спасибо!
cecilli0n

Ответы:

11

Вы можете использовать один filtergraph, чтобы сделать всю фильтрацию:

ffmpeg -i input.avi -i logo.png -filter_complex \
"[0:v]scale=854:-2[scaled]; \
 [scaled][1:v]overlay=5:5[out]" \
-map "[out]" -map 0:a -c:v libx264 -c:a copy output.mkv
  • [0:v]ссылается на видеопоток (ы) первого входа ( input.aviв этом примере). [1:v]это видео со второго входа ( logo.pngв этом примере).

  • В этом примере звук копируется по парам, а не перекодируется; при условии, что ваш первый вход имеет аудио.

  • Рекомендуется называть входные и выходные данные фильтра, например, в этом примере, вместо того, чтобы полагаться на значения по умолчанию, которые могут привести к неправильному выбору потока.

  • -2в масштабах используется видеофильтр вместо того, чтобы -1x264 требовал, чтобы выход делился на 2 при выводе с подвыборкой цветности 4: 2: 0:

Если одно из значений равно -n с n> 1, фильтр масштабирования также будет использовать значение, которое поддерживает соотношение сторон входного изображения, рассчитанное из другого указанного измерения. После этого он, однако, удостоверится, что вычисленный размер делится на n, и при необходимости скорректирует значение.

llogan
источник