Finally a use case where AI/Machine learning would absolutely make sense. If we can have AI that can generate text or images, imitate people’s voices or write code, we can also have a lightweight model that can detect ads and skip them during playback. There’s a model trained on SponsorBlock data for detecting sponsored segments https://github.com/xenova/sponsorblock-ml
I’m sure that we can have something similar but for embedded ads.It’s called a classifier and it could easily detect an embedded ad. The issue is now everyone needs to run it on their hardware to detect and this will cost some electricity.
Fine with me
Well I’m not happy about potentially adding new type of load on the electrical grids around the world.
Ads have definitely added more load on electrical grids in aggregate than locally hosted and lightweight models, especially given that ads are fucking everywhere all the time. Websites, apps, the servers, even 24/7 electric billboards. I’m not worried about a few nerds using slightly more electricity sometimes for their own benefit and joy (it’s still less power than gaming), as opposed to a corp that burns through power and breaks their climate pledges (Microsoft) for the benefit of their bottom line and nothing else. Corps don’t get to have a monopoly on AI that was built with our data, only to have it fed back to us to pull more data and siphon more money.
So basically fuck Google and fuck ads.
Do you understand what we’re still talking less energy than the monitor it displays on. I would bet even untuned VGG16 could do that without even a fine tune. Advertising is starkly different to content and the output is a “ad=yes/no” signal. It’s a very small amount of data, probably less than the plain hardware video decoder. It’s also not a new type of load, it runs off the same power supply as any computer, a slight capacitive load, it won’t even change the grid powerfactor.
It’s hard to run AI on phones and low-end hardware though. It’s not that easy.
Give it 5 more years in hardware performance improvements and software/model optimization and I don’t see a problem. The important part is that improvements are made public for everyone to use and improve upon instead of letting openai and microsoft take the whole cake
It already exists. Although it’s not AI, and mostly works best when using channel logos to work out the ad breaks.
Oh man, I wonder why no one ever thought of randomly injecting ads into content before? What geniuses they must have working at YouTube. I can’t even comprehend the big-brainedness. I’m sure people will love it.
deleted by creator
This particular arms race began a couple of decades ago at least…
Just wait until someone trains an AI to recognize and skip ads.
That poor AI.
i would rather have video go black for the duration of ad than watch that filth
Used to put up with this back when Hulu was free. Adblockers weren’t as sophisticated then, so I had to watch 2 minutes of a black screen every commercial break. Still better than watching ads.
deleted by creator
Imagine thinking they can’t detect when you try to skip forward during an ad.
deleted by creator
That is prone to error, just a pixel can be too small of a sample. I would prefer something with hashes, just a sha1sum every 5 seconds of the current frame. It can be computed while buffering videos and wait until the ad is over to splice the correct region
The problem with (good) hashes is that when you change the input even slightly (maybe a different compression algorithm is used), the hash changes drastically
Yes, that’s why I’m proposing it as opposed to just one pixel to differentiate between ad and video. Youtube videos are already separated in sections, just add some metadata with a hash to every one.
I think that downsizing the scene to like 8x8 pixels (so basically taking the average color of multiple sections of the scene) would mostly work. In order to be undetected, the ad would have to match (at least be close to) the average color of each section, which would be difficult in my opinion: you would need to alter each ad for each video timestamp individually.
Yes, that could be an alternative to computing hashes, I don’t know what option would be less resource intensive
Youtube is aware that serving ads to people who hate ads is going to reduce these brands’ value, right? I thought that was the reason they were ok with adblockers before…
They have decided that the damage is worth less than the cost of serving videos to users with add blocks. Only time will tell if they are right.
If the amount of people that just put up with ads currently instead of switching to Firefox is anything to go by, I think the number of people who truly care is less that you might think. Especially when YouTube is such a monopoly.
The people that hate YT ads hate Google already anyways.
Humanity accepts your challenge! See y’all on the battlefield ;-)
lights molotov cocktail
…
“are we not going to do that, or…? asking for a friend, of course”
deleted by creator
We can do it the old fashioned way
Where is that image from?
A show called ‘The Good Place’. Good show imo.
Ah ok cool, thanks I watched I think the first season. Need to finish it.
You can solve any problem with a Molotov cocktail. Any time I had a problem and I threw a Molotov cocktail, boom, right away, I had a different problem!
But we fixed this already, it was called TiVo…
I mean, I’ll just continue to not use Youtube…
I will see you on peertube ;)
This is new to me; are there any decent android apps for it?
PeerTube has a variety of third-party applications for Android, desktop, and a few other platforms.
They’re working on creating an official android app that’s all I know.
I really wish this would gain some traction. As it is, there is just not enough content there to compete with YouTube in any reasonable way.
Well the problem here is that youtubers need some type of monetization too for compensation. Idk Peertube can solve this without ads.
Paid subscriptions per month, you watch the newest video for free. Have the youtuber host the server themselves for their own videos and federate that access.
Would incentivize more evergreen content too.
I accidentally watched YouTube the other night without adblock, OMFG what an experience.
If I can’t watch with adblock I’ll just stop using it, it’s only a rabit hole to waste time for me anyway.
Yup, and I’m not willing to pay for Youtube Premium because the app kinda sucks and I don’t like Google keeping track of what I watch. I’m willing to pay, but I’d really like to keep using the 3rd party apps I prefer (Grayjay and NewPipe).
So like Reddit, I’ll drop Youtube if my 3rd party apps stop working. That’s my line in the sand. If Youtube wants to get money from me, it needs to be through an API disassociated from my identity.
Same, just like when reddit killed 3rd party apps
This must cost YouTube a fortune doing additional processing and reduced flexibility. They are going to hurt themselves and blockers will find a way.
Every bit of effort and resourcing they spend on this returns revenue directly. Which is more than they can probably say for a lot of things they do. And they’re smart enough to know that they can’t eliminate blocking, just make it harder and harder so that fewer and fewer people do it.
There’s already extensions that somehow skip sponsorship sections, so it won’t even take that long.
The problem is those blocking extensions are based on timestamps. Those timestamps are added by the users, it’s a crowdsourced thing. But the ads a single user will see differ from what another user will see. It’s likely the length of the ads is different, which makes the whole timestamp thing a no go.
Along with the timestamp, there needs to be a way to detect where the actual video begins. That way at least an offset can be applied and timestamps maintained, but it would introduce a certain level of error.
The next issue would be to then advance the video to the place where the actual video begins. This can be very hard, as it would need to include some way of recognizing the right frame in the buffer. One requirement is that the starting frame is actually in the buffer (with ads more than a few seconds, this isn’t guaranteed). The add-on has access to this buffer (depending on the platform, this isn’t guaranteed). And there’s a reliable way to recognize the right frame, given the different encoding en quality setups.
And this needs to be done cheap, so with as little as infrastructure as possible. A database of timestamps is very small and crowdsourcing those timestamps is relatively easy. But recognizing frames requires more data to be stored and crowdsourcing the right frame is a lot harder than a timestamp. If the infrastructure ends up being complex and big, someone needs to pay for that. I don’t know if donations alone would cut it. So you would need to play ads, which is exactly what you intend on not doing.
I’m sure the very smart and creative people working on these things will find a way. But it won’t be easy, so I don’t expect a solution very soon.
You need more data to recognize frames, but not a lot more data. A hash for each quality setting would be sufficient as long as they don’t start fuzzing the videos, which would be very expensive on their part.
That’s actually hurt by this because it uses timestamps supplied by users to work. But now they are off because the ads are of variable length. We can just hope that YouTube keeps the ability to link to a specific timestamp because then it has to calculate the difference and that can be used by Sponsorblock and adblockers alike.
But then those ads either need to be skippable or not skippable with some kind of metadata which can be used against it by injected scripts.
That’s “crowdsourced”, i.e. manually done by volunteers on per-video basis.
I see a good use case for AI, can also be crowd sourced.
It’s illegal to not identify an ad as an ad (unless you’re a movie maker, but that’s a different topic). All ad blockers need to do is read that indicator. That might not be super simple, but I have faith in the abilities of the brilliant people behind many ad-blocking technologies.
Not really. They can precompute those and inject it in an MP4 file so long as the settings match and it’s inserted right before an i-frame so that it doesn’t corrupt b-frames. They already reencode everything with their preferred settings, so they only need to encode the ads for those same settings they already do. Just needs to be spliced seamlessly.
But YouTube uses DASH anyway, it’s like HLS, the stream is served in individual small chunks so it’s even easier because they just need to add chunks of ads where they can add mismatched video formats, for the same reason it’s able to seamlessly adjust the quality without any audio glitches.
Ad blockers will find a way.
Re-encoding is one thing, but ads are more or less supposed to be dynamic based on user location and likely some other data to target them.
Offloading that to the client made a lot of sense but now they have to do this server-side, they have very smart people working on making this as efficient as possible using tricks you’ve mentioned and more but it is still more effort than before. All for something that will likely be circumvented eventually.
All of that targeting data lives on Google’s servers already. Your computer isn’t trying to figure out who you are and what you like each ad play, Google already knows who you are when your browser makes a request for a video. Everything you are talking about is already server-side.
The data is but the client gets the specific bits from a CDN. Now they need a server to stitch these server side and stream it to you.
You can check the SponsorBlock FAQ about this. They do not need to do additional reprocessing
I am excited. This will break my YouTube addiction.
It’ll only affect me when I need to fix something I’m unfamiliar with, and it’llead creators to using other platforms for that kind of material, and lower the barrier to entry.
I don’t know why Google is shooting themselves in the foot like this. I mean, it’ll be profitable in the short run, yes, but this will almost certainly be devastating to their bottom line in the long run if it works as planned.
devastating to their bottom line in the long run if it works as planned.
Google knows their service is addictive and is banking on people being willing to eat an unlimited amount of shit in order to watch a bald man from Vancouver spend 12 minutes talking about his Peloton ride that morning. Realistically, they are probably right. There is no competition to YouTube. Hasn’t been for years. And there probably never will be ever again. Capitalism trends towards natural monopolies as infrastructure and complexity of operations makes startup costs prohibitive.
The day I’m forced to watch YouTube ads is the day I’ll stop using it.
Have you looked at the Unhooked extension. You can choose to hide recommended videos, which was a game changer for me.
Disabling my watch history did the trick lol
YouTube’s recommendations are such absolute trash if you turn that off (I’m assuming intentionally, to get you to enable it).
Yeah, I love that feature! Disabling watch history makes using Youtube so much more pleasant imo:
- recommendations are related to the video I just watched
- my home page isn’t filled with shorts and whatnot (I only see them when I search)
So thanks Google for letting me opt out of your BS.
How it works is that once you start getting these Server Side Ads (SSA), Youtube will create a sort of queue of videos in place of your usual video, with the first few being ads that can’t be skipped and have a red bar (not yellow) and in the end you’ll get your video. They are not literally part of the original video stream, they are separate streams that get injected as if they were the original video. It’s called SSAP, and I’ve been experiencing it from the last weekend. In the meantime, they’ve pretty much broken their player to implement this.
Ublock Origin has released a temporary fix yesterday here
Alternatively, you can use this extension to redirect from YouTube videos to piped.video I used it, it works very well, can’t guarantee for much more.
edit: fixed wording
Anything that makes it distinct gives a blocking opportunity, I assume?
Yeah, there’s ways around this. It’s just that most of the ublock origin blocking specific code, isn’t reusable here and the team will need to start over to deal with this new tactic/approach from Google.
The cure might eventually be worse than the disease though. If not now, or tomorrow, then the next day.
I’ll let the ublock team carve demonic sigils into me and sacrifice my grandma if that’s what it escalates to, I’d sooner lose YouTube entirely than sit through those ads
You could also use something like GrayJay, I’ve been using it for a while now and haven’t had any issues with it.
there is a plugin I bought, it’s community driven where you can tag sections of the video as ad, sponsored, etc, and auto skip it. it’s really nice, was like $5. will post when I find the link, but even if ads are server side, this plugin will skip. someone has to bite the bullet though and tag time stamps unfortunately.
found it, called dearrow, also changed clikcbait thumbnails and titles are editable by community.
The demise of Youtube begins
I don’t see any technical specification in the article, but if they inject the ad at the start of the video, making it part of the video itself, would make possible to just skip it using video controls. To avoid user skippin ad thru video controls there should be client-side script blocking it, so an ad-blocker can use this to tell apart an ad from the video itself.
Can anyone correct me on this?
Also, would this affect piped and invidious too?
I believe this describes them altering the ad host at load time for the page. DNS blocking of ad serving hosts only work if the hostname stays predictable, so just having dynamically named hosts that change in the loading of the page would make blocking more difficult.
Example: 1234.youtube-ads.com is blocked by AdBlockerX. 5678.youtube-ads-xyz.com is not on the blocklist, so is let through. All they have to do is cycle host or domain names to beat DNS blocking for the most part.
Previously, injecting hostnames live for EACH page load had two big issues:
-
DNS propagation is SLOW. Creating a new host or domain and having it live globally on multiple root servers can take hours, sometimes days.
-
Live form injection of something like this takes compute, and is normally set as part of a static template.
They’re just banking on making more money from increased ad revenue to offset the technical challenges of doing this, and offsetting the extra cost of compute. They’re also betting that the free adblocking tools will not spend the extra effort to constantly update and ship blocklist changes with updated hosts. I guarantee some simple logic will be able to beat this with client-side blocklist updating though (ie: tool to read the page code and block ad hosts). It’ll be tricky, probably have some false positives here and there, but effective.
I’ve tested making new subdomains, it’s literally minutes in real life. Sure, in some pathological case it might be hours, but it’s not actually going to happen realistically.
As long as the naming pattern is distinct from important domains you can still block it based on pattern matching. They need to obfuscate ad domains and other hosting domains the same way.
Creating subdomains is quite fast because the request goes right through when it’s unknown to caches, it’s updates when you reuse existing ones that causes trouble with lag.
-
That sounds correct for me. It is possible for them to switch to a system where everyone can manually skip past the ad in the video stream but adblockers are useless (by not sending and indication of the ad to the client), but I don’t see that happening since most people don’t use adblockers and letting all of them easily skip past every ad is probably bad for profits.
There’s already addons that can recognize in-video sponsored content and skip, if youtube splices in ads into the video stream these addons will still work (although depending on how strict server side logic is, they may have to pause when the buffer runs out until the time of the ad length has passed)
It doesn’t recognize the sponsor sections. The community does that. I don’t believe there is any tool right now that can automatically detect the sponsor sections.
It’s not literally part of the video, exactly because of what you describe. They are separate streams that get injected into the player before the normal video. You can’t skip them or interact with them in any way (pretty sure it also breaks any purchase links etc). Piped or Invidious don’t have them, ytdl also doesn’t download them.
As of now, afaik, you won’t see them if your account wasn’t selected for the experiment, if you are in incognito mode (with uBO on) or if you have uBlock Origin (and other adblockers) off (you’ll see the normal ads and then the video).
How does this actually works? Can you point me to technical documentation about this?
I’ve only found info about SSAI, not about SSAP. Is it the same?
It’s probably going to be like twitch. I’m sure they’ll eventually succeed in making it so you can stream videos without watching ads but they’ll never be able to stop people from downloading the video and skipping the ad in vlc.
Can’t you block ads on twitch?
In live videos they replace what you’re watching
Honestly it would be trivial for them to make the video controls server side too and simply not accept fast forward commands from the client during the ad.
We might be in a “Download and edit to watch ad-free” world with this change.
I accept having to wait until the video downloads past the ad. Certainly not going to watch the ad.
Seems too much, really. Even if they do such a terrible thing, would they not expose a “report ad” or “see the product” buttons? Video buffer is still locally downloaded.