Radio and TV are both linear media, most often funded by ads. So it is interesting to see the current state of the art in TV ad skipping.
Comskip combines up to 8 detection methods for ads (source code):
- Black Frame (though it's less and less relevant in the age of digital TV)
- Logo detection
- Scene Change
- Resolution Change
- Closed Captions
- Aspect Ratio
Results are good, though there are many parameters to tune for the detection to work properly. Those parameters may vary between channels. There is a forum so that people can help each other tune their configuration. Standalone usage is a bit complex as it is a command-line tool, but it has been integrated in more user-friendly interfaces such as TiVo, XBMC and MediaPortal.
MythTV uses combinations of the following methods:
- Blank Frame Detection - Is used to determine when a programme fades to black (this invariably happens between show segments)
- Scene change detection - Tries to determine that a large amount of the picture has changed
- Logo detection - Looks for a part of the picture that does not change during a recorded show - i.e. an onscreen logo. Logos are usually removed for the duration of commercial breaks, making them 'easier' to spot.
- Silence clusters detection - An advert is defined as a cluster of silences, at least minbreak long, that is composed of at least mindetect silences that occur within maxsep of each other (source).
Commercial solutions offer ad-skipping, such as:
- TiVo, with TiVo SkipMode. It seems they are manually detecting ads on prime-time shows!
- VideoReDo, with VideoReDo AdDetective. Their solution is based on black level detection only.
All of these techniques seem to require fine tuning of multiple knobs, leading to poor reliability. There may be room for improvement…
Update (Jan 2020): nice French project that mutes TV when stream logo disappears, indicating the presence of ads https://make.lichat.net/adblock-tv/