Несколько видеофильтров в FFmpeg

7203
sweb

Я хочу добавить водяной знак 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! 
2

1 ответ на вопрос

5
evilsoup
[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] [водяные знаки] scale = 480: -1, overlay = main_w / 2-overlay_w / 2: main_h / 2-overlay_h / 2 [out]` не работает. sweb 11 лет назад 0
Вы можете помочь мне решить это? sweb 11 лет назад 0
@sweb Я добавил инструкции, как это сделать, в ответ. evilsoup 11 лет назад 1
Ты снова за большую помощь, чувак. sweb 11 лет назад 0

Похожие вопросы