1

Я уже некоторое время читаю документы ffmpeg. Но я не могу сосредоточиться на том, как работают фильтры, имена и обратные ссылки. Или возможно ли то, что я хочу.

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

Например, кодирование фиксированного водяного знака на видео:

ffmpeg -y -threads 8 -i bunny-source.mp4 \
-i wm.png -filter_complex \
"[1:v]scale=100:-1[watermark]; [0:v][watermark]overlay=10:main_h-overlay_h-10[outv]" \
-map "[outv]" -map 0:a  marked.mp4 

Это генерирует водяной знак 100px в нижней части вывода. Я понимаю, что вывод сложного фильтра назван в чистых скобках. Я обнаружил, что первым параметром в [a:b] является числовой индекс ввода (-i). Но что означает:v. И как мне изменить команду так, чтобы вместо 100 я получил 30% ширины источника ввода? Это вообще возможно?

1 ответ1

1

Но что означает :v ?

Это спецификатор потока. Например, 1:v относится ко second input:all video streams (обратите внимание, что ffmpeg начинает отсчет с 0).

Это может быть уточнено еще больше; 1:v:2 относится ко second input:video stream type:third video stream . Так что это выберет третий видеопоток из второго входа.

Как мне изменить команду так, чтобы вместо ширины 100 пикселей я получал 30% ширины источника ввода?

В фильтре масштаба значения параметров w и h являются выражениями, которые, помимо прочего, могут ссылаться на ширину ввода (iw) и высоту (ih). Итак, ваша команда будет выглядеть так:

ffmpeg -y -i bunny-source.mp4 -i wm.png -filter_complex \
"[1:v]scale=iw*0.3:-1[watermark]; \
 [0:v][watermark]overlay=10:main_h-overlay_h-10[outv]" \
-map "[outv]" -map 0:a  marked.mp4

Это увеличит wm.png до 30% его ширины, а, следовательно, и высоты, поскольку вы использовали -1 что автоматически выберет правильное значение на основе заданного значения при сохранении соотношения сторон.

См. Документацию видеофильтра масштаба FFmpeg для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .