[FFmpeg-trac] #6479(undetermined:new): Concat filter uses duration of longer stream for the last segment

FFmpeg trac at avcodec.org
Thu Jun 22 10:53:58 EEST 2017


#6479: Concat filter uses duration of longer stream for the last segment
-------------------------------------+-------------------------------------
             Reporter:  Gyan         |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 The doc for concat filter says, ''The concat filter will use the duration
 of the longest stream in each segment (except the last one), and if
 necessary pad shorter audio streams with silence''. Thus implying that the
 duration of the shorter stream is used for the last segment. But that
 doesn't seem to be the case.

 ----

 Generate sources

 {{{
 ffmpeg -f lavfi -i color=yellow:d=1 -f lavfi -i sine=d=1 a.mp4
 }}}

 {{{
 ffmpeg -f lavfi -i color=orange:d=12 b.mp4
 }}}

 {{{
 ffmpeg -i AnyExistingAudio.m4a -t 5 b.mp3
 }}}

 ----

 Concat

 {{{
 ffmpeg -i a.mp4 -i b.mp4 -f lavfi -i amovie=b.mp3:loop=3,asetpts=N/SR/TB
 -filter_complex [0:v][0:a][1:v][2:a]concat=n=2:v=1:a=1[v][a] -map [v] -map
 [a] concat.mp4
 }}}

 Result is

 {{{
 Duration: 00:00:16.17, start: 0.000000, bitrate: 79 kb/s
 }}}

 It should be 13 seconds --> 1 second of a + 12 seconds of b.mp4 (shorter
 than 3 loops of 5-second b.mp3).

 Log:

 {{{
 ffmpeg version N-86504-gc557718bea Copyright (c) 2000-2017 the FFmpeg
 developers
   built with gcc 6.3.0 (Rev3, Built by MSYS2 project)
   configuration:  --enable-avisynth --enable-libmp3lame --enable-libopus
 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
 --enable-cuda --enable-cuvid --enable-schannel --enable-decklink --enable-
 fontconfig --enable-frei0r --enable-libass --enable-libbluray --enable-
 libbs2b --enable-libcaca --enable-libfreetype --enable-libfribidi
 --enable-libgme --enable-libgsm --enable-libilbc --enable-libmfx --enable-
 libmodplug --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-
 libopenjpeg --enable-librtmp --enable-libsoxr --enable-libspeex --enable-
 libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc
 --enable-libwavpack --enable-libwebp --enable-libxavs --enable-libxvid
 --enable-libzimg --enable-openssl --enable-libsnappy --enable-gpl
 --enable-opencl --enable-opengl --enable-libcdio --enable-libfdk-aac
 --enable-libkvazaar --enable-librubberband --enable-libssh --enable-
 libtesseract --enable-libzvbi --enable-chromaprint --enable-libopenh264
 --enable-libopenmpt --enable-libzmq --enable-libmysofa --extra-
 cflags=-fopenmp --extra-libs=-lgomp --extra-cflags=-DLIBTWOLAME_STATIC
 --extra-libs=-lstdc++ --extra-cflags=-DLIBSSH_STATIC --extra-ldflags='-Wl
 ,--allow-multiple-definition' --extra-cflags=-DCACA_STATIC --extra-
 cflags=-DMODPLUG_STATIC --extra-cflags=-DCHROMAPRINT_NODLL --extra-
 libs=-lstdc++ --extra-cflags=-DZMQ_STATIC --extra-libs=-lpng --disable-
 w32threads --extra-cflags=-DPTW32_STATIC_LIB --extra-libs=-lpthread
 --extra-libs=-lwsock32 --extra-cflags=-DKVZ_STATIC_LIB --enable-version3
 --enable-nonfree --enable-filter=frei0r --disable-debug
   libavutil      55. 66.100 / 55. 66.100
   libavcodec     57. 99.100 / 57. 99.100
   libavformat    57. 73.100 / 57. 73.100
   libavdevice    57.  7.100 / 57.  7.100
   libavfilter     6. 92.100 /  6. 92.100
   libswscale      4.  7.101 /  4.  7.101
   libswresample   2.  8.100 /  2.  8.100
   libpostproc    54.  6.100 / 54.  6.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf57.73.100
   Duration: 00:00:01.02, start: 0.000000, bitrate: 96 kb/s
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 320x240 [SAR 1:1 DAR 4:3], 9 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
 (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono,
 fltp, 70 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
 Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'b.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf57.73.100
   Duration: 00:00:12.00, start: 0.000000, bitrate: 6 kb/s
     Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 320x240 [SAR 1:1 DAR 4:3], 3 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
 (default)
     Metadata:
       handler_name    : VideoHandler
 Input #2, lavfi, from 'amovie=b.mp3:loop=3,asetpts=N/SR/TB':
   Duration: N/A, start: 0.000000, bitrate: 768 kb/s
     Stream #2:0: Audio: pcm_s16le, 48000 Hz, mono, s16, 768 kb/s
 Stream mapping:
   Stream #0:0 (h264) -> concat:in0:v0
   Stream #0:1 (aac) -> concat:in0:a0
   Stream #1:0 (h264) -> concat:in1:v0
   Stream #2:0 (pcm_s16le) -> concat:in1:a0
   concat:out:v0 -> Stream #0:0 (libx264)
   concat:out:a0 -> Stream #0:1 (aac)
 Press [q] to stop, [?] for help
 [libx264 @ 00000000029f2580] using SAR=1/1
 [libx264 @ 00000000029f2580] using cpu capabilities: MMX2 SSE2Fast SSSE3
 SSE4.2 AVX FMA3 BMI2 AVX2
 [libx264 @ 00000000029f2580] profile High, level 1.3
 [libx264 @ 00000000029f2580] 264 - core 150 r2833 df79067 - H.264/MPEG-4
 AVC codec - Copyleft 2003-2017 - 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=6
 lookahead_threads=1 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 'concat.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf57.73.100
     Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021),
 yuv420p(progressive), 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 25 fps, 12800
 tbn, 25 tbc (default)
     Metadata:
       encoder         : Lavc57.99.100 libx264
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
     Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, mono,
 fltp, 69 kb/s (default)
     Metadata:
       encoder         : Lavc57.99.100 aac
 frame=  326 fps=0.0 q=-1.0 Lsize=     157kB time=00:00:16.16 bitrate=
 79.7kbits/s dup=1 drop=0 speed=41.9x
 video:6kB audio:139kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 8.640960%
 [libx264 @ 00000000029f2580] frame I:3     Avg QP: 7.00  size:    70
 [libx264 @ 00000000029f2580] frame P:82    Avg QP: 9.23  size:    23
 [libx264 @ 00000000029f2580] frame B:241   Avg QP:12.67  size:    15
 [libx264 @ 00000000029f2580] consecutive B-frames:  1.2%  0.6%  0.0% 98.2%
 [libx264 @ 00000000029f2580] mb I  I16..4: 100.0%  0.0%  0.0%
 [libx264 @ 00000000029f2580] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:
 0.0%  0.0%  0.0%  0.0%  0.0%    skip:100.0%
 [libx264 @ 00000000029f2580] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:
 0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%
 [libx264 @ 00000000029f2580] 8x8 transform intra:0.0%
 [libx264 @ 00000000029f2580] coded y,uvDC,uvAC intra: 0.0% 0.3% 0.0%
 inter: 0.0% 0.0% 0.0%
 [libx264 @ 00000000029f2580] i16 v,h,dc,p: 93%  0%  7%  0%
 [libx264 @ 00000000029f2580] i8c dc,h,v,p: 100%  0%  0%  0%
 [libx264 @ 00000000029f2580] Weighted P-Frames: Y:0.0% UV:0.0%
 [libx264 @ 00000000029f2580] kb/s:3.44
 [aac @ 00000000029f33e0] Qavg: 199.850\
 }}}

 If this isn't a bug, I'll send a patch to amend the documentation.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6479>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list