YouTube is currently experimenting with server-side ad injection. This means that the ad is being added directly into the video stream.
This breaks sponsorblock since now all timestamps are offset by the ad times.
For now, I set up the server to detect when someone is submitting from a browser with this happening and rejecting the submission to prevent the database from getting filled with incorrect submissions.
I’m kinda surprised they haven’t done this already. Twitch has been doing this for a while now, and the only reliable way around it is to use a proxy in a country that Twitch doesn’t run ads in.
Video length is incredibly important to The Algorithm and a LOT of content creators time their videos to the second. Taking away control of that (even if the end result ins the exact same length) is going to ruffle a lot of feathers and lead to a lot of people who want to “be a champion for the viewers who should like, comment, and subscribe and use my referral code for war thunder” as a result.
Looks like I’ll finally get a reason to cut off another website I hate using, but never found the willpower to get rid off.
Good
I wonder how that will interoperate with timestamps provided by users in comments or by the video creator themselves. Maybe those can be used to detect inserted ads.
The server must have to send some metadata to the client telling when it’s running an ad because there are other things that need to happen client side during that like adjusting of the time or making the ad clickable
I have actually been seeing some timestamps that are completely wrong lately, maybe this is why.
does this mean stuff like yt-dlp will download videos with ads in thrm as well?
Almost certainly not, although fair disclaimer, I don’t actually know. Ads need to be tailored to the user when delivered, so it’s likely the YouTube frontend requesting the next chunk of video to be an ad instead of the next chunk of video from blob storage. yt-dlp likely just requests successive chunks straight from blob storage, passing this.
If YouTube served ads by saying “point to an ad chunk next” in their blob storage, 1. Everyone would see the same ad and 2. Premium users would still see ads.
To patch this, YouTube really needs to stop serving video chunks directly from storage, but I forget the reason they haven’t done that already.
(Technical note; I’m assuming blob storage chunks contain 1-2 seconds of video and metadata pointing to the next one, like a linked list. I’m not sure if this is how YouTube works, but many video platforms do this)
yeah that makes sense. i was thinking maybe youtube had servers to decide what chunks clients would get, maybe by looking at whether or not they are premium users first. but anyway youtube still needs a way to differentiate between ad chunks and video chunks, otherwise we would just be able to skip 10 seconds through all the ads. surely that can be exploited somehow.
Ads need to be tailored to the user when delivered
- It does not. If you install a new browser and open YouTube the first time, they’ll be able to show ads to you
- They could be tailored based on other factors too, like country, region, or even household by the IP
I think the backend could just generate the ad ridden video feed for the specific user. Most probably it would be very resource intensive, but I can only hope so… but then I also don’t know much about HLS and other fragmented streams so it might not be a performance problem at all.
like a linked list
I think the full list of chunks is (currently) known beforehand. That’s how yt-dlp can download on multiple threads, but also how it can show the number of total fragments relatively quickly on the progress bar
… which is why youtube has recently started blocking non-logged in users
Wait, they have? I wonder how/if that would affect the functionality of apps like Newpipe/Freetube.
It completely breaks them, currently: https://github.com/TeamNewPipe/NewPipe/issues/11139
This applies to at least NewPipe and yt-dlp, probably basically every such tool. Also, if you use logged-in cookies and download, they sometimes ban your account! Fun!
Also, if the ads where in different parts of the video every time, it would not be possible to use SponsorBlock for them :(
It was inevitable (and is arguably the “logical” extension of sponsor segments).
As for what it will do to timestamps: The same thing it does to timestamps in podcasts. Some podcast players have a special way to tag the timestamp to adjust with the inserted ads but NOBODY hosts with those. So they are rendered useless.
On the youtube side? They could potentially be auto-adjusted because youtube will know how many ads were inserted . But considering the goal of this is to serve ads…
Wouldn’t this also completely break ad blockers?
Nah, it would just circumvent them.
Step by step, it seems, YouTube is evolving into something that has previously been called TV.
If they carry on with this bullshit I’ll be dropping them entirely for Nebula. I quite enjoy Nebula so far.
I really like the idea of Nebula, but the way they market themselves as “creator owned” without being an actual workers cooperative seems deceitful (still much better than YouTube, though!)
Support a federated open source peertube instance instead of proprietary centralized paywalled garbage like Nebula. Just because the shittification isn’t there yet doesn’t mean it won’t be as soon as it gets a bit more popular.
I firmly believe that quality content needs to be paid somehow. And I’d rather not have that ad based. But I’m open to other platforms too. I’m just giving this a go and there’s some good content on Nebula.
I think make ad run faster can circumvent this. wdyt? https://chromewebstore.google.com/detail/video-speed-controller/nffaoalbilbmmfgbnbgppjihopabppdk?hl=e https://chromewebstore.google.com/detail/nffaoalbilbmmfgbnbgppjihopabppdk?hl=en
How would it detect that the currently playing section was an ad then?
The state of whether it’s an ad has to be somewhere clientside as the ads can’t be skipped by the user.
Wow that’s very annoying. What does this mean for the future of adblocking?
It’ll be difficult for a while until someone figures it out and then it’ll be easy again. It’s just an arms race.
The last time Google pulled out all the stops to fight ad blockers, I had to update uBlock Origin every now and then until the whole thing passed. That’s all.
So I’m not worried. But I am amused that they keep making ads more obnoxious, which pushes more people to use ad blockers. I didn’t even use sponsorblock until a particularly egregious bit of native advertising. They could probably gain ground by just making ads less irritating, but they absolutely will not.
This one might be harder, if YT just sends the ad like it was part of the video file, generating it on the fly, it’s a lot harder to detect, and probably not too hard for them to do, but breaking timestamps is pretty bad for some types of videos, like tutorials.
I think the larger content creators will push back against this, precisely due to the timestamp issue.
If they are part of the video you cant just skip them like any other part of the video, right?
Different users would see unique ads. So your ad could be 12 seconds long while my ad is 30 seconds long. A timestamp based skip would no longer work universally.
At least it should still work with the hard coded sponsor spots that are actually part of the videos (like the “brought to you by Manscaped” or whatever).
Only if the ads are a fixed length and always in the same place for each playback of the same video.
Inserting ads of various lengths in varying places throughout the video will alter all the time stamps for every playback.
The 5th minute of the video might happen 5min after starting playback, or it could be 5min+a 2min ad break after starting. This could change from playback to playback; so basing ad/sponsor blocking on timestamps becomes entirely useless.
Is this why I’ve been getting constant buffering at the start of videos?
I wonder if this is where AI might be useful where it’s used to filter out all of the megacorp ads, popups, and other random garbage?
- train LLMs on megacorp content and use it to filter out results
- sponsorblock adds this as a toggleable option just like the “skip segment” UI video overlay button
Sounds wasteful, detection of ads could be detected with regular software, no?
How?
By the way, yes, it is.
imagine using Gemini for this, would be peak irony.
- train LLMs on megacorp content and use it to filter out results
Advertising is poison.
We could just ban it.
People will say, “but then how could a website like YouTube exit at all?”
To which I say that we should retvrn to sharing funny videos via long email chains.
See Flash websites ripping each other off for five years on either side of Youtube’s introduction.
See Bittorrent moving more video than Netflix until like 2012.
See twenty years of web-based P2P experiments. Weirdos with fat hard drives (hi) will always be happy to seed.
Or - crazy thought - services could cost money. It would not take much. Youtube’s not getting ten bucks each time you watch a video. Bandwidth and storage keep getting cheaper. Nor are they paying for content, unlike Netflix and so on, and those fuckers are also considering ads.
I’ve got no problem paying money for a service that’s worth it. I still buy games on Steam even though I know how to pirate them because Valve’s service is so goddamn convenient it beats piracy in many ways.
Netflix used to be that good, and when YouTube Red rolled out I bought a year of it. But things have deteriorated significantly since then and the price has only gone up.