[FFmpeg-user] disabling scene detection

Alex Teslik alex at acatysmoof.com
Tue Mar 10 18:53:41 EET 2020


> On Mar 10, 2020, at 1:04 AM, Gyan Doshi <ffmpeg at gyani.pro> wrote:
> 
> 
> 
>> On 10-03-2020 12:49 pm, Alex Teslik wrote:
>> Hello,
>> 
>>     I have an image sequence of line drawings where the drawings change
>> abruptly. Ffmpeg is resetting the frame numbers that I am burning in using the
>> drawtext option every time there is an abrupt change. Here is the command I am
>> using, and the output:
>> 
>> ffmpeg.exe -y -r 10 -i final-%d.png -vf
>> "drawtext=fontfile='C\:/WINDOWS/fonts/arialbd.ttf':text=%
>> {frame_num}:start_number=1:fontcolor=black:fontsize=15:x=10:y=10,fps=10" -
>> pix_fmt rgb24 -c:v qtrle -r 10 test.mov
>> ffmpeg version git-2020-02-18-ebee808 Copyright (c) 2000-2020 the FFmpeg
>> developers
>>   built with gcc 9.2.1 (GCC) 20200122
>>   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
>> fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --
>> enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-
>> libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-
>> libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-
>> libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-
>> libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --
>> enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis
>> --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid
>> --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-
>> d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --
>> enable-libopenmpt --enable-amf
>>   libavutil      56. 41.100 / 56. 41.100
>>   libavcodec     58. 70.100 / 58. 70.100
>>   libavformat    58. 38.101 / 58. 38.101
>>   libavdevice    58.  9.103 / 58.  9.103
>>   libavfilter     7. 76.100 /  7. 76.100
>>   libswscale      5.  6.100 /  5.  6.100
>>   libswresample   3.  6.100 /  3.  6.100
>>   libpostproc    55.  6.100 / 55.  6.100
>> Input #0, image2, from 'final-%d.png':
>>   Duration: 00:00:04.96, start: 0.000000, bitrate: N/A
>>     Stream #0:0: Video: png, gray(pc), 240x196 [SAR 7559:7559 DAR 60:49], 25
>> fps, 25 tbr, 25 tbn, 25 tbc
>> Stream mapping:
>>   Stream #0:0 -> #0:0 (png (native) -> qtrle (native))
>> Press [q] to stop, [?] for help
>> Output #0, mov, to 'test.mov':
>>   Metadata:
>>     encoder         : Lavf58.38.101
>>     Stream #0:0: Video: qtrle (rle  / 0x20656C72), rgb24, 240x196 [SAR 1:1 DAR
>> 60:49], q=2-31, 200 kb/s, 10 fps, 10240 tbn, 10 tbc
>>     Metadata:
>>       encoder         : Lavc58.70.100 qtrle
>> frame=  124 fps=0.0 q=-0.0 Lsize=     635kB time=00:00:12.30 bitrate=
>> 422.9kbits/s dup=3 drop=0 speed=92.5x
>> video:634kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
>> overhead: 0.200005%
>> 
>> 
>> The images start at 1 and sequentially increment. But when the image changes
>> dramatically, the frame numbering starts over at 1 again. So out of 124 images
>> I get 4 sequences burned in:
>> 
>> 1-82
>> 1-5
>> 1-25
>> 1-9
> 
> 
> This is almost certainly not due to scene detection (neither the filtering framework or drawtext filter has any provision for that).
> 
> What this is, is the filtergraph being reinitialized when some property of the input changes - for video/images, the candidates are resolution or the pixel format.
> 
> That can be suppressed,
> 
> ffmpeg.exe -y -framerate 10 -reinit_filter 0 -i final-%d.png -vf
> "scale,format=rgb24,drawtext=fontfile='C\:/WINDOWS/fonts/arialbd.ttf':text=%
> {frame_num}:start_number=1:fontcolor=black:fontsize=15:x=10:y=10" -
> pix_fmt rgb24 -c:v qtrle -r 10 test.mov
> 
> 
> (scale filter prefixed since only some filters can handle changing input without reinit). For image and capture input, -framerate is preferable.
> 
> Gyan
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
> 
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
> 

Hi Gyan,

    Thank you so much. That switch was very helpful. I couldn’t find any documentation on it, so it was a great suggestion. It pointed to a problem where some of the frames in my image sequence were silently converted to the Grey colorspace instead of sRGB. This was an issue in imagemagick, which was generating my frames. I forced imagemagick to output consistently in sRGB, and that combined with the switch you provided made everything work correctly. All my frames have the correct number burned in now .

Thanks!


More information about the ffmpeg-user mailing list