2016-07-03 12 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 

が、私は私が解決することができますどのように

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 

を働く彼らのこのどれも同じようフェード構文を繰り返ししようとすると、 (第60秒に45秒で)例えば、同じロゴを異なる時間帯でこれを繰り返したいですこの問題 ? とフェードで秒の代わりに分を使用できますか?

答えて

2

アルファのフェードインは、の開始時刻より前のアルファをゼロにして、その期間内に格納された値に補間します。アルファのフェードアウトは、の開始時間+継続時間の後のアルファをゼロにし、その期間内に格納された値から補間します。したがって、フェードイン/アウトフィルタの最初のセットは、5秒前と30秒後にアルファをゼロにしました。 2番目のフェードインフィルタは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