#2806 closed defect (fixed)
Overlay filter with "shortest=1" drops last frame
Reported by: | hansmi | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avfilter |
Version: | git-master | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description (last modified by )
Summary of the bug:
Encoding a video using "overlay=shortest=1" in the filter chain will lead to the last frame being dropped.
Using FFmpeg 1.2.1 installed using MacPorts:
$ ffmpeg ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers built on Jun 12 2013 13:46:11 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 [...]
How to reproduce:
# Generate 30 input frames (requires ImageMagick) $ for i in {0..30}; do \ convert -alpha on -background none -fill red \ -pointsize 30 -size 200x200 -gravity center \ label:$i png32:frame_$(printf '%03d' $i).png; \ done # Encode without overlay filter (you have to adjust the # font path if not testing on Mac OS X) $ ffmpeg -an \ -f image2 -i 'frame_%03d.png' \ -filter_complex "[0:v] drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]" \ -map '[out]' \ -vcodec mpeg4 -b:v 600k -flags +aic+mv4 \ working.mp4 # Encode with "overlay=shortest=1" (needed to stop encoding # when running out of input frames; adjust the font path # again) $ ffmpeg -an \ -f image2 -i 'frame_%03d.png' \ -f lavfi -i 'color=c=white:size=200x200' \ -filter_complex "[1:v][0:v] overlay=shortest=1, drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]" \ -map '[out]' \ -vcodec mpeg4 -b:v 600k -flags +aic+mv4 \ missingframe.mp4
Notice how the second version is missing a frame:
$ ffprobe -show_streams -loglevel quiet working.mp4 | grep -w nb_frames nb_frames=31 $ ffprobe -show_streams -loglevel quiet missingframe.mp4 | grep -w nb_frames nb_frames=30
This can be confirmed by looking at the video. The frame number is encoded at the top left and is also reflected by the number encoded in the original PNG files.
Change History (7)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Using Git master branch as of Wed Jul 24 13:48:12 UTC 2013:
~/src/ffmpeg $ git describe n2.0-314-gc5f3cc4 /tmp/ffmpeg-git-install $ bin/ffmpeg ffmpeg version N-54917-gc5f3cc4 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 24 2013 15:46:49 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) configuration: --prefix=/tmp/ffmpeg-git-install --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid libavutil 52. 40.100 / 52. 40.100 libavcodec 55. 19.100 / 55. 19.100 libavformat 55. 12.102 / 55. 12.102 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 81.102 / 3. 81.102 libswscale 2. 4.100 / 2. 4.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Use -h to get full help or, even better, run 'man ffmpeg'
Generating input frames:
/tmp/ffmpeg-git-install $ for i in {0..30}; do \ > convert -alpha on -background none -fill red \ > -pointsize 30 -size 200x200 -gravity center \ > label:$i png32:frame_$(printf '%03d' $i).png; \ > done /tmp/ffmpeg-git-install $ echo frame_*.png frame_000.png frame_001.png frame_002.png frame_003.png frame_004.png frame_005.png frame_006.png frame_007.png frame_008.png frame_009.png frame_010.png frame_011.png frame_012.png frame_013.png frame_014.png frame_015.png frame_016.png frame_017.png frame_018.png frame_019.png frame_020.png frame_021.png frame_022.png frame_023.png frame_024.png frame_025.png frame_026.png frame_027.png frame_028.png frame_029.png frame_030.png
Input file information (notice how there are 31 frames):
/tmp/ffmpeg-git-install $ bin/ffmpeg -v 9 -loglevel 99 -i 'frame_%03d.png' ffmpeg version N-54917-gc5f3cc4 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 24 2013 15:46:49 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) configuration: --prefix=/tmp/ffmpeg-git-install --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid libavutil 52. 40.100 / 52. 40.100 libavcodec 55. 19.100 / 55. 19.100 libavformat 55. 12.102 / 55. 12.102 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 81.102 / 3. 81.102 libswscale 2. 4.100 / 2. 4.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100 Splitting the commandline. Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'. Reading option '-i' ... matched as input file with argument 'frame_%03d.png'. Finished splitting the commandline. Parsing a group of options: global . Applying option v (set logging level) with argument 9. Successfully parsed a group of options. Parsing a group of options: input file frame_%03d.png. Successfully parsed a group of options. Opening an input file: frame_%03d.png. [AVIOContext @ 0x7fd809c13880] Statistics: 907 bytes read, 0 seeks [AVIOContext @ 0x7fd809c13da0] Statistics: 589 bytes read, 0 seeks [AVIOContext @ 0x7fd809c13da0] Statistics: 849 bytes read, 0 seeks [AVIOContext @ 0x7fd809c148e0] Statistics: 861 bytes read, 0 seeks [AVIOContext @ 0x7fd809c14640] Statistics: 733 bytes read, 0 seeks [AVIOContext @ 0x7fd809c14720] Statistics: 880 bytes read, 0 seeks [AVIOContext @ 0x7fd809c155c0] Statistics: 962 bytes read, 0 seeks [AVIOContext @ 0x7fd809c15a80] Statistics: 715 bytes read, 0 seeks [AVIOContext @ 0x7fd809c15e40] Statistics: 946 bytes read, 0 seeks [AVIOContext @ 0x7fd809c16360] Statistics: 965 bytes read, 0 seeks [AVIOContext @ 0x7fd809c16880] Statistics: 1031 bytes read, 0 seeks [AVIOContext @ 0x7fd809c16960] Statistics: 625 bytes read, 0 seeks [AVIOContext @ 0x7fd809c16d40] Statistics: 1006 bytes read, 0 seeks [AVIOContext @ 0x7fd809c16e20] Statistics: 1029 bytes read, 0 seeks [AVIOContext @ 0x7fd809c16f00] Statistics: 848 bytes read, 0 seeks [AVIOContext @ 0x7fd809c173a0] Statistics: 1021 bytes read, 0 seeks [AVIOContext @ 0x7fd809c17480] Statistics: 1090 bytes read, 0 seeks [AVIOContext @ 0x7fd809c17560] Statistics: 862 bytes read, 0 seeks [AVIOContext @ 0x7fd809c17a20] Statistics: 1080 bytes read, 0 seeks [AVIOContext @ 0x7fd809c17b00] Statistics: 1130 bytes read, 0 seeks [AVIOContext @ 0x7fd809c17be0] Statistics: 1233 bytes read, 0 seeks [AVIOContext @ 0x7fd809c17cc0] Statistics: 985 bytes read, 0 seeks [AVIOContext @ 0x7fd809c18220] Statistics: 861 bytes read, 0 seeks [AVIOContext @ 0x7fd809c186e0] Statistics: 1204 bytes read, 0 seeks [AVIOContext @ 0x7fd809c187c0] Statistics: 1060 bytes read, 0 seeks [AVIOContext @ 0x7fd809c188a0] Statistics: 1202 bytes read, 0 seeks [AVIOContext @ 0x7fd809c18980] Statistics: 1274 bytes read, 0 seeks [AVIOContext @ 0x7fd809c18ac0] Statistics: 1052 bytes read, 0 seeks [AVIOContext @ 0x7fd809c18ba0] Statistics: 1262 bytes read, 0 seeks [AVIOContext @ 0x7fd809c18c80] Statistics: 1259 bytes read, 0 seeks [AVIOContext @ 0x7fd809c18dc0] Statistics: 1263 bytes read, 0 seeks Input #0, image2, from 'frame_%03d.png': Duration: 00:00:01.24, start: 0.000000, bitrate: N/A Stream #0:0, 31, 1/25: Video: png, rgba, 200x200, 1/25, 25 fps, 25 tbr, 25 tbn, 25 tbc Successfully opened the file. At least one output file must be specified
Produce video without overlay filter:
/tmp/ffmpeg-git-install $ bin/ffmpeg -an -v 9 -loglevel 99 \ > -f image2 -i 'frame_%03d.png' \ > -filter_complex "[0:v] drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]" \ > -map '[out]' \ > -vcodec mpeg4 -b:v 600k -flags +aic+mv4 \ > working.mp4 ffmpeg version N-54917-gc5f3cc4 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 24 2013 15:46:49 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) configuration: --prefix=/tmp/ffmpeg-git-install --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid libavutil 52. 40.100 / 52. 40.100 libavcodec 55. 19.100 / 55. 19.100 libavformat 55. 12.102 / 55. 12.102 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 81.102 / 3. 81.102 libswscale 2. 4.100 / 2. 4.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100 Splitting the commandline. Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'. Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'. Reading option '-f' ... matched as option 'f' (force format) with argument 'image2'. Reading option '-i' ... matched as input file with argument 'frame_%03d.png'. Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '[0:v] drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[out]'. Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg4'. Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '600k'. Reading option '-flags' ... matched as AVOption 'flags' with argument '+aic+mv4'. Reading option 'working.mp4' ... matched as output file. Finished splitting the commandline. Parsing a group of options: global . Applying option v (set logging level) with argument 9. Applying option filter_complex (create a complex filtergraph) with argument [0:v] drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]. Successfully parsed a group of options. Parsing a group of options: input file frame_%03d.png. Applying option an (disable audio) with argument 1. Applying option f (force format) with argument image2. Successfully parsed a group of options. Opening an input file: frame_%03d.png. [AVIOContext @ 0x7fecc3413e40] Statistics: 907 bytes read, 0 seeks [AVIOContext @ 0x7fecc3414340] Statistics: 589 bytes read, 0 seeks [AVIOContext @ 0x7fecc3414340] Statistics: 849 bytes read, 0 seeks [AVIOContext @ 0x7fecc3414ec0] Statistics: 861 bytes read, 0 seeks [AVIOContext @ 0x7fecc3414c20] Statistics: 733 bytes read, 0 seeks [AVIOContext @ 0x7fecc3414d00] Statistics: 880 bytes read, 0 seeks [AVIOContext @ 0x7fecc3415be0] Statistics: 962 bytes read, 0 seeks [AVIOContext @ 0x7fecc34160a0] Statistics: 715 bytes read, 0 seeks [AVIOContext @ 0x7fecc3416460] Statistics: 946 bytes read, 0 seeks [AVIOContext @ 0x7fecc3416980] Statistics: 965 bytes read, 0 seeks [AVIOContext @ 0x7fecc3416ea0] Statistics: 1031 bytes read, 0 seeks [AVIOContext @ 0x7fecc3416f80] Statistics: 625 bytes read, 0 seeks [AVIOContext @ 0x7fecc3417360] Statistics: 1006 bytes read, 0 seeks [AVIOContext @ 0x7fecc3417440] Statistics: 1029 bytes read, 0 seeks [AVIOContext @ 0x7fecc3417520] Statistics: 848 bytes read, 0 seeks [AVIOContext @ 0x7fecc34179c0] Statistics: 1021 bytes read, 0 seeks [AVIOContext @ 0x7fecc3417aa0] Statistics: 1090 bytes read, 0 seeks [AVIOContext @ 0x7fecc3417b80] Statistics: 862 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418040] Statistics: 1080 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418120] Statistics: 1130 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418200] Statistics: 1233 bytes read, 0 seeks [AVIOContext @ 0x7fecc34182e0] Statistics: 985 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418840] Statistics: 861 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418d00] Statistics: 1204 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418de0] Statistics: 1060 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418ec0] Statistics: 1202 bytes read, 0 seeks [AVIOContext @ 0x7fecc3418fa0] Statistics: 1274 bytes read, 0 seeks [AVIOContext @ 0x7fecc34190e0] Statistics: 1052 bytes read, 0 seeks [AVIOContext @ 0x7fecc34191c0] Statistics: 1262 bytes read, 0 seeks [AVIOContext @ 0x7fecc34192a0] Statistics: 1259 bytes read, 0 seeks [AVIOContext @ 0x7fecc34193e0] Statistics: 1263 bytes read, 0 seeks Input #0, image2, from 'frame_%03d.png': Duration: 00:00:01.24, start: 0.000000, bitrate: N/A Stream #0:0, 31, 1/25: Video: png, rgba, 200x200, 1/25, 25 fps, 25 tbr, 25 tbn, 25 tbc Successfully opened the file. Parsing a group of options: output file working.mp4. Applying option map (set input stream mapping) with argument [out]. Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg4. Applying option b:v (video bitrate (please use -b:v)) with argument 600k. Successfully parsed a group of options. Opening an output file: working.mp4. detected 2 logical cores [Parsed_drawtext_0 @ 0x7fecc4000000] Setting 'fontfile' to value '/Library/Fonts/Arial.ttf' [Parsed_drawtext_0 @ 0x7fecc4000000] Setting 'x' to value '5' [Parsed_drawtext_0 @ 0x7fecc4000000] Setting 'y' to value '5' [Parsed_drawtext_0 @ 0x7fecc4000000] Setting 'text' to value 'frame %{n}' [graph 0 input from stream 0:0 @ 0x7fecc4002860] Setting 'video_size' to value '200x200' [graph 0 input from stream 0:0 @ 0x7fecc4002860] Setting 'pix_fmt' to value '28' [graph 0 input from stream 0:0 @ 0x7fecc4002860] Setting 'time_base' to value '1/25' [graph 0 input from stream 0:0 @ 0x7fecc4002860] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @ 0x7fecc4002860] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x7fecc4002860] Setting 'frame_rate' to value '25/1' [graph 0 input from stream 0:0 @ 0x7fecc4002860] w:200 h:200 pixfmt:rgba tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2 [format @ 0x7fecc40035a0] compat: called with args=[yuv420p] [format @ 0x7fecc40035a0] Setting 'pix_fmts' to value 'yuv420p' Successfully opened the file. [auto-inserted scaler 0 @ 0x7fecc4003c40] w:iw h:ih flags:'bilinear' interl:0 [format @ 0x7fecc40035a0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_drawtext_0' and the filter 'format' [AVFilterGraph @ 0x7fecc3415180] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto-inserted scaler 0 @ 0x7fecc4003c40] w:200 h:200 fmt:rgba sar:0/1 -> w:200 h:200 fmt:yuv420p sar:0/1 flags:0x2 [mpeg4 @ 0x7fecc480c400] intra_quant_bias = 0 inter_quant_bias = -64 Output #0, mp4, to 'working.mp4': Metadata: encoder : Lavf55.12.102 Stream #0:0, 0, 1/12800: Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 200x200, 1/25, q=2-31, 600 kb/s, 12800 tbn, 25 tbc Stream mapping: Stream #0:0 (png) -> drawtext drawtext -> Stream #0:0 (mpeg4) Press [q] to stop, [?] for help [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:0 t:0.000000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:1 t:0.040000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:2 t:0.080000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:3 t:0.120000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:4 t:0.160000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:5 t:0.200000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:6 t:0.240000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:7 t:0.280000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:8 t:0.320000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:9 t:0.360000 text_w:53 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:10 t:0.400000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:11 t:0.440000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:12 t:0.480000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:13 t:0.520000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:14 t:0.560000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:15 t:0.600000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:16 t:0.640000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:17 t:0.680000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:18 t:0.720000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:19 t:0.760000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:20 t:0.800000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:21 t:0.840000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:22 t:0.880000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:23 t:0.920000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:24 t:0.960000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:25 t:1.000000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:26 t:1.040000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:27 t:1.080000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:28 t:1.120000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:29 t:1.160000 text_w:62 text_h:12 x:5 y:5 [Parsed_drawtext_0 @ 0x7fecc4000000] Copying data in avfilter. [Parsed_drawtext_0 @ 0x7fecc4000000] n:30 t:1.200000 text_w:62 text_h:12 x:5 y:5 [output stream 0:0 @ 0x7fecc4003320] EOF on sink link output stream 0:0:default. No more output streams to write to, finishing. frame= 31 fps=0.0 q=2.0 Lsize= 23kB time=00:00:01.24 bitrate= 151.9kbits/s video:22kB audio:0kB subtitle:0 global headers:0kB muxing overhead 4.185470% 31 frames successfully decoded, 0 decoding errors [AVIOContext @ 0x7fecc4003900] Statistics: 34 seeks, 57 writeouts
It has 31 frames as intended:
/tmp/ffmpeg-git-install $ bin/ffprobe -show_streams -loglevel quiet working.mp4 | grep -w nb_frames nb_frames=31
Now produce another video using “overlay=shortest=1”:
/tmp/ffmpeg-git-install $ bin/ffmpeg -an -v 9 -loglevel 99 \ > -f image2 -i 'frame_%03d.png' \ > -f lavfi -i 'color=c=white:size=200x200' \ > -filter_complex "[1:v][0:v] overlay=shortest=1, drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]" \ > -map '[out]' \ > -vcodec mpeg4 -b:v 600k -flags +aic+mv4 \ > missingframe.mp4 ffmpeg version N-54917-gc5f3cc4 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 24 2013 15:46:49 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) configuration: --prefix=/tmp/ffmpeg-git-install --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid libavutil 52. 40.100 / 52. 40.100 libavcodec 55. 19.100 / 55. 19.100 libavformat 55. 12.102 / 55. 12.102 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 81.102 / 3. 81.102 libswscale 2. 4.100 / 2. 4.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100 Splitting the commandline. Reading option '-an' ... matched as option 'an' (disable audio) with argument '1'. Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'. Reading option '-f' ... matched as option 'f' (force format) with argument 'image2'. Reading option '-i' ... matched as input file with argument 'frame_%03d.png'. Reading option '-f' ... matched as option 'f' (force format) with argument 'lavfi'. Reading option '-i' ... matched as input file with argument 'color=c=white:size=200x200'. Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '[1:v][0:v] overlay=shortest=1, drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[out]'. Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg4'. Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '600k'. Reading option '-flags' ... matched as AVOption 'flags' with argument '+aic+mv4'. Reading option 'missingframe.mp4' ... matched as output file. Finished splitting the commandline. Parsing a group of options: global . Applying option v (set logging level) with argument 9. Applying option filter_complex (create a complex filtergraph) with argument [1:v][0:v] overlay=shortest=1, drawtext=fontfile=/Library/Fonts/Arial.ttf:x=5:y=5:text='frame %{n}' [out]. Successfully parsed a group of options. Parsing a group of options: input file frame_%03d.png. Applying option an (disable audio) with argument 1. Applying option f (force format) with argument image2. Successfully parsed a group of options. Opening an input file: frame_%03d.png. [AVIOContext @ 0x7fa65b414040] Statistics: 907 bytes read, 0 seeks [AVIOContext @ 0x7fa65b414560] Statistics: 589 bytes read, 0 seeks [AVIOContext @ 0x7fa65b414560] Statistics: 849 bytes read, 0 seeks [AVIOContext @ 0x7fa65b414da0] Statistics: 861 bytes read, 0 seeks [AVIOContext @ 0x7fa65b414e00] Statistics: 733 bytes read, 0 seeks [AVIOContext @ 0x7fa65b414ee0] Statistics: 880 bytes read, 0 seeks [AVIOContext @ 0x7fa65b415dc0] Statistics: 962 bytes read, 0 seeks [AVIOContext @ 0x7fa65b416280] Statistics: 715 bytes read, 0 seeks [AVIOContext @ 0x7fa65b416640] Statistics: 946 bytes read, 0 seeks [AVIOContext @ 0x7fa65b416b60] Statistics: 965 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417080] Statistics: 1031 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417160] Statistics: 625 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417540] Statistics: 1006 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417620] Statistics: 1029 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417700] Statistics: 848 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417ba0] Statistics: 1021 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417c80] Statistics: 1090 bytes read, 0 seeks [AVIOContext @ 0x7fa65b417d60] Statistics: 862 bytes read, 0 seeks [AVIOContext @ 0x7fa65b418220] Statistics: 1080 bytes read, 0 seeks [AVIOContext @ 0x7fa65b418300] Statistics: 1130 bytes read, 0 seeks [AVIOContext @ 0x7fa65b4183e0] Statistics: 1233 bytes read, 0 seeks [AVIOContext @ 0x7fa65b4184c0] Statistics: 985 bytes read, 0 seeks [AVIOContext @ 0x7fa65b418a20] Statistics: 861 bytes read, 0 seeks [AVIOContext @ 0x7fa65b418ee0] Statistics: 1204 bytes read, 0 seeks [AVIOContext @ 0x7fa65b418fc0] Statistics: 1060 bytes read, 0 seeks [AVIOContext @ 0x7fa65b4190a0] Statistics: 1202 bytes read, 0 seeks [AVIOContext @ 0x7fa65b419180] Statistics: 1274 bytes read, 0 seeks [AVIOContext @ 0x7fa65b4192c0] Statistics: 1052 bytes read, 0 seeks [AVIOContext @ 0x7fa65b4193a0] Statistics: 1262 bytes read, 0 seeks [AVIOContext @ 0x7fa65b419480] Statistics: 1259 bytes read, 0 seeks [AVIOContext @ 0x7fa65b4195c0] Statistics: 1263 bytes read, 0 seeks Input #0, image2, from 'frame_%03d.png': Duration: 00:00:01.24, start: 0.000000, bitrate: N/A Stream #0:0, 31, 1/25: Video: png, rgba, 200x200, 1/25, 25 fps, 25 tbr, 25 tbn, 25 tbc Successfully opened the file. Parsing a group of options: input file color=c=white:size=200x200. Applying option f (force format) with argument lavfi. Successfully parsed a group of options. Opening an input file: color=c=white:size=200x200. detected 2 logical cores [Parsed_color_0 @ 0x7fa65c000000] Setting 'c' to value 'white' [Parsed_color_0 @ 0x7fa65c000000] Setting 'size' to value '200x200' [Parsed_color_0 @ 0x7fa65c000000] size:200x200 rate:25/1 duration:-1.000000 sar:1/1 [AVFilterGraph @ 0x7fa65b4137c0] query_formats: 2 queried, 1 merged, 0 already done, 0 delayed [lavfi @ 0x7fa65b814200] All info found Input #1, lavfi, from 'color=c=white:size=200x200': Duration: N/A, start: 0.000000, bitrate: N/A Stream #1:0, 1, 1/25: Video: rawvideo (I420 / 0x30323449), yuv420p, 200x200 [SAR 1:1 DAR 1:1], 1/25, 25 tbr, 25 tbn, 25 tbc Successfully opened the file. Parsing a group of options: output file missingframe.mp4. Applying option map (set input stream mapping) with argument [out]. Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg4. Applying option b:v (video bitrate (please use -b:v)) with argument 600k. Successfully parsed a group of options. Opening an output file: missingframe.mp4. [Parsed_overlay_0 @ 0x7fa65c001760] Setting 'shortest' to value '1' [Parsed_drawtext_1 @ 0x7fa65c001d80] Setting 'fontfile' to value '/Library/Fonts/Arial.ttf' [Parsed_drawtext_1 @ 0x7fa65c001d80] Setting 'x' to value '5' [Parsed_drawtext_1 @ 0x7fa65c001d80] Setting 'y' to value '5' [Parsed_drawtext_1 @ 0x7fa65c001d80] Setting 'text' to value 'frame %{n}' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] Setting 'video_size' to value '200x200' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] Setting 'time_base' to value '1/25' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] Setting 'pixel_aspect' to value '1/1' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] Setting 'frame_rate' to value '25/1' [graph 0 input from stream 1:0 @ 0x7fa65c0044e0] w:200 h:200 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2 [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] Setting 'video_size' to value '200x200' [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] Setting 'pix_fmt' to value '28' [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] Setting 'time_base' to value '1/25' [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] Setting 'frame_rate' to value '25/1' [graph 0 input from stream 0:0 @ 0x7fa65c0048e0] w:200 h:200 pixfmt:rgba tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2 [format @ 0x7fa65c0054c0] compat: called with args=[yuv420p] [format @ 0x7fa65c0054c0] Setting 'pix_fmts' to value 'yuv420p' Successfully opened the file. [auto-inserted scaler 0 @ 0x7fa65c005b00] w:iw h:ih flags:'bilinear' interl:0 [Parsed_overlay_0 @ 0x7fa65c001760] auto-inserting filter 'auto-inserted scaler 0' between the filter 'graph 0 input from stream 0:0' and the filter 'Parsed_overlay_0' [AVFilterGraph @ 0x7fa65c001280] query_formats: 6 queried, 4 merged, 1 already done, 0 delayed [auto-inserted scaler 0 @ 0x7fa65c005b00] w:200 h:200 fmt:rgba sar:0/1 -> w:200 h:200 fmt:yuva420p sar:0/1 flags:0x2 [Parsed_overlay_0 @ 0x7fa65c001760] main w:200 h:200 fmt:yuv420p overlay w:200 h:200 fmt:yuva420p [mpeg4 @ 0x7fa65c82fa00] intra_quant_bias = 0 inter_quant_bias = -64 Output #0, mp4, to 'missingframe.mp4': Metadata: encoder : Lavf55.12.102 Stream #0:0, 0, 1/12800: Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 200x200 [SAR 1:1 DAR 1:1], 1/25, q=2-31, 600 kb/s, 12800 tbn, 25 tbc Stream mapping: Stream #0:0 (png) -> overlay:overlay Stream #1:0 (rawvideo) -> overlay:main drawtext -> Stream #0:0 (mpeg4) Press [q] to stop, [?] for help [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:0.000000 t:0.000000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:0 t:0.000000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:1.000000 t:0.040000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:1 t:0.040000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:2.000000 t:0.080000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:2 t:0.080000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:3.000000 t:0.120000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:3 t:0.120000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:4.000000 t:0.160000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:4 t:0.160000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:5.000000 t:0.200000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:5 t:0.200000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:6.000000 t:0.240000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:6 t:0.240000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:7.000000 t:0.280000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:7 t:0.280000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:8.000000 t:0.320000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:8 t:0.320000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:9.000000 t:0.360000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:9 t:0.360000 text_w:53 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:10.000000 t:0.400000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:10 t:0.400000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:11.000000 t:0.440000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:11 t:0.440000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:12.000000 t:0.480000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:12 t:0.480000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:13.000000 t:0.520000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:13 t:0.520000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:14.000000 t:0.560000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:14 t:0.560000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:15.000000 t:0.600000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:15 t:0.600000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:16.000000 t:0.640000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:16 t:0.640000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:17.000000 t:0.680000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:17 t:0.680000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:18.000000 t:0.720000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:18 t:0.720000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:19.000000 t:0.760000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:19 t:0.760000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:20.000000 t:0.800000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:20 t:0.800000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:21.000000 t:0.840000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:21 t:0.840000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:22.000000 t:0.880000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:22 t:0.880000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:23.000000 t:0.920000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:23 t:0.920000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:24.000000 t:0.960000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:24 t:0.960000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:25.000000 t:1.000000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:25 t:1.000000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:26.000000 t:1.040000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:26 t:1.040000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:27.000000 t:1.080000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:27 t:1.080000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:28.000000 t:1.120000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:28 t:1.120000 text_w:62 text_h:12 x:5 y:5 [Parsed_overlay_0 @ 0x7fa65c001760] Copying data in avfilter. [Parsed_overlay_0 @ 0x7fa65c001760] n:29.000000 t:1.160000 pos:nan x:0.000000 xi:0 y:0.000000 yi:0 [Parsed_drawtext_1 @ 0x7fa65c001d80] n:29 t:1.160000 text_w:62 text_h:12 x:5 y:5 [output stream 0:0 @ 0x7fa65c005180] EOF on sink link output stream 0:0:default. No more output streams to write to, finishing. frame= 30 fps=0.0 q=2.0 Lsize= 38kB time=00:00:01.20 bitrate= 259.9kbits/s video:37kB audio:0kB subtitle:0 global headers:0kB muxing overhead 2.475690% 61 frames successfully decoded, 0 decoding errors [AVIOContext @ 0x7fa65c005940] Statistics: 34 seeks, 56 writeouts
This video has only 30 frames, missing one:
/tmp/ffmpeg-git-install $ bin/ffprobe -show_streams -loglevel quiet missingframe.mp4 | grep -w nb_frames nb_frames=30
As can be determined by looking at working.mp4 and missingframe.mp4 it is the last frame that's missing.
comment:3 by , 11 years ago
Component: | undetermined → avfilter |
---|---|
Description: | modified (diff) |
Reproduced by developer: | set |
Status: | new → open |
Summary: | Overlay filter with “shortest=1” drops last frame → Overlay filter with "shortest=1" drops last frame |
Version: | unspecified → git-master |
ffmpeg -f lavfi -i color=black:hd720 -i in.png -lavfi overlay=shortest=1 out.png
comment:4 by , 11 years ago
The following patch series: http://ffmpeg.org/pipermail/ffmpeg-devel/2013-August/147589.html, once finalized, should fix this problem, amongst other things.
comment:6 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Should be fixed in f3a02f4bc1d05f1eb062fa9f5b6f20ba8991e952.
Please test current git head and please provide your failing command line together with the complete, uncut console output to make this a valid ticket.