2016-07-03 3 views
1

Я использую эти команды, чтобы исчезнуть в логотипе через 5 секунд от начала потока и исчезать его через 25 секунд, как этоИспользование фейдера/дважды на одном изображении с помощью FFmpeg

ffmpeg -re -i test.mp4 -ignore_loop 0 -i logo.gif -filter_complex "[1:v] 
fade=in:st=5:d=1:alpha=1,fade=out:st=30:d=1:alpha=1 [ov];[0:v][ov] 
overlay=30:30" -f mpegts udp://127.0.0.1:port 

но Я хочу повторить это в другой период времени на одной и ту же эмблему, например (на 45-й секунду до 60 секунды) , когда я пытаюсь повторить синтаксис выцветания как эти ни один из них работает

ffmpeg -re -i test.mp4 -ignore_loop 0 -i logo.gif -filter_complex "[1:v] 
fade=in:st=5:d=1:alpha=1,fade=out:st=30:d=1:alpha=1,fade=in:st=45:d=1:alpha=1, 
fade=out:st=60:d=1:alpha=1 [ov];[0:v][ov] 
overlay=30:30" -f mpegts udp://127.0.0.1:port 

, как я могу решить Эта проблема ? и могу ли я использовать минуты вместо секунд с постепенным исчезновением?

ответ

2

Какое затухание на альфах является нулевой альфа до времени начала и интерполировать его на сохраненное значение в течение продолжительности. То, что исчезает на альфах, равно нулю после альфа после времени начала + длительности и интерполирует из сохраненного значения в течение продолжительности. Итак, ваш первый набор фильтров fade in/out обнуляет альфа до 5 секунд и после 30 секунд. Второй фильтр затухания обнулял всю альфа до 45 секунд (в том числе от 5 до 30 секунд), и затухание не срабатывало, потому что вся альфа после 30 секунд была обнулена, поэтому она интерполировалась из альфа = 0 в альфа = 0.

Вам необходимо разделить потоки и использовать несколько фильтров наложения.

ffmpeg -re -i test.mp4 -ignore_loop 0 -i logo.gif -filter_complex "[1:v]split=2[wm1][wm2]; 
[wm1]fade=in:st=5:d=1:alpha=1,fade=out:st=30:d=1:alpha=1[ovr1]; 
[wm2]fade=in:st=45:d=1:alpha=1,fade=out:st=60:d=1:alpha=1[ovr2]; 
[0:v][ovr1]overlay=30:30[base];[base][ovr2]overlay=30:30" 
-f mpegts udp://127.0.0.1:port 
Смежные вопросы