[FFmpeg-trac] #3030(avfilter:new): support ratio threshold in cropdetect

FFmpeg trac at avcodec.org
Fri Oct 4 18:30:41 CEST 2013


#3030: support ratio threshold in cropdetect
---------------------------------------+----------------------------------
               Reporter:  dericed      |                  Owner:
                   Type:  enhancement  |                 Status:  new
               Priority:  wish         |              Component:  avfilter
                Version:  git-master   |               Keywords:
             Blocked By:               |               Blocking:
Reproduced by developer:  0            |  Analyzed by developer:  0
---------------------------------------+----------------------------------
 Summary of the enhancement request:

 I'm using the cropdetect filter to crop video but I have some files to has
 little bits of caption data in an upper line of the video (example
 attached).

 I propose a ratio_threshold option for cropdetect similar to that used in
 black detect, where the percentage of outlying pixels to trigger the
 filter could be controlled. In the attached video the output for the first
 few frames is crop=720:352:0:68 but then the appearance of a few pixels in
 frame 8 throw off the cropdetect output to crop=720:416:0:6. I propose a
 ratio-threshold option where a user could say that an adjustable number of
 should be ignored before adjusting the filter, so that the output could be
 consistently crop=720:352:0:68.

 In this case another means to get that result is to ignore the luma which
 is what I'm doing at the moment, but that only works with some material.

 How to reproduce:
 {{{
 ffmpeg -i cropdetect.mp4 -vf cropdetect -f null -
 ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
   built on Aug 27 2013 09:24:56 with Apple LLVM version 4.2
 (clang-425.0.28) (based on LLVM 3.2svn)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared
 --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree
 --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-
 cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-
 libmp3lame --enable-libxvid --enable-libass --enable-ffplay --enable-
 frei0r --enable-libcaca --enable-libopenjpeg --extra-
 cflags='-I/usr/local/Cellar/openjpeg/1.5.1/include/openjpeg-1.5 '
   libavutil      52. 42.100 / 52. 42.100
   libavcodec     55. 29.100 / 55. 29.100
   libavformat    55. 14.102 / 55. 14.102
   libavdevice    55.  3.100 / 55.  3.100
   libavfilter     3. 82.102 /  3. 82.102
   libavresample   1.  1.  0 /  1.  1.  0
   libswscale      2.  5.100 /  2.  5.100
   libswresample   0. 17.103 /  0. 17.103
   libpostproc    52.  3.100 / 52.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cropdetect.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf55.14.102
   Duration: 00:00:01.07, start: 0.003979, bitrate: 2012 kb/s
     Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 720x486, 1915 kb/s, 29.97 fps, 29.97 tbr, 11988 tbn, 59.94 tbc (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo,
 fltp, 81 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
 Output #0, null, to 'pipe:':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf55.14.102
     Stream #0:0(eng): Video: rawvideo (I420 / 0x30323449), yuv420p,
 720x486, q=2-31, 200 kb/s, 90k tbn, 29.97 tbc (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(eng): Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
 (default)
     Metadata:
       handler_name    : SoundHandler
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 -> rawvideo)
   Stream #0:1 -> #0:1 (aac -> pcm_s16le)
 Press [q] to stop, [?] for help
 [null @ 0x7faeb910c600] Encoder did not produce proper pts, making some
 up.
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:848 t:0.070737 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:1248 t:0.104104 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:1648 t:0.137471 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:2048 t:0.170838 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:2448 t:0.204204 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:2848 t:0.237571 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:61 y2:424 w:720
 h:352 x:0 y:68 pts:3248 t:0.270938 crop=720:352:0:68
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:3648 t:0.304304 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:4048 t:0.337671 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:4448 t:0.371038 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:4848 t:0.404404 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:5248 t:0.437771 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:5648 t:0.471138 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:6048 t:0.504505 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:6448 t:0.537871 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:6848 t:0.571238 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:7248 t:0.604605 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:7648 t:0.637971 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:8048 t:0.671338 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:8448 t:0.704705 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:8848 t:0.738071 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:9248 t:0.771438 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:9648 t:0.804805 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:10048 t:0.838172 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:10448 t:0.871538 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:10848 t:0.904905 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:11248 t:0.938272 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:11648 t:0.971638 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:12048 t:1.005005 crop=720:416:0:6
 [Parsed_cropdetect_0 @ 0x7faeb9800000] x1:0 x2:719 y1:1 y2:424 w:720 h:416
 x:0 y:6 pts:12448 t:1.038372 crop=720:416:0:6
 frame=   32 fps=0.0 q=0.0 Lsize=N/A time=00:00:01.06 bitrate=N/A
 video:3kB audio:192kB subtitle:0 global headers:0kB muxing overhead
 -100.011018%
 }}}

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


More information about the FFmpeg-trac mailing list