HUR gör Netflix när de sänker bitrate med 30 procent?

HUR gör Netflix när de sänker bitrate med 30 procent?

Som bekant så Netflix sänker videokvaliteten med 30 procent för att avlasta internet. Man kan ha åsikter om huruvida detta är smart, rättvist, proportionerligt eller ens nödvändigt men det är inte det jag vill diskutera här. För de som vill diskutera detta så finns det redan en tråd om detta. I den här tråden vill jag istället fokusera på, en helt annan fråga.

Nämligen: Hur gör Netflix när de sänker bitrate med 30 procent? Rent tekniskt alltså.

Att koda video är ju nämligen inte gratis. Så vitt jag vet (rätta mig om jag har fel!) så är det inte bara att ändra i en konfigurationsfil någonstans så sänks magiskt din bitrate med 30 procent. Man måste koda om videon till en lägre bitrate, något som tar mycket tid och beräkningskraft.

Enligt en artikel jag hittade om Netflix arkitektur från 2018 (Medium: NETFLIX system design (Narendra L)) så sker denna videokodning när en video läggs in i Netflix katalog. Artikeln är från 2018, och är ju skriven lite knackigt, så jag skulle säga att jag inte litar till 100% på att det som står i artikeln är 100% sant, vissa grejer är lite tveksamma, men själva grundarkitekturen om hur Netflix sitter ihop tror jag stämmer till de delar som är relevanta här. Ett relevant utdrag från artikeln:

Citat:

How Netflix onboard a movie/video:

Before this movie is made available to users, Netflix must convert the video into a format that works best for your device. This process is called transcoding or encoding.

Transcoding is the process that converts a video file from one format to another, to make videos viewable across different platforms and devices.

Whys do we need to do it? why can't we just play the source video?

The original movie/video comes in a high definition format that’s many terabytes in size. Also, Netflix supports 2200 different devices. Each device has a video format that looks best on that particular device. If you’re watching Netflix on an iPhone, you’ll see a video that gives you the best viewing experience on the iPhone.

Netflix also creates files optimized for different network speeds. If you’re watching on a fast network, you’ll see the higher quality video than you would if you’re watching over a slow network. And also depends on your Netflix plan. that said Netflix does create approx 1,200 files for every movie !!!!

När artikelförfattaren skriver med 1200 filer per film gissar jag på att videon delas upp i "stycken" på några sekunder eller minuter var, inte att det finns 1200 olika kvalitetsnivåer. Jag hade inte heller dragit på stora växlar på texten och siffrorna som visas i denna bild i artikeln, jag tror att den kan vara lånad efter en bildgoogling. Bitrates verkar inte stämma med verkligheten eller ens med något som är rimligt.

Vi kan även kombinera detta med en bild från tidigare i artikeln:

Av detta (längst ner i vänstra hörnet) framgår att Netflix gör sin videokodning i Amazons moln offline i en behandlingskö. Huvudsaken som jag ser det är att videomaterialet alltså kodas till olika kvalitetsnivåer "offline", och sedan så skickas de kodade videofilerna upp till Netflix CDN där de i sin tur skickas över till tittarnas enheter för uppspelning.

Om Netflix därför nu sänker sin bitrate med 30% så måste det betyda att antingen så har de redan filer i den kvalitén av andra anledningar, eller så kodar de nu om delar eller hela sitt bibliotek till en lägre bitrate. Det kan också betyda att de bara kodar nyanlända filmer i en lägre bitrate över en övergångsperiod.

Så vad tror ni, vad gör Netflix just nu? Sitter de och kodar om hela deras katalog med lägre bitrate? Eller bara den del som står för lejonparten av deras streams? Eller är det bara nytt material (nya avsnitt tenderar att vara populära?). Eller har jag helt fel och ligger detta i verkligheten till helt annorlunda?

Till sist en påminnelse: I den här tråden vill jag alltså diskutera hur Netflix gör detta, inte huruvida det är en bra eller en dålig idé. Det finns det redan gott om diskussion om i en annan tråd.

Netflix kan säkert koda om, eftersom de har ett förhållandevis litet bibliotek jämfört med t ex Youtube.

De kanske använder sig av Pied Pipers algoritm? (Du fattar om du sett Silicon Valley på HBO)

Menar du att de inte bara stängt av 720p-4K kvalité? Känns som enklaste lösningen.

Skrivet av cyklonen:

Netflix kan säkert koda om, eftersom de har ett förhållandevis litet bibliotek jämfört med t ex Youtube.

Ja, Youtube har ju gigantiskt mycket video jämfört med Netflix. Det laddas upp flera hundra timmar video varje minut till Youtube.

Jag hittar inga bra siffror på exakt hur mycket videomaterial som finns på Netflix utifrån det jag hittat. Jag har hittat en siffra på 4010 filmer och 1569 TV-serier.

Om vi räknar på 4000 filmer à 2 timmar, och 1500 TV-serier à 20 timmar var (genomsnitt) så får man en väldigt yxig gissning på 8000 + 30000 = 38 000 timmar video. Alltså ungefär vad som laddas upp till Youtube på 1-2 timmar.

Det är ändå väldigt mycket video att koda om!

Skrivet av CymbalCrasher:

Menar du att de inte bara stängt av 720p-4K kvalité? Känns som enklaste lösningen.

De har sänkt sin bitrate med 30% utan att sänka upplösningen. Mer detaljer (och diskussion om detta) i denna artikel: https://www.sweclockers.com/nyhet/29322-netflix-sanker-videok...

Rimligtvis har de väl stöd för variabel bitrate för folk med risig uppkoppling? Bara skicka ut lite sämre än vad linan egentligen har plats för.

Skrivet av olga32:

Rimligtvis har de väl stöd för variabel bitrate för folk med risig uppkoppling? Bara skicka ut lite sämre än vad linan egentligen har plats för.

Kan man köra variabel bitrate om man gör som Netflix, att man kodar allt videomaterial i förväg? Normalt brukar man ju skickas ner till en lägre kvalitetsinställning (lägre upplösning) om inte bandbredden räcker. Det är inte det Netflix påstår att de gör, utan att de sänker bitrate vid samma upplösning.

Det är ju inte så att de kodar video för alla sina tittare i realtid, det skulle aldrig deras CDN klara, och det skulle vara ett enormt slöseri av beräkningskraft.

Kvaliteten hoppar redan dynamiskt mellan olika kvalitetsnivåer beroende på uppkoppling. De har väl ett gäng nivåer färdigkodade, och väljer helt enkelt en nivå lägre som standard.

Skrivet av xinux:

Kvaliteten hoppar redan dynamiskt mellan olika kvalitetsnivåer beroende på uppkoppling. De har väl ett gäng nivåer färdigkodade, och väljer helt enkelt en nivå lägre som standard.

Har du sett att Netflix redan har olika kvalitetsnivåer med varierande bitrate vid samma upplösning? Jag har trott (killgissat) att de bara har olika upplösningar.

Skrivet av xinux:

Kvaliteten hoppar redan dynamiskt mellan olika kvalitetsnivåer beroende på uppkoppling. De har väl ett gäng nivåer färdigkodade, och väljer helt enkelt en nivå lägre som standard.

Självklart är det så här. De har väl ett antal färdigkodade standardformat och det de gjort nu är väl att byta till en lägre standard bara. Skulle ju vara helt orimligt om de satt och encodade on the fly.

Skrivet av pv2b:

Har du sett att Netflix redan har olika kvalitetsnivåer med varierande bitrate vid samma upplösning? Jag har trott (killgissat) att de bara har olika upplösningar.

De olika nivåerna varierar nog i upplösning, men de har säkert minst 2 olika kodningar vid 1080p

Är ju lätt att ändra bitrate när man själv streamar till tex twitch, så varför skulle inte Netflix kunna göra det?

Jag antar att de har en teknik som ökar kvaliten ju mer data som får överföras per tidsenhet, man ändrar alltså inte upplösningen utan laddar bara mer detaljer i bilden ju mer data som överförs per tidsenhet, då funkar systemet vid olika bandbredder men ger högre detaljnivå ju mer data som kan överföras per tidsenhet.
Det är ju i så fall ganska lätt att minska tiden data överförs per bild till 70 % av den verkligt tillgängliga tiden så har man sänkt bandbreddskraven med 30%
Bilden byggs alltså upp en detaljnivå i taget, på den gamla goda modemtiden så syntes ju detta väldigt tydligt när bilder växte fram i steg med olika detaljnivå.
Jag vet inte om bilden nedan funkar att länka in men öppna den separat om den inte syns, den börjar i vilket fall som väldigt grov men ökar sedan detaljnivån allt eftersom den växer fram och den ändrar inte bildstorleken, på det sättet går det ganska lätt att reglera datamängden utan att behöva röra originalfilerna eller ändra upplösningen och ja jag vet att det är en bild men det är för att illustrera en metod.

Skrivet av pv2b:

Har du sett att Netflix redan har olika kvalitetsnivåer med varierande bitrate vid samma upplösning? Jag har trott (killgissat) att de bara har olika upplösningar.

Det behöver inte stämma, kan mycket väl vara så att dom har flera versioner vid samma upplösning. Nu vill man iof minimera detta, då det såklart är billigare att ha så få versioner som möjligt. Netflix är ju väldigt duktiga på att dela med sig på sin tech blog, borde gå att hitta information där. Men det är ganska troligt att dom har flera steg för t ex 1080p.

Skrivet av pv2b:

Det är inte det Netflix påstår att de gör, utan att de sänker bitrate vid samma upplösning.

Har du någon källa på detta? Jag hittar inget om att de lovat att upplösningen kommer vara samma.

Behöver ju inte vara svårare än så att dom tar bort det högsta steget i stegen.

Senast redigerat 2020-03-20 10:44

De plockar väl bara bort några kvaliteter ur abr-stegen. Hur enkelt som helst. Behövs inte kodas om nånting

Skrivet av CubaCola:

Är ju lätt att ändra bitrate när man själv streamar till tex twitch, så varför skulle inte Netflix kunna göra det?

Du är en person som streamar en sak; Netflix streamar 140 miljoner timmar video per dag. Att koda om det i realtid vore galet krävande.

Skrivet av Nioreh83:

De plockar väl bara bort några kvaliteter ur abr-stegen. Hur enkelt som helst. Behövs inte kodas om nånting

Fungerar på samma sätt när du sitter på en dålig uppkoppling och att klienten begär en lägre bitrate. Jag har för mig att det kallas för transrating.

Edit: https://en.wikipedia.org/wiki/Video_optimization#Transrating

Senast redigerat 2020-03-20 21:09

"According to Netflix, the vast number of codec and bitrate combinations can mean having to encode the same title 120 different times before it can be delivered to all streaming platforms."
https://en.wikipedia.org/wiki/Technical_details_of_Netflix

Så en lägre bitstream än "vanlig" finns nog att leverera i de flesta fall.

Sänka fpsen med 30%.. för ögat ser ju bara 24 höhö