Aşağıdaki kodda, her resme çeşitli filtreler ekliyorum.
Sorunu göstermek için, kaldırdım drawbox filtrelemek [2:v].
İşte aşağıdaki koddan video: http://128.199.50.223/videos/super_user_test_10_temp.mp4
Bir sonraki görüntünün kaybolmasından önce ilk geçişin siyaha döndüğünü fark edeceksiniz. Sonra ikinci geçiş (görüntü 2'den görüntü 3'e) geçiyor. Ancak, eklerseniz drawbox geri filtre [2:v] siyaha kesti ve tıpkı birincisi gibi ikinci geçişi solmaya başladı.
Yani sorumun iki bölümü var:
- Çeki kutusu neden çapraz geçişi kırıyor ve solmadan önce siyahın kesilmesine neden oluyor?
- İkinci geçişde görülen crossfade efektini tutarken, metnin arkasındaki saydam kutuyu nasıl alabilirim?
İşte Kod:
ffmpeg \
-i images/25_test/31630738_0.jpg \
-i images/25_test/31630738_4.jpg \
-i images/25_test/31630738_6.jpg \
-i images/25_test/31630738_8.jpg \
-filter_complex \
"[0:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=500:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Front':fontcolor=white:fontsize=24:x=20:y=16, \
fifo \
[zoom_0]; \
[1:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Kitchen':fontcolor=white:fontsize=24:x=20:y=16, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+5/TB, \
fifo \
[zoom_1]; \
[2:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Entrance':fontcolor=white:fontsize=24:x=20:y=16, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+10/TB, \
fifo \
[zoom_2]; \
[3:v]format=yuva420p, \
scale=iw*10:ih*10, \
zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
drawtext='fontfile=fonts/OpenSans-Bold.ttf':text='Pool':fontcolor=white:fontsize=24:x=20:y=16, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+15/TB, \
fifo \
[zoom_3]; \
[zoom_0][zoom_1]overlay=0:0:enable='between(t,5,15)'[overlay_0_1]; \
[overlay_0_1][zoom_2]overlay=0:0:enable='between(t,10,20)'[overlay_1_2]; \
[overlay_1_2][zoom_3]overlay=0:0:enable='between(t,15,25)' \
" videos/out.mp4
Aşağıda hala sorunu gösteren basitleştirilmiş bir versiyon var.
Kodu test etmek için, 640x480 görüntülerini girin.
Kesimi göreceksin, sonra solmaya başlayacaksın.
Ardından drawbox filtreleri ve göründüğü gibi crossfade göreceksiniz.
ffmpeg \
-loop 1 -t 10 -i images/25_test/31630738_0.jpg \
-loop 1 -t 10 -i images/25_test/31630738_4.jpg \
-filter_complex \
"[0:v]format=yuva420p, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max \
[zoom_0]; \
[1:v]format=yuva420p, \
drawbox=y=0:color=black@0.6:width=iw:height=48:t=max, \
fade=t=in:st=0:d=1:alpha=1, \
setpts=PTS+5/TB \
[zoom_1]; \
[zoom_0][zoom_1]overlay=0:0:enable='between(t,5,15)' \
" out.mp4
Daha fazla bilgiye ihtiyacınız olursa haberim olsun.
Teşekkürler!
ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.9.2 (Debian 4.9.2-10) Hangi sürümü kullanıyorsun?