Ffmpeg kullanarak birden fazla resim göster


1

Arka plan görüntüsü olan görüntülerden bir video slayt gösterisi hazırladım videonun sol alt köşesine başka bir resim eklemek için.

enter image description here Sol altta -i "C: /test/logo.png" gösterisini nasıl yapabilirim.

Bu aşağıdaki ffmpeg komutu.

    runtime = createObject("java", "java.lang.Runtime").getRuntime();
    command = '#ffmpegPath#' &
    ' -loop 1' &
    ' -framerate 1' &
    ' -i "C:/test/bg.jpg"' & 
    ' -framerate 1/5' &
    ' -i "C:/test/%03d.jpg"' & 
    ' -i "C:/test/logo.png"' & 
    ' -i "C:/test/music.mp3"' &
    ' -filter_complex' &
        ' "[1:v]drawbox=t=5:c=white[fg];[0:v][fg]overlay=(W-w)/2:(H-h)/2:shortest=1,' & 
        ' drawtext="fontsize=50:fontfile=/Windows/Fonts/arial.ttf:fontcolor=White:text=Eterni-T:x=(w-text_w)/2:y=40",' & 
        ' drawtext="fontsize=50:fontfile=/Windows/Fonts/arial.ttf:fontcolor=White:text="Laurence Collard (Simard) 1925-1999":x=w-text_w-10:y=h-text_h-10",' &
        ' drawbox=x=0:y=10:w=5000:h=100:color=black@0.5:t=50[bg];' &
        ' [bg][2:v]overlay=10:H-h-10,' &
        ' format=yuv420p[v]"' &
        ' -map "[v]"' &
    ' -c:v libx264' &
    ' -c:a aac -strict experimental' &
    ' -b:a 192k' &
    ' -r 30' &
    ' -movflags +faststart' &
    ' -shortest' &
    ' "C:/test/out.mp4"';

Log:

ffmpeg version N-69587-g15a8846 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      54. 18.100 / 54. 18.100
  libavcodec     56. 21.102 / 56. 21.102
  libavformat    56. 19.100 / 56. 19.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5.  9.103 /  5.  9.103
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, image2, from 'C:/test/bg.jpg':
  Duration: 00:00:01.00, start: 0.000000, bitrate: 1900 kb/s
    Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1920x1360 [SAR 1:1 DAR 24:17], 1 fps, 1 tbr, 1 tbn, 1 tbc
Input #1, image2, from 'C:/test/%03d.jpg':
  Duration: 00:00:15.00, start: 0.000000, bitrate: N/A
    Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 540x800, 0.20 fps, 0.20 tbr, 0.20 tbn, 0.20 tbc
Input #2, png_pipe, from 'C:/test/logo.png':
  Duration: N/A, bitrate: N/A
    Stream #2:0: Video: png, rgba, 453x209, 25 tbr, 25 tbn, 25 tbc
[mp3 @ 0000000005039ee0] Estimating duration from bitrate, this may be inaccurate
Input #3, mp3, from 'C:/test/music.mp3':
  Duration: 00:02:18.40, start: 0.000000, bitrate: 224 kb/s
    Stream #3:0: Audio: mp3, 44100 Hz, stereo, s16p, 224 kb/s
Codec AVOption b (set bitrate (in bits/s)) specified for output file #0 (C:/test/out.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[swscaler @ 00000000049c9000] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 00000000049dbac0] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0000000004b386a0] using SAR=1/1
[libx264 @ 0000000004b386a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0000000004b386a0] profile High, level 5.0
[libx264 @ 0000000004b386a0] 264 - core 144 r2525 40bb568 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'C:/test/out.mp4':
  Metadata:
    encoder         : Lavf56.19.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1920x1360 [SAR 1:1 DAR 24:17], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    Metadata:
      encoder         : Lavc56.21.102 libx264
Stream mapping:
  Stream #0:0 (mjpeg) -> overlay:main
  Stream #1:0 (mjpeg) -> drawbox
  Stream #2:0 (png) -> overlay:overlay
  format -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
Input stream #1:0 frame changed from size:540x800 fmt:yuvj444p to size:1115x672 fmt:yuvj444p
[swscaler @ 0000000004bb3e20] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0000000004b1d640] deprecated pixel format used, make sure you did set range correctly
frame=  120 fps=0.0 q=29.0 size=     366kB time=00:00:02.06 bitrate=1450.0kbits/s dup=117 drop=0    
frame=  150 fps= 98 q=29.0 size=     369kB time=00:00:03.06 bitrate= 984.5kbits/s dup=146 drop=0    
frame=  180 fps= 74 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
Input stream #1:0 frame changed from size:1115x672 fmt:yuvj444p to size:1000x607 fmt:yuvj444p
[swscaler @ 0000000004bb3e20] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0000000006990ee0] deprecated pixel format used, make sure you did set range correctly
frame=  120 fps=0.0 q=29.0 size=     366kB time=00:00:02.06 bitrate=1450.0kbits/s dup=117 drop=0    
frame=  150 fps=100 q=29.0 size=     369kB time=00:00:03.06 bitrate= 984.5kbits/s dup=146 drop=0    
frame=  180 fps= 75 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
Input stream #1:0 frame changed from size:1115x672 fmt:yuvj444p to size:1000x607 fmt:yuvj444p
[swscaler @ 00000000050dc160] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0000000004c8ae80] deprecated pixel format used, make sure you did set range correctly
frame=  180 fps= 62 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 53 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 46 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 41 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 37 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 33 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 30 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 28 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 26 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 24 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 23 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 21 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 20 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 19 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 18 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 17 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    
frame=  180 fps= 17 q=29.0 size=     371kB time=00:00:04.06 bitrate= 747.9kbits/s dup=175 drop=0    

Yanıtlar:


2

Sadece başka bir kaplama filtresi eklemeniz gerekir. Yeni kaplama filtresi, önceki kaplamadan gelen çıkışı, logo görüntüsü ile birlikte bir girdi olarak kullanacaktır.

-loop 1 \
-framerate 1 \
-i logo.png \
…
-filter_complex \
"[1:v]drawbox=t=5:c=white[fg]; \
 [0:v][fg]overlay=(W-w)/2:(H-h)/2:shortest=1,drawtext=…,drawtext=…,drawbox=…[bg]; \
 [bg][2:v]overlay=10:H-h-10:shortest=1,format=yuv420p[v]" \
-map "[v]" \
-map 3:a \
  • Her filtre için bazı seçeneklerin yerini aldım. böylece görselleştirebilirsiniz filtergraph Daha kolay.

  • Bu örnek, logo görüntüsü dosyasının olduğu varsayılmaktadır. [2:v]; üçüncü video girişi ( ffmpeg 0'dan saymaya başlar). Ayrıca logo dosya döngüsünü yaptım ya da girdileriniz nitelikleri değiştirirse (kare boyutu, piksel formatı, vb.) İkinci kaplama süresiz olarak kodlanabilir.

  • shortest=1 ikinci bindirmeye dahil edilmedi çünkü logo görüntünüz döngü olarak ayarlanmadı, ama yine de işe yarayacağını düşünüyorum.

  • Kullanma eğilimindeyim format=yuv420p son olarak ilk kaplamadan kaldırdım ve filtre grafiğinin sonuna koydum. Alternatif olarak kaldırabilirsiniz format=yuv420p tamamen ve kullanmak -pix_fmt yuv420p filtre grafiğinin dışında bir seçenek, ancak kullanmayı seviyorum format Bunun yerine filtreleme yaparken daha fazla kontrolüm var.


Yayınımı yaptığınız değişikliklerle güncelleştirdim. Ancak aşağıdaki hata iletisini alıyorum (gönderiye bakın)
Yannick

1
@Yannick İkinci filtre zincirinizde çıkış etiketi yok. Eklemelisin [bg] (veya hangi keyfi etiketi tercih ederseniz) sonuna kadar: color=black@0.5:t=50[bg];
llogan

Teşekkürler ... Ama şimdi aşağıdaki hata iletisini alıyorum (güncellenmiş gönderiye bakın)
Yannick

@Yannick Bu uyarıyı görmezden gelebilirsiniz, ancak diğer mesajlar girdi resimlerinizin kare boyutlarını değiştirdiğini gösteriyor gibi görünüyor. Sonuçların nasıl görüneceğinden emin değilim. Ayrıca, tam metin çıktısı ekran görüntülerinden çok daha faydalıdır.
llogan

Ekran görüntüsü için özür dilerim. Asıl mesele hiç bitmemesi. Süreci öldürmem gerekiyor. 371kb'de dur.
Yannick
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.