Кілька відеофільтрів у FFmpeg


2

Я хочу додати водний знак PNG, а потім масштабувати своє відео. Я можу додати більше фільтрів. Це моя команда FFmpeg.

sweb@sweb-laptop:/tmp$ ffmpeg -i Wildlife.wmv -sn -acodec libvorbis -vcodec libvpx -b:a 128k -ar 44100 -b:v 384k -r 25 -vf "movie=/tmp/icon.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out], scale=480:-1" video.webm

… Але це дало мені помилку:

Simple filtergraph 'movie=/tmp/icon.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out], scale=480:-1' does not have exactly one input and output.
Error opening filters!

Відповіді:


5
[in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out], scale=480:-1"

..не [out]в неправильному місці, що робить фільтруючий сенс безглуздим. Вона повинна бути:

[in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2, scale=480:-1[out]"

Особисто мені не подобається фільм фільму з чисто естетичних причин (я думаю, що це робить командний рядок менш чітким). Я б зробив це, використовуючи filter_complex замість цього:

ffmpeg -i Wildlife.wmv -i /tmp/icon.png \
-filter_complex '[0:v][1]overlay=W/2-w/2:H/2-h/2,scale=480:-1[outv]' \
-map [outv] -map 0:a -c:a libvorbis -b:a 128k -c:v libvpx -b:v 384k output.webm

Зауважте, що filter_complex несумісний з [in], оскільки за своєю природою він потребує декількох входів.

Я видалив -ar 44100і -r 25, оскільки вони вам, мабуть, не потрібні - якщо джерело вводу має частоту кадрів 25 кадрів в секунду і частоту звуку 44100, вихід буде успадковано ці налаштування за замовчуванням. І якщо цього не відбудеться, ви, мабуть, нічого не виграєте, змінивши їх.


Щоб спочатку масштабувати відео, а потім додати водяний знак, ви можете використовувати щось подібне:

-vf 'movie=/tmp/icon.png[wm];[in]scale=480:-1[int];[int][wm]overlay=W/2-w/2:H/2-h/2[out]'

Я насправді не впевнений, чи спрацювало б це; особисто я б використовував filter_complex, як зазначено вище:

ffmpeg -i Wildlife.wmv -i /tmp/icon.png \
-filter_complex '[0:v]scale=480:-1[int];[int][1]overlay=W/2-w/2:H/2-h/2[outv]' \
-map [outv] -map 0:a -c:a libvorbis -b:a 128k -c:v libvpx -b:v 384k output.webm

якщо я хочу спершу шкала, а потім додати водну позначку, що мені робити? [in][watermark] scale=480:-1,overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2[out]не працює.
потік

чи можете ви допомогти мені вирішити це?
потік

1
@sweb Я додав інструкції, як це зробити на відповідь
evilsoup

ти знову за велику допомогу людині.
потік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.