I am trying to perform a complex filter to merge two videos one after the other. The output video appears to have black frames in it where the input videos do not (at the end of the first and second video). The FFmpeg command and output is:
ffmpeg -y -i input1.mp4 -i input2.mp4 -f lavfi -i color=black:s=1920x1080:d=6.0 -filter_complex "[1:v]setpts=expr=PTS-STARTPTS+3.0/TB[v1]; [2:v][0:v]overlay=eof_action=pass[over1]; [over1][v1]overlay=eof_action=pass[over2]" -vcodec libx264 -map [over2] output.mp4 ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.2.1 (Alpine 6.2.1) 20160822 configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input1.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.61.100 Duration: 00:00:03.09, start: 0.000000, bitrate: 302 kb/s Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 269 kb/s, 2 fps, 2 tbr, 16384 tbn, 4 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 35 kb/s (default) Metadata: handler_name : SoundHandler Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.61.100 Duration: 00:00:03.09, start: 0.000000, bitrate: 466 kb/s Stream #1:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 438 kb/s, 2 fps, 2 tbr, 16384 tbn, 4 tbc (default) Metadata: handler_name : VideoHandler Stream #1:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 35 kb/s (default) Metadata: handler_name : SoundHandler Input #2, lavfi, from 'color=black:s=1920x1080:d=6.0': Duration: N/A, start: 0.000000, bitrate: N/A Stream #2:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 (h264) -> overlay:overlay Stream #1:0 (h264) -> setpts Stream #2:0 (rawvideo) -> overlay:main overlay -> Stream #0:0 (libx264) Press [q] to stop, [?] for help [libx264 @ 0x55e7ab444da0] using SAR=1/1 [libx264 @ 0x55e7ab444da0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2 [libx264 @ 0x55e7ab444da0] profile High, level 4.0 [libx264 @ 0x55e7ab444da0] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - 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 'output.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.83.100 Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default) Metadata: encoder : Lavc57.107.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 [Parsed_color_0 @ 0x55e7ab540820] EOF timestamp not reliablebitrate= 708.6kbits/s speed=1.46x frame= 150 fps= 60 q=-1.0 Lsize= 410kB time=00:00:05.88 bitrate= 571.0kbits/s speed=2.35x video:407kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.637398% [libx264 @ 0x55e7ab444da0] frame I:2 Avg QP:13.72 size:190245 [libx264 @ 0x55e7ab444da0] frame P:38 Avg QP:15.10 size: 572 [libx264 @ 0x55e7ab444da0] frame B:110 Avg QP:14.82 size: 128 [libx264 @ 0x55e7ab444da0] consecutive B-frames: 1.3% 2.7% 0.0% 96.0% [libx264 @ 0x55e7ab444da0] mb I I16..4: 21.7% 44.7% 33.5% [libx264 @ 0x55e7ab444da0] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 1.7% 0.1% 0.2% 0.0% 0.0% skip:97.9% [libx264 @ 0x55e7ab444da0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.9% 0.0% 0.0% direct: 0.0% skip:99.1% L0:21.8% L1:78.2% BI: 0.0% [libx264 @ 0x55e7ab444da0] 8x8 transform intra:44.6% inter:67.8% [libx264 @ 0x55e7ab444da0] coded y,uvDC,uvAC intra: 66.7% 53.0% 31.6% inter: 0.1% 0.3% 0.0% [libx264 @ 0x55e7ab444da0] i16 v,h,dc,p: 36% 10% 29% 25% [libx264 @ 0x55e7ab444da0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 11% 40% 3% 2% 3% 2% 7% 5% [libx264 @ 0x55e7ab444da0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 14% 15% 7% 5% 6% 4% 13% 6% [libx264 @ 0x55e7ab444da0] i8c dc,h,v,p: 57% 19% 17% 8% [libx264 @ 0x55e7ab444da0] Weighted P-Frames: Y:5.3% UV:5.3% [libx264 @ 0x55e7ab444da0] ref P L0: 93.0% 0.8% 5.4% 0.8% [libx264 @ 0x55e7ab444da0] ref B L0: 57.8% 42.1% 0.1% [libx264 @ 0x55e7ab444da0] ref B L1: 93.5% 6.5% [libx264 @ 0x55e7ab444da0] kb/s:555.11 I understand there are easier ways to concatenate two videos, but this is a simplification of a more complicated command. The two input files are here: input1.mp4 <http://www.ffmpeg-archive.org/file/t377720/input1.mp4> input2.mp4 <http://www.ffmpeg-archive.org/file/t377720/input2.mp4> I made the input files using Android MediaCodec, so I suspect there may be some issue with the timings of frames or something. FFmpeg does not output any warnings though. Can anyone help me find out why these black frames are appearing? -- Sent from: http://www.ffmpeg-archive.org/ _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".