I know I'm not the first or only person to think about this, but for years it has periodically crossed my mind how I could make something that could automatically mute / blue screen / screen saver a television while commercials are on.
Not having a TV, it's not something I tend to think about too often, but every now and again (when I'm in the presence of TV ads really :P) it crosses my mind.
Also, relatively futile these days, considering the hold that advertisers have on actual *content*. I.e. they just put the ads directly in the crap that you're watching these days (yes, I'm angry).
Anyhow, if I was going to try and come up with something to automatically tune out of commercials there are a few things that I'd be looking for:
1. Timing patterns. I.e. basic understanding of the typical duration of blocks of commercials vs. blocks of content, with respect to a 24 / 7 programming schedule, perhaps with seasonal adjustments, etc. I don't have this data, but that's one of the first things I'd be looking for. You'd want some ability to 'train'.
2. Volume normalisation. Ads are LOUD. They are NOISY. I swear those bastards normalise ad volume at a higher level, which is something that you could use to your advantage as a supplement to 1. So basically you could come up with a 'probability' that an advertisement was about to show, or that content was about to resume, based on typical programming schedules, then you could supplement this with real time analysis of volume normalisation.
3. Playback Delay. Perhaps you could buffer say 30 seconds worth of signal before passing it on to the TV. Basically this would give you the ability to check your scheduling / normalisation stuff without having to respond with false positives, etc. Also, if your algorithm makes a mistake, or the user requests a replay of various bits, you have 'catch up' and 'slow down' flexibility during every ad break.. ;)
So, those are my thoughts, not that I've ever really done anything in that regard. Also, I like to think about voice recognition, you can probably look more into the content (beyond the normalisation), but I imagine things would start getting significantly more complicated at that point...
Perhaps knowing something about the 'genre' of the content would be useful to help gain an understanding of what sort of 'noise' you can expect. I.e. will there be prolonged loud bits during a gun fight, screaming, etc. Also, you might be able to look at the screen. Say, if it's a cartoon then bright red backgrounds or images might happen, but if it's a drama, that's probably unlikely, whereas an ad could very likely have a consistent background colour and 'cartoon colours' with big letters, and “call now“ messages, etc.
In fact, if you could run text recognition on an image, and find words, or things that looked like URLs or phone numbers, then you could almost certainly know it was an ad (credits aside).
A mass cheap way for a large number of users; would be to have all there TV tuners linked to the internet via a "device" that was link to a person who was employee to watch a push a button when the ads were on, which then broadcasted via internet to the "device" to blue screen etc. But you need the large number of users who all pay enough to cover that person wages etc.
Just a lower tech thought.
Interesting thought. Perhaps what you could do is provide an automated collaboration network. So to get even better data, have the devices connected to a public network (i.e. The Internet (TM) ) and communication with each other / a service to get an indication of what other people using the same type of device, watching the same channel have 'manuallly stated' about the condition of the media.
That idea, coupled with the delayed feed, and automatic heuristics, would be pretty deadly I reckon.
So, once in a blue moon you'll be sitting there watching, the ads will come on and you'll see it, you'll press the "Turn off this god damn ad button" on the remote, the ad will go away for you (leaving you mildly *exposed*, taking one for the team) but the message that at 2004-11-08-203712 on Chanell X there is an ad, will instantly go to the server, and then other clients whose feed is further delayed can get the information that "one user says an ad starts now", then if their feeds a delayed longer (like 30 seconds, instead of your 20 seconds) then they still have time to avoid the ad.
You have to have some tolerance for user error.
Also, if the user presses the "oh shit I just missed some content after the ads button" to skip back 10 seconds, then that can be registered with the service too, so other hosts know they should probably start playing again sooner...