Newest 'ffmpeg' Questions - Stack Overflow

http://stackoverflow.com/questions/tagged/ffmpeg

Les articles publiés sur le site

  • Making a video (.mp4) using every Nth numbering plotted images (.png) with ffmpeg

    3 avril 2019, par vanessa

    I have images file in format starting with number 10000 with every 500 step as shown here "Qen_10000.png, Qen_10500.png, Qen_11000.png, Qen_11500.png..." until Qen_80500.png

    I want to combine them and make a video .mp4

    I've tried ffmpeg -r 5 -i Qen_%1d000.png video.mp4 and some other combination, but only every 10000 of the numbering.

    I also tried ffmpeg -start_number 10000.... but it showed unrecognized option.

    /usr/bin/ffmpeg -start_number 10000 -r 1 -i   Qen_distribution_*.png  video.mp4
        FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
          built on Jan 29 2012 23:55:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
          configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
          libavutil     50.15. 1 / 50.15. 1
          libavcodec    52.72. 2 / 52.72. 2
          libavformat   52.64. 2 / 52.64. 2
          libavdevice   52. 2. 0 / 52. 2. 0
          libavfilter    1.19. 0 /  1.19. 0
          libswscale     0.11. 0 /  0.11. 0
          libpostproc   51. 2. 0 / 51. 2. 0
    Unrecognized option 'start_number'
    

    Please suggest some options. Thank you.

  • need help on solving my ffmpeg command line

    3 avril 2019, par DRMTV

    i create a small bash script to encode 1080p video , the video will be added with watermark at bottom left and i need to add a black padding on top and bottom

    i tried several way but still no luck , i tried -vf and yes it worked but cant use padding and watermark together , and suggest use filter_complex

    if i use this code directly without bash script it work

    time ffmpeg -hide_banner -i transformers.mp4 -i transformers.ass -loop 1 -i watermark.png -loop 1 -i logo.png -map 0:0 -map 0:1 -filter_complex "[0:0]scale=(iw*sar)*min(1920/(iw*sar)\,800/ih):ih*min(1920/(iw*sar)\,800/ih), pad=1920:800:(1920-iw*min(1920/iw\,800/ih))/2:(800-ih*min(1920/iw\,800/ih))/2;ass=transformers.ass[FID1];[FID1][2:v]overlay=10:${WATERMARKPOSITION}:repeatlast=0:enable='between(t,300,600)'[FID3];[3:v]fade=in:st=1200:d=1.6:alpha=1,fade=out:st=107998:d=1.6:alpha=1[FID6];[FID3][FID6]overlay=10:5:repeatlast=0:enable='between(t,1200,187922)'" -c:v libx264 -minrate 1800k -maxrate 1800k -bufsize 3600k -profile:v high -c:a aac -b:a 128k -profile:a aac_main -movflags faststart -strict -2 -f mp4 -y "transformers.mp4"
    

    but when i include it with my bash script i got this error ,

    [libx264 @ 0x2a063e0] height not divisible by 2 (300x39)
    Output #0, mp4, to '/movie/Paddy/output/Transformers.Age.of.Extinction.2014.1080p.BluRay.H264.AAC-RARBG.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        comment         : Transformers.Age.of.Extinction.2014.1080p.BluRay.H264.AAC-RARBG
        encoder         : Lavf57.71.100
        title           : Transformers Age of Extinction 2014 1080p BluRay H264 AAC-RARBG - Visit us @ Juraganfilm.COM
        Stream #0:0: Video: h264 (libx264), yuv420p, 1920x800 [SAR 1:1 DAR 12:5], q=-1--1, max. 2300 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc
        Metadata:
          encoder         : Lavc56.60.100 libx264
        Stream #0:1: Video: h264, none, q=2-31, 128 kb/s, SAR 1:1 DAR 0:0, 25 fps
        Metadata:
          encoder         : Lavc56.60.100 libx264
        Stream #0:2(eng): Audio: aac, 0 channels, 128 kb/s (default)
        Metadata:
          creation_time   : 2017-12-19 07:58:39
          handler_name    : SoundHandler
          encoder         : Lavc56.60.100 aac
    Stream mapping:
      Stream #0:0 (h264) -> scale (graph 0)
      Stream #0:0 (h264) -> overlay:overlay (graph 0)
      Stream #2:0 (png) -> ass (graph 0)
      Stream #3:0 (png) -> fade (graph 0)
      pad (graph 0) -> Stream #0:0 (libx264)
      overlay (graph 0) -> Stream #0:1 (libx264)
      Stream #0:1 -> #0:2 (aac (native) -> aac (native))
    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    

    and below is the script i have been working on

    output="/movie/output"
    
    FILESDIR=`find $PWD -type f -regex ".*\.\(mp4\|mkv\|avi\)" | sed 's@.*/@@' | sort -n`
    for video in $FILESDIR
    do
    
    MOVIETITLE=${video%.*}
    INFOVID=${MOVIETITLE//./ }
    BITRATE="${HEIGHT}"
    WIDTH=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 ${video} 2>&1 | sed -e 's|\[.*||g' | sed ':a;N;$!ba;s/\n//g' | sed -e 's|x.*||g')
    HEIGHT=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 ${video} | sed -e 's/.*x//')
    WATERMARKPOSITION=$(expr $HEIGHT - 50)
    VIDEOMAP=$(ffmpeg -i $video 2>&1 | grep "Stream #" | grep Video | sed -e "s|.*\#||g" | sed -e "s|: Video.*||g" | sed -e "s|(.*||g")
    AUDIOMAP=$(ffmpeg -i $video 2>&1 | grep "Stream #" | grep Audio | sed -e "s|.*\#||g" | sed -e "s|: Audio.*||g" | sed -e "s|(.*||g")
    MAXRATE=$(expr $BITRATE + 500)
    BUFFSIZE=$(expr $MAXRATE \* 2)
    
    time ffmpeg -hide_banner -i $video -i $MOVIETITLE.ass -loop 1 -i $WATERMARK -loop 1 -i $LOGO -map ${VIDEOMAP} -map ${AUDIOMAP} -filter_complex "[${VIDEOMAP}]scale=(iw*sar)*min(${WIDTH}/(iw*sar)\,${HEIGHT}/ih):ih*min(${WIDTH}/(iw*sar)\,${HEIGHT}/ih), pad=${WIDTH}:${HEIGHT}:(${WIDTH}-iw*min(${WIDTH}/iw\,${HEIGHT}/ih))/2:(${HEIGHT}-ih*min(${WIDTH}/iw\,${HEIGHT}/ih))/2;ass=$MOVIETITLE.ass[FID1];[FID1][2:v]overlay=10:${WATERMARKPOSITION}:repeatlast=0:enable='between(t,300,600)'[FID3];[3:v]fade=in:st=1200:d=1.6:alpha=1,fade=out:st=107998:d=1.6:alpha=1[FID6];[FID3][FID6]overlay=10:5:repeatlast=0:enable='between(t,1200,187922)'" -c:v libx264 -minrate ${BITRATE}k -maxrate ${MAXRATE}k -bufsize ${BUFFSIZE}k -profile:v high -c:a aac -b:a 128k -profile:a aac_main -movflags faststart -strict -2 -f mp4 -y "${output}/$MOVIETITLE.mp4"
    done
    

    has been working all day and still i cant make it to work.

    can someone guide me which part is wrong ?

  • Stacking different length videos not working with ffmpeg and -itsoffset

    3 avril 2019, par Lucas Madalozzo

    I developed a video conferencing app that records the video streams separately, and I am now looking for a way to merge them. At the moment I am experimenting with -itsoffset and hstack to stack 2 videos side by side using this command:

    ffmpeg \
    -itsoffset 17 -i smaller.mp4 \
    -itsoffset 0 -i bigger.mp4 \
    -filter_complex hstack=inputs=2 \
    -c:v libx264 -crf 23 out.mp4
    

    The result is a side by side video where both streams remain frozen for 17 seconds then start playing, even the bigger.mp4 video that should start at time 0.

    Any help would be really appreciated!

    ffmpeg verbose:

    ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
      built with gcc 4.9.2 (Debian 4.9.2-10+deb8u1)
      configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libspeex --enab                                                                                                                                       le-shared --enable-pthreads --enable-libopenjpeg --enable-nonfree --enable-libopus --enable-libvorbis --enable-libvpx
      libavutil      56. 22.100 / 56. 22.100
      libavcodec     58. 35.100 / 58. 35.100
      libavformat    58. 20.100 / 58. 20.100
      libavdevice    58.  5.100 / 58.  5.100
      libavfilter     7. 40.101 /  7. 40.101
      libswscale      5.  3.100 /  5.  3.100
      libswresample   3.  3.100 /  3.  3.100
      libpostproc    55.  3.100 / 55.  3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'smaller.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf58.20.100
      Duration: 00:00:05.16, start: 0.000000, bitrate: 444 kb/s
        Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 330 kb/s, 32 fps, 32 tbr, 16384 tbn, 64 tbc (default)
        Metadata:
          handler_name    : VideoHandler
        Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 103 kb/s (default)
        Metadata:
          handler_name    : SoundHandler
    Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'bigger.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf56.36.100
      Duration: 00:00:22.03, start: 0.000000, bitrate: 290 kb/s
        Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 177 kb/s, 32 fps, 32 tbr, 16384 tbn, 64 tbc (default)
        Metadata:
          handler_name    : VideoHandler
        Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 103 kb/s (default)
        Metadata:
          handler_name    : SoundHandler
    File 'out.mp4' already exists. Overwrite ? [y/N] y
    Stream mapping:
      Stream #0:0 (h264) -> hstack:input0 (graph 0)
      Stream #1:0 (h264) -> hstack:input1 (graph 0)
      hstack (graph 0) -> Stream #0:0 (libx264)
      Stream #0:1 -> #0:1 (aac (native) -> aac (native))
    Press [q] to stop, [?] for help
    [libx264 @ 0x206ed00] using SAR=1/1
    [libx264 @ 0x206ed00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x206ed00] profile High, level 3.1
    [libx264 @ 0x206ed00] 264 - core 146 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - 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=3 lookahead_threads=1 sliced_thre                                                                                                                                       ads=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 scene                                                                                                                                       cut=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 'out.mp4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1mp41
        encoder         : Lavf58.20.100
        Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 960x360 [SAR 1:1 DAR 8:3], q=-1--1, 32 fps, 16384 tbn, 32 tbc (default)
        Metadata:
          encoder         : Lavc58.35.100 libx264
        Side data:
          cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
        Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
        Metadata:
          handler_name    : SoundHandler
          encoder         : Lavc58.35.100 aac
    frame=  709 fps=130 q=-1.0 Lsize=     573kB time=00:00:22.12 bitrate= 212.2kbits/s dup=544 drop=0 speed=4.05x
    video:478kB audio:81kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.445685%
    [libx264 @ 0x206ed00] frame I:3     Avg QP:16.86  size: 38355
    [libx264 @ 0x206ed00] frame P:190   Avg QP:18.22  size:  1633
    [libx264 @ 0x206ed00] frame B:516   Avg QP:16.23  size:   123
    [libx264 @ 0x206ed00] consecutive B-frames:  1.3%  2.8%  6.8% 89.1%
    [libx264 @ 0x206ed00] mb I  I16..4:  6.6% 54.8% 38.6%
    [libx264 @ 0x206ed00] mb P  I16..4:  0.4%  1.5%  0.2%  P16..4:  8.7%  4.0%  1.9%  0.0%  0.0%    skip:83.3%
    [libx264 @ 0x206ed00] mb B  I16..4:  0.0%  0.1%  0.0%  B16..8:  4.2%  0.3%  0.0%  direct: 0.0%  skip:95.4%  L0:37.2% L1:58.9% BI: 4.0%
    [libx264 @ 0x206ed00] 8x8 transform intra:66.2% inter:63.4%
    [libx264 @ 0x206ed00] coded y,uvDC,uvAC intra: 66.1% 65.6% 21.6% inter: 1.7% 1.1% 0.0%
    [libx264 @ 0x206ed00] i16 v,h,dc,p: 21% 26% 11% 42%
    [libx264 @ 0x206ed00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 23% 13%  5%  7%  8%  7%  7%  6%
    [libx264 @ 0x206ed00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 24%  9%  6%  7%  7%  6%  7%  7%
    [libx264 @ 0x206ed00] i8c dc,h,v,p: 46% 25% 20%  9%
    [libx264 @ 0x206ed00] Weighted P-Frames: Y:1.1% UV:0.0%
    [libx264 @ 0x206ed00] ref P L0: 66.0% 19.4% 12.0%  2.6%  0.0%
    [libx264 @ 0x206ed00] ref B L0: 87.2% 11.8%  1.0%
    [libx264 @ 0x206ed00] ref B L1: 95.2%  4.8%
    [libx264 @ 0x206ed00] kb/s:176.52
    [aac @ 0x204aa00] Qavg: 247.398
    
    
  • use of ffmpeg select filter

    3 avril 2019, par user651177

    I am stuck with the use of ffmpeg select filter as I want to pick up only the ending frame of a input video but I cannot figure out the selection expression for the filter to get the work done, my code looks like this:

    ffmpeg -i in.mp4  -filter_complex  "select=expr_selecting_lastest_frame, overlay=overlay_expr"  out.jpg
    

    now how do I coding the expr_selecting_lastest_frame ? do you guys have ideas ? is there any other way to get the work done ? please help, thank you !

  • using ffmpeg scale filter , how to scale a sequence of images with dynamic sizes

    3 avril 2019, par user651177

    as the title asked , I am looking for a method that scales a sequence of images with dynamic sizes , say i have a video stream containing tens or hundreds frames , I want to scale these frames in increasing or decreasing sizes , for example size of frame-1 is 1.25 times of size of frame-0, and size of frame-2 is 1.25 times of size of frame-1, and so on , but the scale filter seems to have no a frame-n parameter in the scaling expression , how can i do this ,

    please help