2016-07-03 14 views
1

Ich verwende diese in Logo nach 5 Sekunden vom Beginn des Stroms zu verblassen Befehle und es fade out nach 25 Sekunden wie folgtMit Fade-in/out zweimal auf dem gleichen Bild ffmpeg mit

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 

aber ich möchte zum Beispiel das in einem anderen Zeitraum auf dem gleichen logo wiederholen (in der 45. Sekunde bis 60. Sekunde) wenn ich versuche, verblassen Syntax wie diese keiner von ihnen zu wiederholen arbeiten

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 

wie kann ich lösen dieses Problem ? und kann ich Minuten statt Sekunden mit Fade verwenden?

Antwort

2

Was eine Einblendung bei Alpha tut, ist, die Alpha vor der Startzeit auf Null zu setzen und sie innerhalb der Dauer auf den gespeicherten Wert zu interpolieren. Was ein Fade-Out bei Alpha tut, ist Null nach Startzeit + Dauer und interpoliert aus dem gespeicherten Wert innerhalb der Dauer. Ihre ersten Ein- und Ausblendfilter haben das Alpha vor 5s und nach 30s auf Null gesetzt. Der zweite Einblendungsfilter hat vor 45s (einschließlich 5 bis 30s) das gesamte Alpha auf Null gestellt, und die Einblendung funktionierte nicht, weil das gesamte Alpha nach 30s auf Null gesetzt war, so dass es von Alpha = 0 zu Alpha = 0 interpolierte.

Sie müssen die Streams teilen und mehrere Überlagerungsfilter verwenden.

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