Opened 8 years ago
Closed 3 years ago
#6479 closed defect (needs_more_info)
Concat filter uses duration of longer stream for the last segment
Reported by: | Gyan | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | unspecified | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
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.
Note:
See TracTickets
for help on using tickets.