Jinsi tulivyoharakisha usimbaji video kwa mara nane

Jinsi tulivyoharakisha usimbaji video kwa mara nane

Kila siku, mamilioni ya watazamaji hutazama video kwenye Mtandao. Lakini ili video ipatikane, haipaswi kupakiwa kwenye seva tu, bali pia kuchakatwa. Kwa kasi hii hutokea, ni bora kwa huduma na watumiaji wake.

Jina langu ni Askar Kamalov, mwaka mmoja uliopita nilijiunga na timu ya teknolojia ya video ya Yandex. Leo nitawaambia kwa ufupi wasomaji wa Habr kuhusu jinsi, kwa kusawazisha mchakato wa encoding, tuliweza kuharakisha kwa kiasi kikubwa utoaji wa video kwa mtumiaji.

Chapisho hili litakuwa la kupendeza kwa wale ambao hawajafikiria hapo awali juu ya kile kinachotokea chini ya kifuniko cha huduma za video. Katika maoni unaweza kuuliza maswali na kupendekeza mada kwa machapisho yajayo.

Maneno machache kuhusu kazi yenyewe. Yandex haikusaidia tu kutafuta video kwenye tovuti zingine, lakini pia huhifadhi video kwa huduma zake. Iwe ni programu asili au mechi ya michezo hewani, filamu kwenye KinoPoisk au video kwenye Zen na Habari - yote haya yanapakiwa kwenye seva zetu. Ili watumiaji kutazama video, inahitaji kutayarishwa: kubadilishwa hadi umbizo linalohitajika, kuunda onyesho la kukagua, au hata kuendeshwa kupitia teknolojia. DeepHD. Faili ambayo haijatayarishwa inachukua nafasi tu. Aidha, hatuzungumzii tu juu ya matumizi bora ya vifaa, lakini pia kuhusu kasi ya utoaji wa maudhui kwa watumiaji. Mfano: rekodi ya wakati muhimu wa mechi ya hoki inaweza kutafutwa ndani ya dakika moja baada ya tukio lenyewe.

Usimbaji unaofuatana

Kwa hivyo, furaha ya mtumiaji inategemea sana jinsi video inavyopatikana haraka. Na hii imedhamiriwa hasa na kasi ya kupitisha msimbo. Wakati hakuna mahitaji madhubuti ya kasi ya upakiaji wa video, basi hakuna shida. Unachukua faili moja, isiyoweza kugawanywa, kuibadilisha na kuipakia. Mwanzoni mwa safari yetu, hivi ndivyo tulivyofanya kazi:

Jinsi tulivyoharakisha usimbaji video kwa mara nane

Mteja hupakia video kwenye hifadhi, sehemu ya Kichanganuzi hukusanya taarifa za meta na kuhamisha video hadi kwa kipengele cha Mfanyakazi kwa ajili ya uongofu. Hatua zote zinafanywa kwa mlolongo. Katika kesi hii, kunaweza kuwa na seva nyingi za encoding, lakini moja tu ni busy kusindika video maalum. Rahisi, mchoro wa uwazi. Hapa ndipo faida zake zinaisha. Mpango huu unaweza tu kuongezwa kwa wima (kutokana na ununuzi wa seva zenye nguvu zaidi).

Usimbaji mfuatano wenye matokeo ya kati

Ili kulainisha kwa namna fulani kusubiri kwa uchungu, tasnia ilikuja na chaguo la usimbaji haraka. Jina linapotosha, kwa sababu kwa kweli, uwekaji msimbo kamili hutokea kwa mfululizo na huchukua muda mrefu tu. Lakini na matokeo ya kati. Wazo ni hili: tayarisha na uchapishe toleo la video lenye ubora wa chini haraka iwezekanavyo, na kisha matoleo ya ubora wa juu.

Kwa upande mmoja, video inapatikana haraka. Na ni muhimu kwa matukio muhimu. Lakini kwa upande mwingine, picha inakuwa blurry, na hii inakera watazamaji.

Inageuka kuwa hauitaji tu kusindika video haraka, lakini pia kudumisha ubora wake. Hivi ndivyo watumiaji wanatarajia kutoka kwa huduma ya video sasa. Inaweza kuonekana kuwa inatosha kununua seva zinazozalisha zaidi (na kuziboresha mara kwa mara zote mara moja). Lakini hii ni mwisho, kwa sababu daima kuna video ambayo itafanya hata vifaa vya nguvu zaidi kupunguza kasi.

Usimbaji sambamba

Ni bora zaidi kugawanya shida ngumu katika nyingi zisizo ngumu na kuzitatua kwa usawa kwenye seva tofauti. Hii ni MapReduce kwa video. Katika kesi hii, hatuzuiliwi na utendaji wa seva moja na tunaweza kuongeza usawa (kwa kuongeza mashine mpya).

Kwa njia, wazo la kugawanya video katika vipande vidogo, kusindika kwa sambamba na kuziunganisha pamoja sio siri. Unaweza kupata marejeleo mengi ya mbinu hii (kwa mfano, kwenye HabrΓ© ninapendekeza chapisho kuhusu mradi huo DistVIDc) Lakini hii haifanyi iwe rahisi kwa ujumla, kwa sababu huwezi tu kuchukua suluhisho tayari na kuijenga ndani ya nyumba yako. Tunahitaji marekebisho kwa miundombinu yetu, video zetu na hata mzigo wetu. Kwa ujumla, ni rahisi kuandika yako mwenyewe.

Kwa hivyo, katika usanifu mpya, tuligawanya kizuizi cha Mfanyakazi wa monolithic na uandishi wa mlolongo katika Segmenter ya huduma ndogo, Tcoder, Combiner.

Jinsi tulivyoharakisha usimbaji video kwa mara nane

  1. Segmenter hugawanya video katika vipande vya takriban sekunde 10. Vipande vinajumuisha GOP moja au zaidi (kikundi cha picha) Kila GOP ni huru na imesimbwa kando ili iweze kusimbuwa bila kurejelea fremu kutoka kwa GOP zingine. Hiyo ni, vipande vinaweza kuchezwa kwa kujitegemea. Upasuaji huu hupunguza muda wa kusubiri, na kuruhusu uchakataji kuanza mapema.
  2. Tcoder huchakata kila kipande. Inachukua jukumu kutoka kwa foleni, kupakua kipande kutoka kwa hifadhi, kukisimba katika maazimio tofauti (kumbuka kuwa kichezaji kinaweza kuchagua toleo kulingana na kasi ya muunganisho), kisha kurejesha matokeo kwenye hifadhi na kuashiria kipande kama kimechakatwa. katika hifadhidata. Baada ya kuchakata vipande vyote, Tcoder hutuma kazi ili kutoa matokeo ya sehemu inayofuata.
  3. Combiner hukusanya matokeo pamoja: hupakua vipande vyote vilivyotengenezwa na Tcoder, hutengeneza mitiririko kwa maazimio tofauti.

Maneno machache kuhusu sauti. Codec maarufu ya sauti ya AAC ina kipengele kisichopendeza. Ikiwa utasimba vipande kando, basi hautaweza kuziunganisha bila mshono. Mabadiliko yataonekana. Kodeki za video hazina tatizo hili. Kinadharia, unaweza kutafuta suluhu ngumu ya kiufundi, lakini mchezo huu haufai mshumaa bado (sauti ina uzito mdogo kuliko video). Kwa hiyo, ni video pekee iliyosimbwa kwa sambamba, na wimbo mzima wa sauti unachakatwa.

Matokeo

Shukrani kwa usindikaji sambamba wa video, tumepunguza kwa kiasi kikubwa ucheleweshaji kati ya video kupakiwa kwetu na kupatikana kwa watumiaji. Kwa mfano, hapo awali inaweza kuchukua saa mbili kuunda matoleo kadhaa kamili ya ubora tofauti kwa filamu ya FullHD inayochukua saa moja na nusu. Sasa hii yote inachukua dakika 15. Zaidi ya hayo, kwa usindikaji sambamba, tunaunda toleo la ubora wa juu hata kwa kasi zaidi kuliko toleo la ubora wa chini na mbinu ya zamani ya matokeo ya kati.

Na jambo moja zaidi. Kwa mbinu ya zamani, labda hakukuwa na seva za kutosha, au walikuwa wavivu bila kazi. Coding sambamba inakuwezesha kuongeza sehemu ya kuchakata chuma. Sasa kundi letu la seva zaidi ya elfu moja huwa na shughuli fulani kila wakati.

Kwa kweli, bado kuna nafasi ya kuboresha. Kwa mfano, tunaweza kuokoa muda muhimu ikiwa tutaanza kuchakata vipande vya video kabla ya kufika kwetu kwa ukamilifu. Kama wanasema, zaidi ya kuja.

Andika katika maoni ni kazi gani katika uwanja wa kufanya kazi na video ungependa kusoma kuhusu.

Viungo muhimu kwa uzoefu wa wafanyikazi wa tasnia

Chanzo: mapenzi.com

Kuongeza maoni