Hvernig við flýttum kóðun myndbanda um átta sinnum

Hvernig við flýttum kóðun myndbanda um átta sinnum

Á hverjum degi horfa milljónir áhorfenda á myndbönd á netinu. En til að myndbandið verði aðgengilegt þarf ekki aðeins að hlaða því upp á netþjóninn heldur einnig vinna úr því. Því hraðar sem þetta gerist, því betra fyrir þjónustuna og notendur hennar.

Ég heiti Askar Kamalov, fyrir ári síðan gekk ég til liðs við Yandex myndbandstækniteymi. Í dag mun ég segja lesendum Habr stuttlega frá því hvernig okkur tókst að flýta verulega fyrir afhendingu myndbands til notandans með því að samhliða kóðuninni.

Þessi færsla mun fyrst og fremst vekja áhuga þeirra sem hafa ekki áður hugsað um hvað gerist undir hettunni á myndbandsþjónustu. Í athugasemdunum geturðu spurt spurninga og lagt til efni fyrir framtíðarfærslur.

Nokkur orð um verkefnið sjálft. Yandex hjálpar þér ekki aðeins að leita að myndböndum á öðrum síðum heldur geymir það einnig myndbönd fyrir sína eigin þjónustu. Hvort sem það er frumlegt forrit eða íþróttaleikur í loftinu, kvikmynd á KinoPoisk eða myndbönd á Zen og News - öllu þessu er hlaðið upp á netþjóna okkar. Til þess að notendur geti horft á myndbandið þarf það að vera undirbúið: breytt í tilskilið snið, búið til forskoðun eða jafnvel keyrt í gegnum tækni DeepHD. Óundirbúin skrá tekur bara pláss. Þar að auki erum við ekki aðeins að tala um bestu notkun vélbúnaðar heldur einnig um hraða afhendingu efnis til notenda. Dæmi: hægt er að leita að upptöku af afgerandi augnabliki í íshokkíleik innan mínútu eftir viðburðinn sjálfan.

Röð kóðun

Þannig að hamingja notandans fer að miklu leyti eftir því hversu fljótt myndbandið verður aðgengilegt. Og þetta ræðst aðallega af umkóðun hraða. Þegar það eru engar strangar kröfur um upphleðsluhraða myndbands, þá eru engin vandamál. Þú tekur eina, óskiptanlega skrá, umbreytir henni og hleður henni upp. Í upphafi ferðalags okkar unnum við svona:

Hvernig við flýttum kóðun myndbanda um átta sinnum

Viðskiptavinurinn hleður upp myndbandinu á geymsluna, greiningarhlutinn safnar metaupplýsingum og flytur myndbandið yfir í Worker íhlutinn til umbreytingar. Öll stig eru framkvæmd í röð. Í þessu tilviki geta verið margir kóðunarþjónar, en aðeins einn er upptekinn við að vinna tiltekið myndband. Einföld, gagnsæ skýringarmynd. Þetta er þar sem kostir þess enda. Þetta kerfi er aðeins hægt að skala lóðrétt (vegna kaupa á öflugri netþjónum).

Röð kóðun með milliniðurstöðu

Til að jafna úr sársaukafullu biðinni einhvern veginn kom iðnaðurinn upp með hraðvirkan kóðunarvalkost. Nafnið er villandi, því í raun á sér stað fullkóðun í röð og tekur jafn langan tíma. En með milliárangri. Hugmyndin er þessi: undirbúa og birta lágupplausnarútgáfu af myndbandinu eins fljótt og auðið er, og aðeins þá útgáfur með hærri upplausn.

Annars vegar verður myndband aðgengilegt hraðar. Og það er gagnlegt fyrir mikilvæga viðburði. En á hinn bóginn verður myndin óskýr og það pirrar áhorfendur.

Það kemur í ljós að þú þarft ekki aðeins að vinna myndbandið fljótt heldur einnig að viðhalda gæðum þess. Þetta er það sem notendur búast við af myndbandsþjónustu núna. Það kann að virðast að það sé nóg að kaupa afkastamestu netþjónana (og uppfæra þá alla reglulega í einu). En þetta er blindgata, því það er alltaf til myndband sem gerir jafnvel öflugasta vélbúnaðinn hægari.

Samhliða kóðun

Það er mun skilvirkara að skipta flóknu vandamáli í mörg minna flókin og leysa þau samhliða á mismunandi netþjónum. Þetta er MapReduce fyrir myndband. Í þessu tilviki erum við ekki takmörkuð af frammistöðu eins netþjóns og getum skalað lárétt (með því að bæta við nýjum vélum).

Við the vegur, hugmyndin um að skipta myndböndum í litla bita, vinna þau samhliða og líma þau saman er ekkert leyndarmál. Þú getur fundið margar tilvísanir í þessa nálgun (til dæmis á Habré mæli ég með færslu um verkefnið DistVIDc). En þetta gerir þetta ekki auðveldara í heildina, því þú getur ekki bara tekið tilbúna lausn og byggt hana inn á heimilið þitt. Við þurfum aðlögun að innviðum okkar, myndbandi og jafnvel álagi. Almennt séð er auðveldara að skrifa sitt eigið.

Svo, í nýja arkitektúrnum, skiptum við einlita Worker blokkinni með raðkóðun í örþjónustur Segmenter, Tcoder, Combiner.

Hvernig við flýttum kóðun myndbanda um átta sinnum

  1. Segmenter skiptir myndbandinu niður í um það bil 10 sekúndur. Brot samanstanda af einum eða fleiri GOPs (hópur mynda). Hver GOP er óháð og kóðuð sérstaklega þannig að hægt er að afkóða hana án þess að vísa í ramma frá öðrum GOP. Það er að segja að hægt er að spila brot óháð hvort öðru. Þessi sundrun dregur úr leynd, sem gerir vinnslu kleift að hefjast fyrr.
  2. Tcoder vinnur úr hverju broti. Það tekur verkefni úr biðröðinni, hleður niður broti úr geymslunni, umritar það í mismunandi upplausnir (mundu að spilarinn getur valið útgáfu sem byggir á tengihraða), setur svo niðurstöðuna aftur í geymsluna og merkir brotið sem unnið í gagnagrunninum. Eftir að hafa unnið úr öllum brotunum sendir Tcoder verkefnið til að búa til niðurstöður fyrir næsta íhlut.
  3. Combiner safnar niðurstöðunum saman: hleður niður öllum brotum sem Tcoder gerir, býr til strauma fyrir mismunandi upplausnir.

Nokkur orð um hljóð. Vinsælasta AAC hljóðmerkið hefur óþægilegan eiginleika. Ef þú kóðar brot sérstaklega, þá muntu einfaldlega ekki geta límt þau saman óaðfinnanlega. Umskipti verða áberandi. Vídeó merkjamál hafa ekki þetta vandamál. Fræðilega séð geturðu leitað að flókinni tæknilausn, en þessi leikur er einfaldlega ekki þess virði enn sem komið er (hljóð vegur verulega minna en myndband). Þess vegna er aðeins myndbandið samhliða kóðað og allt hljóðlagið er unnið.

Niðurstöður

Þökk sé samhliða myndbandsvinnslu höfum við dregið verulega úr töfinni frá því að myndbandi er hlaðið upp til okkar þar til það er aðgengilegt notendum. Til dæmis, áður gat það tekið tvær klukkustundir að búa til nokkrar fullar útgáfur af mismunandi gæðum fyrir FullHD kvikmynd sem varir í eina og hálfa klukkustund. Nú tekur þetta allt 15 mínútur. Þar að auki, með samhliða vinnslu, búum við til háupplausnarútgáfu jafnvel hraðar en lágupplausnarútgáfu með gömlu milliniðurstöðuaðferðinni.

Og eitt enn. Með gömlu nálguninni voru annað hvort ekki nógu margir netþjónar eða þeir voru aðgerðalausir án verkefna. Samhliða kóðun gerir þér kleift að auka hlut endurvinnslu járns. Nú er þyrpingin okkar með meira en þúsund netþjónum alltaf upptekin við eitthvað.

Reyndar er enn hægt að gera betur. Við getum til dæmis sparað verulegan tíma ef við byrjum að vinna brot af myndbandinu áður en það berst okkur í heild sinni. Eins og þeir segja, meira að koma.

Skrifaðu í athugasemdir hvaða verkefni á sviði vinnu með myndbandi þú vilt lesa um.

Gagnlegar tenglar á reynslu samstarfsmanna í iðnaði

Heimild: www.habr.com

Bæta við athugasemd