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

Bo Berglund bo.berglund at gmail.com
Thu Sep 30 20:41:34 EEST 2021

On Thu, 30 Sep 2021 15:45:44 +0200, "Venkateswaran.S"
<venketeswaran2015 at gmail.com> wrote:

>> I thinks it's not possible with ffmpeg command line tool. There is a
>> *delogo* filter which removes the logo from the clip but doesn't tell you
>> the timings where this logo appears.
>You can easily detect the logo in image using opencv lib
>> <https://ai-facets.org/robust-logo-detection-with-opencv/> . So if you
>> can understand some C or C++, you can use ffmpeg c API to get sequence of
>> avframes from your clip and feed it to opencv as an image to detect the
>> logo. You can also get the timings of that frame from ffmpeg.

This seems to be a way to detect a logo *anywhere* in an *image* even though it
is distorted and rotated.

But this is not my use case:
1) I am not dealing with an image as source, it is an mp4 video
2) I know the rect where the logo is located if it is on screen
3) I know the logo appearance, but its parts might change color from time to

I want to tell ffmpeg to look at a specific rect (rather small) on screen
expressed as coordinates in percentage of w and h.

I just measured the area (w,h coordinates):
It is located at (79%,84%) and the size is (16,4%, 11,9%)

So ffmpeg/ffprobe should output a timestamp when the rect contains the logo and
when it disappears again. Those two timestamps define the time the logo is on

Can it be done?

Bo Berglund
Developer in Sweden

More information about the ffmpeg-user mailing list