this post was submitted on 18 Oct 2023
732 points (98.2% liked)

Technology

59714 readers
5802 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related content.
  3. Be excellent to each another!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, to ask if your bot can be added please contact us.
  9. Check for duplicates before posting, duplicates may be removed

Approved Bots


founded 1 year ago
MODERATORS
 

YouTube intensifies fight against ad blockers showing pop-ups, and users are frustrated | Blocking ad-block users::undefined

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 0 points 1 year ago (1 children)

If they did that then they'd have to re-encode videos for each veiwer (which would require an insane amount of processing power), or give up on tracking and have contextual only ads.

Their only real option is to have ads as separate files and then use the magic JavaScript to tell your computer to play one file then the next, which is where adblock comes in like "naw, let's not do that".

[–] Aux 1 points 1 year ago (1 children)

Not really. That's not how modern streaming works. No one sends plain files like it's 2000.

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago) (1 children)

I didn't mean like they just strait up embed video.mp4 on page for the video, but as far as I understand on their backend they still have actually video files of various resolutions and such that they serve to you.

Even if the page isn't giving you a copy of a strait up file in the way it might in 2000, the player is still pulling a copy of a pre processed video file stored on YT's servers, and in order to have the ads as part of that same file in order to make adblock very hard to implement they'd need to re-process it any time they want to show an ad that hadn't been already inserted into the video.

I could be completely wrong tho, I don't work at YouTube and haven't built a video sharing site before.

[–] Aux 1 points 1 year ago (1 children)

That's not how it works. I don't know exactly what YouTube is doing, but it's not serving files at all. There are several options available today, perhaps the easiest one to look at is HLS.

In short, the streaming server splits video files into small chunks. Then instead of sending you one huge file, it sends you a HLS playlist. Your browser reads the playlist and starts playing small video chunks one by one. If you want to navigate somewhere inside the video, you don't wait for the whole file to be downloaded, instead the browser will simply skip lots of chunks in the middle until it lands on the one you want to watch. That's also how changing video resolution works - the browser doesn't re-download 4K video after downloading 1080p video, it just stops at current chunk and switches to a higher res one for the next portion of the video.

So, few important things:

  • There's no big video file.
  • There's no real-time video processing.
  • Chunks can be of varied time.
  • You can create any playlist and insert whatever chunks you want from your existing chunk library.

This means that YouTube can create a new HLS playlist on the fly, send you 10 chunks of the your video, then send 3 chunks of the ad video, then 42 chunks of your video and 5 more ad video chunks. There's no need to decode/encode anything. And you will never know what the next chunk holds. They can also add ad chunks at random moments, so you won't be able to auto-skip them like you do with sponsor segments.

The real question is why Google is not doing it already.

[–] [email protected] 1 points 1 year ago

Thanks for the breakdown and the link, cool to learn about the new (well new to me) tech, sad to see it's gonna probably bit us in the butt at somepoint.