Labākais veids, kā pārvaldīt videoklipus mērogā

Mūsdienu pasaulē videoklipi ir kļuvuši par vienkāršu veidu, kā izskaidrot jebkuru ideju, kā arī izprast jebkuru tēmu. Ir pierādījies, ka video prasa vairāk patērētāju uzmanības nekā jebkurš cits informācijas nesējs. Cilvēkiem patīk piekļūt videoklipiem jebkurā vietā un laikā, un topošajiem uzņēmumiem ir izaicinājums ne tikai piegādāt kvalitatīvu saturu, bet arī sniegt labu skatīšanās pieredzi klientiem.

Uzņēmuma iepazīstināšana -

Mēs esam 3 lakh pārbaudītu ārstu platforma, kas ir lielākie valstī. Kā strauji mainīgs uzņēmums mēs daudz eksperimentējam ar produktu un tajā pašā laikā esiet uzmanīgi, lai visiem piegādātu kvalitatīvu produktu. Nesen mēs lietotājiem ļāvām augšupielādēt ķirurģisko procedūru videoklipus utt., Dalīties ar atklājumiem un meklēt ieteikumus no kolēģiem ārstiem.

Lielākajai daļai mūsu lietotāju, atrodoties ceļā, ir minimāla uztveršana ar ātrāku interneta ātrumu, un tas ir izaicinājums, piegādājot smagu datu saturu, piemēram, videoklipus.

Mēs uzskatījām par diezgan acīmredzamu HLS protokola izmantošanu video piegādē, jo tas tiek plaši atbalstīts, izstrādāts Apple un tiek izmantots daudzos lielos uzņēmumos, piemēram, Facebook. HLS nozīmē HTTP tiešraides straumēšanu. Tas ir multivides straumēšanas protokols, lai piegādātu video un audio saturu. MP4 video tiek sadalīts mazos segmentos, kas parasti ir 10 sekundes, un katram segmentam tiek izveidoti arī vairāki video kvalitātes segmenti, kurus var lejupielādēt atskaņošanai, pamatojoties uz pieejamo interneta joslas platumu.

Tāpēc katru reizi, kad spēlētājs atskaņo HLS formāta video, tas var pieprasīt video segmentu, pamatojoties uz pieejamo joslas platumu, un nepārtraukti straumēt videoklipu, nodrošinot lietotājiem vienmērīgu pieredzi. Vienā brīdī lietotāji var skatīties zemas izšķirtspējas video, un nākamajā brīdī tas var pārslēgties uz augstāku izšķirtspēju, tiklīdz ierīce atrodas lielāka joslas platuma tīkla diapazonā.

Tālāk ir norādītas izšķirtspējas, kuras mēs izmantojām mūsu lietojuma gadījumā, izņemot sākotnējo video izšķirtspēju -

Ģenerējamā video izšķirtspēja

Uzdevums bija pārveidot augšupielādētos videoklipus vajadzīgajā formātā, kā arī ģenerēt sīktēlu video vietturim. Ir daudzi pakalpojumu sniedzēji, kas nodrošina video pārveidi un satura piegādi, taču galvenā problēma ir tā, ka tie ir pieejami līdz noteiktam brīdim, un, pieaugot uzņēmumam, jums ir nepieciešams risinājums, kas nav apgrūtinājums jūsu kabatai. AWS MediaConvert un S3 ir rīki, kurus mēs izvēlamies pārveidot un piegādāt mūsu video nesējus. Izmantojot zemāk apskatīto risinājumu, mēs varam samazināt savas izmaksas par 90 procentiem, kas ir diezgan nozīmīgi jebkura mēroga uzņēmumiem. Izlasiet rakstu, ja vēlaties uzzināt, kā mēs risinājumu noteicām.

Sākotnējā pieeja

Tā vietā, lai izveidotu iekšēju risinājumu, mēs nolēmām izmantot trešo personu pakalpojumus, kuriem Cloudinary ir piemērots mūsu lietošanas gadījumam. Tas tiešraidē nodrošina video pārveidošanas pakalpojumu, kas patiešām palīdzēja iegūt mums vajadzīgo pārveidi, un kopējais patērētais laiks arī bija ļoti mazāks.

Attīstība notika ātrāk, jo mums nav jāuztraucas par pārveidi. Ir jāaugšupielādē video, jāizvēlas vajadzīgā transformācija, un pārējo veiks Cloudinary. Sākotnēji Cloudinary bija mūsu budžeta ietvaros, taču, tā kā šī funkcija sāka vilkties, vairāk lietotāju sāka augšupielādēt videoklipus. Šis pieaugums palielināja summu, ko mēs iztērējām Cloudinary, un bija laiks meklēt citas iespējas.

Mūsu eksperimenti

Pirmkārt, mēs pārbaudījām slaveno atvērtā koda bibliotēku - ffmpeg, kas spēj veikt mums vajadzīgo video pārveidi. Mums bija divas iespējas, kā izmantot ffmpeg bibliotēku - izmantojiet Mākoņa funkcijas vai izmantojiet kādu no GMP jau darbojošos VM instanci (Google Cloud Platform).

Tā kā viss process notiek pēc pieprasījuma modeļa, pēdējā izvēle tika noraidīta. Mākoņu funkciju pamatā ir skaitļošanas pēc pieprasījuma modelis, kas nozīmē, ka resursus iegūsim pēc nepieciešamības, neietekmējot citus pakalpojumus. Tā kā tas ir pieprasīts, mums nav jāmaksā servera izmaksas, kad tas atrodas dīkstāvē.

Mākoņu funkcijas ir patiešām viegli lietojamas un dod iespēju rakstīt kodu divās populārākajās valodās - mezglā un python. Mēs nolēmām doties ar pitonu, jo mums ir patīkama paradigma, jo mūsu kaudze atrodas pitonā. Atkarību instalēšana ir patiešām vienkārša, jums tas vienkārši jāpiemin failā rights.txt un jūs esat iestatīts.

Mēs saņēmām skriptu, kas darbojas mākoņa funkcijā, kur vispirms lejupielādējam video no mākoņa krātuves, pārveidojam to vajadzīgajā formātā un pārsūtām atpakaļ uz mākoņa krātuvi straumēšanai.

Bet bija nozveja. Mēs lietotājiem ļāvām augšupielādēt video līdz 100 MB, un šāda lieluma mākoņa funkcijas video apstrāde prasīja daudz laika, un laika ierobežojuma (540 sekundes) dēļ tas beidzas pirms visa procesa pabeigšanas. Aizstāvībā mēs iepriekš neesam domājuši par šo scenāriju.

Izpētījis citas iespējas un daudz pētījumu, AWS MediaConvert izskatījās daudzsološs. Darbs ar MediaConvert bija sarežģīts, jo tas dod daudz iespēju pielāgot pārveidi, un cilvēks šajā situācijā var viegli pazust (sabojāts pēc izvēles). Bet pēc kāda laika apskatīšanas mēs saņēmām veidni, kas nepieciešama mūsu vēlamajai pārveidošanai. (pievienojiet veidni)

Visa mūsu plūsma izskatījās kaut kas līdzīgs -

Mēs augšupielādējam videoklipu S3 spainī, kas savukārt aktivizē Lambda funkciju. Lambdā mēs izdomājam parametrus, kas nepieciešami MediaConvert ievadīšanai, izmantojot tikai ffmpeg. Pēc visu parametru aprēķināšanas mēs iesniedzam AWS MediaConvert pieprasījumu pārveidot mūsu video. Lai saņemtu paziņojumu par pārveidošanas pabeigšanu, var izveidot MediaConvert iesniegtā mākoņa novērošanas notikumu par darba maiņu no “progresē” uz “pabeigts”, kas savukārt iedarbina lambda funkciju. Iedarbinātā lambda funkcija var vai nu veikt api zvanu, vai veikt db atjauninājumu, pamatojoties uz jūsu projekta iespējamību.

Īsumā :

AWS risinājums darbojās kā šarms, un tas bija patiešām ātrs. Tas var izskatīties kā liels darbs, bet tas ir tā vērts, ja jums ir nepieciešams mērogs.

Šī risinājuma izmantošanas priekšrocības -

  • Mēs izmantojam S3, lai saglabātu un piegādātu mūsu multivides saturu, kas ir arī ļoti pielāgojams un pieejams arī par pieņemamu cenu.
  • AWS MediaConvert ir patiešām ātrs un nodrošina funkcionalitāti, lai uzturētu vairākas rindas, lai iesniegtu darbus transformācijai. Tāpēc jums nav jāuztraucas par pēkšņu pieprasījumu apstrādi saistībā ar videoklipiem. Arī cenas ir patiešām ekonomiskas, par katru mēnesi nav jāmaksā, un jums ir jāmaksā tikai par izmantotajiem pakalpojumiem.
  • AWS Lambda pamatā ir Computation on Demand, par kuru mēs jau runājām iepriekš. Neatkarīgi no tā, AWS dod jums nelielu brīvu lambda piesaukšanu un Lambda funkcijas CPU laiku mēnesī, kas ir patiešām lieliski, un pat lietošanā, kas pārsniedz bezmaksas līmeņa cenu noteikšanu, neliek slogu jūsu kabatā.

Problēmas, ar kurām nākas saskarties AWS izvietošanas laikā:

  • Vienmēr atcerieties, ka AWS piedāvā pakalpojumus, kuru pamatā ir reģioni, izņemot dažus, piemēram, S3, kas ir pieejams globālā līmenī. Izmantojiet pakalpojumus tajā pašā reģionā, pretējā gadījumā, iespējams, nevarēsit noķert notikumus vai iedarbināt lambda funkcijas.
  • Sniedziet nepieciešamo atļauju IAM lomai par izmantotajiem pakalpojumiem.
  • Kā minēts iepriekš, video augšupielāde S3 spainī aktivizē lambda funkciju, kurā mēs aizpildām nepieciešamo pārveidošanas informāciju, piemēram, iegūto videoklipu izšķirtspēju, bitu pārraides ātrumu utt., Un šai vērtībai jums jāatrod augšupielādētā video meta dati, piemēram, augstums. , platums un bitrate. Jums ir jāizmanto kāda video apstrādes bibliotēka, piemēram, ffmpeg, lai iegūtu šo vērtību, kas nav iepriekš ielādēta konteinerā, kurā darbojas mūsu lambda, jo lambda darbojas vienā vai vairākos konteineros, kas tiek izveidoti un izdzēsti pēc pieprasījuma kā pieprasījumi.
  • Atšķirībā no Google mākoņa funkcijām, kur jūs vienkārši varat pievienot bibliotēkas nosaukumu rights.txt, un tās tiks apstrādātas ar pārējo, AWS lambda jums ir jāizveido zip fails no visām bibliotēkām un bumbieri, kas tiek izmantoti lambda funkcijā. Pēc pētījumu veikšanas mēs noskaidrojām, ka mapē / tmp varat pievienot ffmpeg bināros failus un izmantot to savā funkcijā. Lai šeit iekļautu ffmpeg savā ceļa apmeklējumā un šeit izveidotu aws lambda izvietošanas paketes apmeklējumu.
  • Pārbaudot, mēs uzzinājām, ka videoklipi, kas uzņemti iOS ierīcēs, pēc pārveidošanas mainās no portreta uz ainavu (StackOverflow diskusija un AWS forums). Iemesls tam ir video, kas uzņemts iOS ierīcē, sākotnēji tiek saglabāts ainavas režīmā ar karodziņu video metadatos, kas spēlētājam liek pagriezt video atskaņošanas laikā. Veicot pārveidošanu, tiek zaudēts rotācijas identifikators, un tāpēc video tiek atskaņots ainavas režīmā un izskatās pagriezts.
  • Lai to vispirms pārvarētu, mēs identificējām šos videoklipus, izmantojot ffmpeg. Šiem videoklipiem ir “rotācijas” vērtība “meta matricā” no video meta datiem, ko var iegūt, izmantojot ffmpeg. Pēc tam pagrieziet šos videoklipus, pamatojoties uz doto pagriešanu, un tagad jums ir pagriezts video, kuru var viegli pārveidot, izmantojot iepriekš minēto paņēmienu.

Ja jums šķiet, ka šis raksts ir noderīgs, lūdzu, nospiediet tik daudz reižu, cik vēlaties. Lūdzu, nekautrējieties sazināties, ja jums ir nepieciešama palīdzība kādā no iepriekšminētajiem soļiem.