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

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Jul 2017

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.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Nov 2018

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

Moderkort: Gigabyte X570 Aorus Master | CPU: AMD Ryzen R9 3900X | CPU-kylare: be quiet! Dark Rock Pro 4 | RAM: Corsair Vengeance 32 GB (4x8) DDR4-3000 CL15 LPX | GPU: Palit RTX 2080 Ti 11 GB GamingPro OC | SSD: Samsung 970 EVO Plus 1 TB NVMe + Kingston A400 480 GB + Samsung QVO860 1 TB | PSU: EVGA SuperNOVA G2 1000 W Gold | Chassi: be quiet! Silent Base 801 | Skärm: BenQ PD3200U @ 3840x2160 + ASUS ROG Strix XG32VQ @ 2560x1440 | Tangentbord: Corsair K68 RGB Cherry MX Red | Mus: Logitech MX Master 2S

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2002

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

Trädvy Permalänk
Medlem
Registrerad
Apr 2019

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

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Jul 2017
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!

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Jul 2017
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...

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Apr 2009

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.

I think I'll have myself a beer...

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Jul 2017
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.

Trädvy Permalänk
Medlem
Plats
Hudiksvall
Registrerad
Jul 2009

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.

Chassi: DAN A4 | MB: ASUS VI Impact | GPU: Titan X | CPU: 4770K | RAM: 2x8GB Corsair Vengeance | SSD: Samsung 830 512GB | Skärm: ASUS Swift IPS

Trädvy Permalänk
Hedersmedlem
Plats
Stockholm
Registrerad
Jul 2017
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.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2012
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.

8700K 5Ghz | 32GB 3200Mhz | 2080Ti 11GB | Phanteks Enthoo | Asus PG27AQ

Trädvy Permalänk
Medlem
Plats
Hudiksvall
Registrerad
Jul 2009
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

Chassi: DAN A4 | MB: ASUS VI Impact | GPU: Titan X | CPU: 4770K | RAM: 2x8GB Corsair Vengeance | SSD: Samsung 830 512GB | Skärm: ASUS Swift IPS

Trädvy Permalänk
Medlem
Registrerad
Okt 2018

Ä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?

I5 9600k@stock / Cooler Master Evo 212 / Gigabyte Z390 Gaming X / Corsair Vengeance LPX 16GB DDR4 3000MHz / MSI RTX2070 Gaming Z / EVGA 550 BQ / Asus VG27BQ 27" 165Hz

Ryzen 5 3600@stock / Asus Rog Strix X570-E Gaming / Corsair Vengeance RGB Pro 16GB 3600MHz CL18 / Asus Rog Strix Geforce RTX 2060 OC / BeQuiet Pure Power 11 600W / Asus VG278Q 27" 144Hz

Ryzen 7 2700 @ Stock / Asus Prime B450 Plus / HyperX Predator 16GB 3200MHz CL16 / XFX RX480

Trädvy Permalänk
Rekordmedlem
Plats
Salstad
Registrerad
Feb 2009

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.

Ryzen 5 2400G, Asus ROG STRIX B350-F Gaming, 500GB Samsung 970EVO NVMe M.2 och en väldig massa masslagring. Seasonic Focus+ Gold 650W, Antec P 180 med Schyte o Sharkoon fläktar via en t-balancer, Tittar på en Acer ET430Kbmiippx 43" 4K
Främre ljudkanalerna återges via Behringer DCX2496, högtalare Truth B3031A, Truth B2092A Har också Oscilloskop, mätmikrofon och en Colorimeter.

Trädvy Permalänk
Medlem
Registrerad
Okt 2005
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.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2007

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

Core i7 7700K | Titan X (Pascal) | MSI 270I Gaming Pro Carbon | 32 GiB Corsair Vengeance LPX @3000MHz | Samsung 960 EVO 1TB

Trädvy Permalänk
Hedersmedlem
Plats
Uppsala
Registrerad
Jul 2001
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.

X370 Taichi / R7 1700 @ 3.75 GHz 1.2 V / 48 GB 3200 MHz CL14 / MSI GTX 1070 Gaming, OC / Samsung 960 EVO 500 GB / Corsair RM650x
LG G6 (H870)

Trädvy Permalänk
SweClockers
Andreas Dimestam
Plats
Stockholm
Registrerad
Apr 2002
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

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004

"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.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jun 2008

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