[FFmpeg-user] How to use ffmpeg to detect commercials

Paul B Mahol onemda at gmail.com
Fri Oct 1 11:19:29 EEST 2021


On Fri, Oct 1, 2021 at 10:11 AM Bo Berglund <bo.berglund at gmail.com> wrote:

> On Thu, 30 Sep 2021 14:35:27 +0200, Bo Berglund <bo.berglund at gmail.com>
> wrote:
>
> >I searched similar questions and found this regarding blackdetect filter
> on
> >stackoverflow:
> >
> https://stackoverflow.com/questions/18722747/can-you-put-the-result-of-a-blackdetect-filter-in-a-textfile-using-ffmpeg/32757533#32757533
> >
> >It uses ffprobe and I tested it on one of my 64 minute videos and it could
> >detect a number of black sections with start/end pairs:
> >
> >ffprobe -f lavfi -i "movie=myvideo.mp4,blackdetect[out0]" -show_entries
> tags=lavfi.black_start,lavfi.black_end -of default=nw=1 -v quiet
> >
> >But in this case there were a number of false detections as well (black
> sections
> >within a commercial block) and each output was duplicated tike this:
> >
> >TAG:lavfi.black_start=55.533
> >TAG:lavfi.black_start=55.533
> >TAG:lavfi.black_end=57.833
> >TAG:lavfi.black_end=57.833
> >TAG:lavfi.black_start=778.467
> >TAG:lavfi.black_start=778.467
> >TAG:lavfi.black_end=779.067
> >TAG:lavfi.black_end=779.067
> >TAG:lavfi.black_start=839.033
> >TAG:lavfi.black_start=839.033
> >TAG:lavfi.black_end=839.067
> >TAG:lavfi.black_end=839.067
>
> I have realized from comments here that the logo detection scheme is not
> really
> workable, so I am back to using this blackdetect method.
>
> One thing tah bugs me is that the command shown above duplicates the output
> value on two lines, how can I make ffprobe output only one line for each
> detection?
> It would be easier to process in a script if the output was like this
> instead:
>
> TAG:lavfi.black_start=55.533
> TAG:lavfi.black_end=57.833
> TAG:lavfi.black_start=778.467
> TAG:lavfi.black_end=779.067
> TAG:lavfi.black_start=839.033
> TAG:lavfi.black_end=839.067
>
> Then a start is followed by an end and so on and the time between the
> start and
> end shows if a commercial insertion is found (short time between start and
> end)
> or if there is a deliberate long black section (which I would anyway want
> to
> exclude).
>
> So:
> - How can i modify the ffprobe command such that it outputs just one line
> for
> every start or end point? I am not clever enough to figure out how ffprobe
> actually works...
>
> - I notice a detection that lasts only 34 ms, could such be valid at all?
> It
> seems like a single video frame...
>

1000/34 ~= 29

>
>
> --
> Bo Berglund
> Developer in Sweden
>
> _______________________________________________
> 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".
>


More information about the ffmpeg-user mailing list