FFmpeg Çizim kutusu filtresi neden çapraz geçişi bozuyor ve istenen sonucu nasıl elde edebilirim?


0

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:

  1. Çeki kutusu neden çapraz geçişi kırıyor ve solmadan önce siyahın kesilmesine neden oluyor?
  2. İ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!


1
Burada iyi çalışıyor. Arada siyah yok. Ffmpeg'ini yükseltin. Geçtiğimiz yılın Eylül / Ekim aylarında tespit edilen yarı saydam yüzeylerin üzerine çizilen metne ilişkin bir hata vardı. Bunun bununla ilgili olduğundan şüpheleniyorum.
Gyan

@Mulvya Gönderdiğim videoda 1. ve 2. geçiş arasındaki farkı görüyor musunuz? İkinci geçişe benziyor mu? Kullanıyoruz 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?
Justin Waulters

Evet, normal crossfades alıyorum. Geçen pazartesiden bir git sürümünü kullanarak.
Gyan

@ Mulvya, indirdiğiniz git sürümüne bir bağlantı gönderir misiniz?
Justin Waulters

Derledim ama bir tane alabilirsin ffmpeg.zeranoe.com/builds 3.2.4 yapımı için gitme.
Gyan

Yanıtlar:


1

Komutun olduğu gibi gayet iyi. Çizim metni filtresinde, (yarı) saydam bir yüzeyin üzerine metin çizemediği için bir hata vardı. Yapabilirsin, ama alfa uçağı opak hale getirildi. Bu hata Eylül 2016'da düzeltildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.