Sut wnaethon ni gyflymu amgodio fideo wyth gwaith

Sut wnaethon ni gyflymu amgodio fideo wyth gwaith

Bob dydd, mae miliynau o wylwyr yn gwylio fideos ar y Rhyngrwyd. Ond er mwyn i'r fideo ddod ar gael, rhaid nid yn unig ei uwchlwytho i'r gweinydd, ond hefyd ei brosesu. Po gyflymaf y bydd hyn yn digwydd, y gorau i'r gwasanaeth a'i ddefnyddwyr.

Fy enw i yw Askar Kamalov, flwyddyn yn ôl ymunais â thîm technoleg fideo Yandex. Heddiw byddaf yn dweud yn fyr wrth ddarllenwyr Habr sut, trwy gyfochrog â'r broses amgodio, y llwyddwyd i gyflymu'r broses o gyflwyno fideo i'r defnyddiwr yn sylweddol.

Bydd y swydd hon o ddiddordeb yn bennaf i'r rhai nad ydynt wedi meddwl o'r blaen am yr hyn sy'n digwydd o dan gwfl gwasanaethau fideo. Yn y sylwadau gallwch ofyn cwestiynau ac awgrymu pynciau ar gyfer postiadau yn y dyfodol.

Ychydig eiriau am y dasg ei hun. Mae Yandex nid yn unig yn eich helpu i chwilio am fideos ar wefannau eraill, ond hefyd yn storio fideos ar gyfer ei wasanaethau ei hun. Boed yn rhaglen wreiddiol neu’n gêm chwaraeon ar yr awyr, ffilm ar KinoPoisk neu fideos ar Zen a Newyddion – mae hyn i gyd yn cael ei uwchlwytho i’n gweinyddion. Er mwyn i ddefnyddwyr wylio'r fideo, mae angen ei baratoi: ei drosi i'r fformat gofynnol, creu rhagolwg, neu hyd yn oed redeg trwy dechnoleg DeepHD. Mae ffeil heb ei pharatoi yn cymryd lle. Ar ben hynny, rydym yn siarad nid yn unig am y defnydd gorau posibl o galedwedd, ond hefyd am gyflymder cyflwyno cynnwys i ddefnyddwyr. Enghraifft: gellir chwilio am recordiad o foment dyngedfennol gêm hoci o fewn munud i'r digwyddiad ei hun.

Amgodio dilyniannol

Felly, mae hapusrwydd y defnyddiwr yn dibynnu i raddau helaeth ar ba mor gyflym y bydd y fideo ar gael. Ac mae hyn yn cael ei bennu'n bennaf gan y cyflymder trawsgodio. Pan nad oes unrhyw ofynion llym ar gyfer cyflymder uwchlwytho fideo, yna nid oes unrhyw broblemau. Rydych chi'n cymryd un ffeil anwahanadwy, yn ei throsi, ac yn ei huwchlwytho. Ar ddechrau ein taith, dyma sut y bu i ni weithio:

Sut wnaethon ni gyflymu amgodio fideo wyth gwaith

Mae'r cleient yn uwchlwytho'r fideo i'r storfa, mae'r gydran Analyzer yn casglu gwybodaeth meta ac yn trosglwyddo'r fideo i'r gydran Gweithiwr i'w throsi. Perfformir pob cam yn olynol. Yn yr achos hwn, gall fod llawer o weinyddion amgodio, ond dim ond un sy'n brysur yn prosesu fideo penodol. Diagram syml, tryloyw. Dyma lle mae ei fanteision yn dod i ben. Dim ond yn fertigol y gellir graddio'r cynllun hwn (oherwydd prynu gweinyddwyr mwy pwerus).

Amgodio dilyniannol gyda chanlyniad canolradd

Er mwyn lleddfu'r aros poenus rywsut, dyfeisiodd y diwydiant opsiwn codio cyflym. Mae'r enw yn gamarweiniol, oherwydd mewn gwirionedd, mae codio llawn yn digwydd yn ddilyniannol ac yn cymryd cymaint o amser. Ond gyda chanlyniad canolradd. Y syniad yw hyn: paratowch a chyhoeddwch fersiwn cydraniad isel o'r fideo cyn gynted â phosibl, a dim ond wedyn fersiynau cydraniad uwch.

Ar y naill law, mae fideo ar gael yn gyflymach. Ac mae'n ddefnyddiol ar gyfer digwyddiadau pwysig. Ond ar y llaw arall, mae'r llun yn troi allan yn aneglur, ac mae hyn yn cythruddo gwylwyr.

Mae'n ymddangos bod angen i chi nid yn unig brosesu'r fideo yn gyflym, ond hefyd cynnal ei ansawdd. Dyma beth mae defnyddwyr yn ei ddisgwyl gan wasanaeth fideo nawr. Gall ymddangos ei fod yn ddigon i brynu'r gweinyddwyr mwyaf cynhyrchiol (a'u huwchraddio i gyd yn rheolaidd ar unwaith). Ond mae hwn yn ddiweddglo marw, oherwydd mae fideo bob amser a fydd yn gwneud i hyd yn oed y caledwedd mwyaf pwerus arafu.

Amgodio cyfochrog

Mae'n llawer mwy effeithlon rhannu problem gymhleth yn nifer o rai llai cymhleth a'u datrys ochr yn ochr ar wahanol weinyddion. Dyma MapReduce ar gyfer fideo. Yn yr achos hwn, nid ydym wedi'n cyfyngu gan berfformiad un gweinydd a gallwn raddio'n llorweddol (trwy ychwanegu peiriannau newydd).

Gyda llaw, nid yw'r syniad o rannu fideos yn ddarnau bach, eu prosesu yn gyfochrog a'u gludo gyda'i gilydd yn gyfrinach. Gallwch ddod o hyd i lawer o gyfeiriadau at y dull hwn (er enghraifft, ar Habré rwy'n argymell post am y prosiect DistVIDc). Ond nid yw hyn yn ei gwneud hi'n haws ar y cyfan, oherwydd ni allwch gymryd datrysiad parod a'i adeiladu yn eich cartref. Mae angen addasu ein seilwaith, ein fideo a hyd yn oed ein llwyth. Yn gyffredinol, mae'n haws ysgrifennu'ch un chi.

Felly, yn y bensaernïaeth newydd, fe wnaethom rannu'r bloc Gweithiwr monolithig gyda chodio dilyniannol yn ficrowasanaethau Segmenter, Tcoder, Combiner.

Sut wnaethon ni gyflymu amgodio fideo wyth gwaith

  1. Mae Segmenter yn torri'r fideo yn ddarnau o tua 10 eiliad. Mae darnau yn cynnwys un GOP neu fwy (grŵp o luniau). Mae pob GOP yn annibynnol ac wedi'i amgodio ar wahân fel y gellir ei ddadgodio heb gyfeirio at fframiau o GOPs eraill. Hynny yw, gellir chwarae darnau yn annibynnol ar ei gilydd. Mae'r darnio hwn yn lleihau hwyrni, gan ganiatáu i brosesu ddechrau'n gynharach.
  2. Mae Tcoder yn prosesu pob darn. Mae'n cymryd tasg o'r ciw, yn lawrlwytho darn o'r storfa, yn ei amgodio i wahanol benderfyniadau (cofiwch y gall y chwaraewr ddewis fersiwn yn seiliedig ar gyflymder y cysylltiad), yna mae'n rhoi'r canlyniad yn ôl yn y storfa ac yn nodi'r darn fel y'i proseswyd yn y gronfa ddata. Ar ôl prosesu'r holl ddarnau, mae Tcoder yn anfon y dasg i gynhyrchu canlyniadau ar gyfer y gydran nesaf.
  3. Mae Combiner yn casglu'r canlyniadau gyda'i gilydd: yn lawrlwytho'r holl ddarnau a wneir gan Tcoder, yn cynhyrchu ffrydiau ar gyfer gwahanol benderfyniadau.

Ychydig eiriau am sain. Mae gan y codec sain AAC mwyaf poblogaidd nodwedd annymunol. Os ydych chi'n amgodio darnau ar wahân, yna ni fyddwch chi'n gallu eu gludo gyda'i gilydd yn ddi-dor. Bydd trawsnewidiadau yn amlwg. Nid oes gan codecau fideo y broblem hon. Yn ddamcaniaethol, gallwch chwilio am ateb technegol cymhleth, ond nid yw'r gêm hon yn werth y gannwyll eto (mae sain yn pwyso'n sylweddol llai na fideo). Felly, dim ond y fideo sydd wedi'i amgodio yn gyfochrog, ac mae'r trac sain cyfan yn cael ei brosesu.

Canfyddiadau

Diolch i brosesu fideo cyfochrog, rydym wedi lleihau'n sylweddol yr oedi rhwng llwytho fideo i ni a bod ar gael i ddefnyddwyr. Er enghraifft, yn flaenorol gallai gymryd dwy awr i greu sawl fersiwn llawn o wahanol ansawdd ar gyfer ffilm FullHD sy'n para awr a hanner. Nawr mae hyn i gyd yn cymryd 15 munud. Ar ben hynny, gyda phrosesu cyfochrog, rydym yn creu fersiwn cydraniad uchel hyd yn oed yn gyflymach na fersiwn cydraniad isel gyda'r hen ddull canlyniad canolradd.

Ac un peth arall. Gyda'r hen ddull, naill ai nid oedd digon o weinyddion, neu roeddent yn segur heb dasgau. Mae codio cyfochrog yn caniatáu ichi gynyddu'r gyfran o ailgylchu haearn. Nawr mae ein clwstwr o fwy na mil o weinyddion bob amser yn brysur gyda rhywbeth.

Mewn gwirionedd, mae lle i wella o hyd. Er enghraifft, gallwn arbed amser sylweddol os byddwn yn dechrau prosesu darnau o'r fideo cyn iddo gyrraedd atom yn ei gyfanrwydd. Fel maen nhw'n dweud, mwy i ddod.

Ysgrifennwch yn y sylwadau pa dasgau yn y maes gweithio gyda fideo yr hoffech chi ddarllen amdanynt.

Cysylltiadau defnyddiol â phrofiad cydweithwyr yn y diwydiant

Ffynhonnell: hab.com

Ychwanegu sylw