You don’t need to re-encode the video. Look up HLS segments, which is the standard for streaming video and I assume YouTube uses it.
Each video is split into many segments, like 10 seconds long (though the duration doesn’t matter). The browser first fetches a “playlist” which is just a list of these segments. Then the video player plays each segment in order. So Google could just insert ad-segments into the video stream, and if they did it cleverly, there would be no way to determine that they were ads.
They are legally obligated to show which part of the video is an ad (and contractually obligated to have a clickable link), which always leaves ad blockers a way to correlate and remove those segments though (essentially skipping forward during the ad, then lying to the backend when asking for additional segments as if the user had skipped through the video after the ad was over).
On Twitch they managed to outplay even uBlock, because the streaming is realtime and if you skip the ad segments, there’s no data to fall back to and the backend won’t send you the regular segments until the ad break is over (from what I understand). So at best you get a waiting screen instead of an ad.
However I’m not sure if it would make (financial) sense to apply a similar strategy on YouTube, as that would require preventing buffering the video until the ads have stopped playing (and wouldn’t work at all for midroll ads since the video has already been buffered at that point). Not only would this be expensive to do in the backend, but it would likely cause disproportionate buffering on low-end connections which couldn’t start loading the video while the ad is playing.
On Twitch they managed to outplay even uBlock, because the streaming is realtime and if you skip the ad segments, there’s no data to fall back to and the backend won’t send you the regular segments until the ad break is over (from what I understand). So at best you get a waiting screen instead of an ad.
Yes, you get a “commercial break in progress” banner, but it’s not loading ads when watching through HLS.
Ads on Twitch are not nearly as bad as on YouTube tho, so I actually have an exception for Twitch ads. I usually only watch esports tournaments and they make sure there are no ad breaks during games, just between segments. And on the rare occasion that I watch a regular stream, I get an ad or two maybe once every 45 minutes, which is fair.
The ads are really annoying if you streamhop frequently, because almost every time you switch stream you have to wait 30s-1m.
I pay for Turbo now so that’s fine, but the way it’s implemented seems really stupid to me, if you are looking for a stream to watch you sometimes get ad after ad after ad which can’t possibly be good for viewer retention.
Pre-roll ads are stupid, yeah. At least give me some time to figure out if I want to watch the stream… But that a thing that’s also worse on YT since they removed dislike count. Is it another clickbaity jump-cut-ridden garbage video or is it actually information? Roll the dice to find out!
You don’t need to re-encode the video. Look up HLS segments, which is the standard for streaming video and I assume YouTube uses it.
Each video is split into many segments, like 10 seconds long (though the duration doesn’t matter). The browser first fetches a “playlist” which is just a list of these segments. Then the video player plays each segment in order. So Google could just insert ad-segments into the video stream, and if they did it cleverly, there would be no way to determine that they were ads.
They are legally obligated to show which part of the video is an ad (and contractually obligated to have a clickable link), which always leaves ad blockers a way to correlate and remove those segments though (essentially skipping forward during the ad, then lying to the backend when asking for additional segments as if the user had skipped through the video after the ad was over).
On Twitch they managed to outplay even uBlock, because the streaming is realtime and if you skip the ad segments, there’s no data to fall back to and the backend won’t send you the regular segments until the ad break is over (from what I understand). So at best you get a waiting screen instead of an ad.
However I’m not sure if it would make (financial) sense to apply a similar strategy on YouTube, as that would require preventing buffering the video until the ads have stopped playing (and wouldn’t work at all for midroll ads since the video has already been buffered at that point). Not only would this be expensive to do in the backend, but it would likely cause disproportionate buffering on low-end connections which couldn’t start loading the video while the ad is playing.
Yes, you get a “commercial break in progress” banner, but it’s not loading ads when watching through HLS.
Ads on Twitch are not nearly as bad as on YouTube tho, so I actually have an exception for Twitch ads. I usually only watch esports tournaments and they make sure there are no ad breaks during games, just between segments. And on the rare occasion that I watch a regular stream, I get an ad or two maybe once every 45 minutes, which is fair.
The ads are really annoying if you streamhop frequently, because almost every time you switch stream you have to wait 30s-1m.
I pay for Turbo now so that’s fine, but the way it’s implemented seems really stupid to me, if you are looking for a stream to watch you sometimes get ad after ad after ad which can’t possibly be good for viewer retention.
Pre-roll ads are stupid, yeah. At least give me some time to figure out if I want to watch the stream… But that a thing that’s also worse on YT since they removed dislike count. Is it another clickbaity jump-cut-ridden garbage video or is it actually information? Roll the dice to find out!
If the browser itself could check those fragments though… 🤔
Yeah they are sooner or later going to do something like this. But then we can download videos and use Ai to remove the ads.
Will probably pop up YouTube proxys that does this on request so we don’t even have to download.