Mai inteligentă manipulare video cu Cloudinary

În prezentul tutorial vom crea o aplicație web simplă pentru a manipula manipularea video pentru web, vom încărca un fișier video în cloud și vom efectua transcodarea în direct și transformările în timp real pentru a crea un fișier video personalizat, orice dispozitiv. Pentru aceasta, vom folosi serviciul Cloudinary pentru stocarea, transcodarea, transformarea și streamingul videoclipurilor utilizând în acest caz pluginul jQuery disponibil.

"Dezvoltați o aplicație web sau mobilă? Cloudinary este modul în care trebuie să gestionați imaginile dvs. "Acesta este un extras din pagina Despre site a site-ului Cloudinary. Și în acest tutorial, prin utilizarea exemplelor reale și înainte / după comparații, vom afla că acest lucru nu este valabil doar pentru imagini, ci și pentru videoclipuri.

În acest tutorial vom crea un instrument pentru încărcarea și transformarea videoclipurilor folosind URL-ul fișierului încărcat. Vom dezvolta doar partea JavaScript pentru a încărca și transforma fișierele video. Descărcați codul de însoțire de urmat.

Provocări atunci când se ocupă de multimedia

Cred că suntem de acord în mod sigur că imaginile și videoclipurile au un impact enorm în viața de astăzi și că, pe lângă dificultatea manipulării stocării și a livrării, dezvoltatorii trebuie să se ocupe de o mulțime de cheltuieli, de exemplu, să afișeze un videoclip pe un site web sau pe mobil dispozitiv. Trebuie să ținem cont de mărimea și formatul fișierului, indiferent dacă ar trebui sau nu să efectuăm fluxuri sau descărcări, optimizarea fișierelor și multe alte aspecte, iar această listă continuă și continuă când adăugăm noi obiective și fișiere.

Da, multimedia joacă un rol imens în aplicațiile de azi, indiferent dacă sunt pe web sau mobile, dar acest lucru nu ar trebui să fie cazul în timpul dezvoltării. Atunci când creați o nouă aplicație, trebuie să fim capabili să ne concentrăm asupra scopului și să nu pierdem timpul cu probleme de stocare și optimizare a fișierelor multimedia. Și acesta este exact locul unde Cloudinary vine la salvare.

CloudNary este un software SaaS (Software as a Service) care gestionează toate sarcinile legate de manipularea imaginilor și a imaginilor, cum ar fi încărcarea, stocarea, optimizarea, livrarea și chiar furnizarea multor alte caracteristici, cum ar fi transformarea imaginilor, trunchierea, scalarea și detectarea feței . Și toate transformările și transcodările sunt realizate în timp real și în timpul zborului. Cloudinary utilizează Amazon S3 pentru stocarea fișierelor și se integrează cu cele mai importante rețele de distribuire a conținutului, cum ar fi Akamai, care oferă o livrare foarte eficientă.

Pentru a urmări, veți avea nevoie de un cont Cloudinary pentru a încărca fișiere video și pentru a efectua transformări, pentru a crea un cont gratuit.

Încărcări directe ale browserului

Dar asta e destul de chit Chat - haideți să ne murdărim mâinile și să arătăm câteva exemple reale despre ceea ce putem face.

În orice aplicație care utilizează imagini și videoclipuri pentru a angaja utilizatori, prima sarcină pe care trebuie să o ocupăm este încărcarea fișierelor. Pentru a urmări împreună cu tutorialul, continuați și creați un cont gratuit.

Activați încărcările directe neimpozitate

Pentru a încărca fișiere într-un cont Cloudinary, cererile trebuie să aibă o semnătură de solicitare bazată pe cheia dvs. API și pe secret. Cu toate acestea, există cazuri în care trebuie să vă permiteți să încărcați fișiere direct din browser, fără a trebui să trimiteți datele în spate pentru a semna solicitarea și pentru a încărca fișierele, și aici Încărcare nesemnată directă are loc.

Pentru a le permite, în Consola de conturi navigheaza catre Setări> Încărcare.

În partea de jos a paginii veți găsi un Încărcați presetări setarea și Activați încărcarea nesemnată opțiune. Trebuie să o selectăm astfel încât aplicația noastră să poată încărca fișiere fără a trebui să semneze cererile. Aceasta va crea o presetare de încărcare nouă pentru care încărcările nesemnate sunt activate. Luați notă de numele presetat așa cum o vom folosi într-un moment.

Incarca un fisier

Asta e pentru partea de configurare. Apoi vom efectua încărcarea efectivă a fișierului și pentru asta vom folosi pluginul jQuery al lui Cloudinary. Accesați pagina de descărcare și descărcați-o.

Pentru ca acesta să funcționeze, trebuie să avem și jQuery, iar pentru încărcarea directă a browserului avem nevoie și de anumite dependente din pluginul jQuery File Upload. Aceste dependențe apar deja cu pluginul Cloudinary.

Pentru a încărca un fișier direct din browser, singurul lucru pe care trebuie să-l faceți este să activați Cloudinary în câmpul de introducere a fișierului ca atare.

$ ('.upload-file') .unsigned_cloudinary_upload ('UPLOAD_PRESET', cloud_name: 'CLOUD_NAME', etichete: 'UPLOAD_TAGS'); 

UPLOAD_PRESET parametrul este numele presetării în care este afișat Încărcări nesemnate directe sunt activate, cel creat în pasul anterior. Numele cloud este un nume atribuit tuturor utilizatorilor din sistemul Cloudinary. Acest lucru este obținut la crearea unui cont și este afișat în tabloul de bord al utilizatorului. În sfârșit, câmpul pentru etichete este opțional și puteți seta o etichetă specială pentru a indica faptul că un fișier a fost încărcat direct din browser.

Transmiteți videoclipul încărcat

După încărcarea unui fișier video, acum trebuie să îl transmitem către utilizatorii noștri. Serviciul va avea grijă de optimizarea și cachearea fișierului pentru livrare rapidă. În metoda noastră de controler, adăugați o pereche de suporturi pentru a stoca sursa, numele și calea completă a videoclipului încărcat.

var public_id = "; 

Apoi, pentru a afișa previzualizarea video după încărcarea fișierului, vom lega un ascultător de evenimente unsigned_cloudinary_upload apel. După paranteza de închidere, adăugați următorul cod.

.bind ('cloudinarydone', funcția (e, data) public_id = data.result.public_id; $ ('.video-title') .html (data.result.original_filename; 

În cele din urmă trebuie să definim loadVideo care va avea grijă de setarea sursei de etichete video HTML5 și reîncărcare. În interiorul funcției controlerului, definiți un nou loadVideo metodă:

($) ($) ($) ($) ($). $ $ ($) .attr ('controale' ("redare automată", "redare automată")); ; 

Aici folosim pluginul jQuery al lui Cloudinary pentru a crea eticheta video a videoclipului încărcat, odată ce elementul HTML este creat adăugăm controale și Redare automata și adăugați-l în final video-container element. Rețineți că trebuie să setăm și cloud_name folosit pentru a încărca videoclipul.

Când este încărcat, Cloudinary transformă și codifică automat fiecare videoclip încărcat în MP4, WebM și OGV solicitate de browserele web și mobile și, de asemenea, în FLV pentru flash.

Am putea să o lăsăm așa și va funcționa, dar voi introduce o transformare UI pentru a oferi feedback despre ceea ce se întâmplă și a stabili câteva indicații ajutoare pentru transformările ulterioare. În interiorul cloudinarydone apel invers, sub loadVideo apelați metoda, adăugați următorul cod.

$ ('.help-block', $ ('upload-fișier') .parent ()) .hide (); $ ('.help-block', $ ('# video-lățime') .parent ()) .html ('Max:' + data.result.width); $ ('.help-block', $ ('# video-height') .parent ()) .html ('Max:' + data.result.height); $ ('# transform-controale') .slideDown (); 

Aici setăm doar câteva șiruri de ajutor pentru a indica dimensiunea videoclipului încărcat ca referință. Apoi afișăm formularul cu comenzile de transformare video.

În cele din urmă, doresc să introduc un mesaj care să indice că este în curs de încărcare video. La paranteza de închidere a cloudinarydone event binder, adăugați următorul cod.

.bind ('cloudinarystart', funcția (e, data) $ ('.help-block', $ ('upload-file') .parent ()). ("# transform-controls") .hide ();); 

Acest fragment oferă doar un feedback mic despre ceea ce se întâmplă în spatele scenei și ascunde comenzile de transformare video.

Manipularea video

Până acum, așa bine - putem încărca videoclipuri și le putem afișa în browser cu doar câteva linii de cod. Dar acum, pentru distracția reală, să începem să facem transformări în fișierele noastre video doar prin modificarea adresei URL pe care o folosim pentru ao încărca.

Redimensionarea și tăierea

Cele mai elementare transformări pe care le putem face cu fișierele video încărcate sunt de a schimba lățimea și înălțimea și de a personaliza modul în care ar trebui să se realizeze decuparea.

Există cinci parametri care controlează modul în care un fișier video va fi redimensionat și tăiat:

  • Lăţime: Lățimea pe care trebuie să o aibă videoclipul transformat. Parametrul URL w.
  • Înălţime: Înălțimea pe care trebuie să o aibă videoclipul transformat. Parametrul URL h.
  • A decupa: Cum trebuie să se facă recoltarea, dacă este cazul, la scalarea videoclipului. Există mai multe opțiuni aici: scară, umple, potrivi, limită, pad, lpad, cultură. Toate acestea spun Cloudinary cum să redimensionați videoclipul. De exemplu, dacă este setată o limită, videoclipul transformat va avea o lățime maximă de lăţime și o înălțime maximă de înălţime păstrând în același timp proporțiile originale. Parametrul URL c.
  • Gravitatie: Acest parametru specifică partea de video pe care să o utilizați când a decupa este setat sa a decupa, tampon și completati. Ca și cu a decupa, există mai multe opțiuni pentru acest parametru: nord-vest, nord, nord-est, vest, centru, est, sud-vest, sud, sud-est. După cum vă puteți imagina, aceasta se referă la stânga, dreapta, sus și jos. De exemplu, specificând Nord Vest va însemna preluarea porțiunii din stânga sus a videoclipului original atunci când îl tăiați. Parametrul URL g.
  • fundal: Această proprietate specifică culoarea pe care trebuie să o folosească atunci când videoclipul transformat are umplutură. Când setați proprietățile de lățime și înălțime și fișierul original își păstrează proporțiile, umplutura va fi utilizată pentru a umple golurile orizontale sau verticale generate și cu fundal puteți seta culoarea care trebuie utilizată pentru umplerea respectivă. Aici puteți specifica culoarea ca șir (roșu) sau ca un cod RGB de trei sau șase caractere. Pentru a utiliza codurile RGB trebuie să specificați acest lucru în URL-ul: rgb: FF0000. Parametrul URL b.

Aceștia sunt parametrii utilizați pentru redimensionarea unui fișier video. Pentru explicații suplimentare despre fiecare dintre acestea, consultați documentația oficială.

Există două moduri în care Cloudinary efectuează transformări: leneș și cu nerăbdare.

O transformare leneșă se aplică atunci când se solicită un fișier încărcat. Prima dată când este accesat un fișier transformat, transformarea este efectuată și fișierul rezultat va fi stocat în cache pentru utilizare ulterioară.

O transformare nerăbdătoare este aplicată atunci când transformările sunt aplicate fișierului pe măsură ce acesta se încarcă, astfel că, atunci când a terminat încărcarea, versiunea transformată este imediat disponibilă.

Ca o notă specială aici, atunci când aplicați o transformare leneșă pentru prima dată, fișierul este transmis în flux ca transformare apare, astfel încât, în cazul unui fișier video, începe să se joace imediat, în timp ce transformarea se face on-the-fly.

Există un API și mai multe SDK-uri pentru a accesa toate capabilitățile Cloudinary, în acest exemplu vom folosi pluginul jQuery pentru transformările video.

Deci, acum să punem în aplicare funcționalitatea necesară în aplicația noastră pentru a efectua și afișa transformări în videoclipurile noastre. Primul lucru pe care trebuie să-l faceți este să creați un nou suport în controlerul nostru pentru obiectul transformări. În partea de sus a declarației variabilelor, adăugați următorul cod:

var transform = cloud_name: 'CLOUD_NAME'; 

Aici suntem aici cloud_name atribui unui a tranform obiect pentru a seta restul parametrilor de transformare.

În loadVideo () metoda, trebuie să înlocuim $ .cloudinary.video al doilea parametru cu noul parametru transforma obiect.

$ ($ video-container) .html ($ (.cloudinary.video (public_id, transform)) .attr ("controale", "controale") .attr ("autoplay", "autoplay")); 

Aceasta este toata pregatirea de care avem nevoie pentru a redimensiona fisierele noastre video. Dacă bifați marcajul HTML, veți observa că formularul care conține câmpurile de transformare invocă o metodă de aplicare atunci când este trimisă. Vom declara acum această metodă, deci în partea de jos a controlerului adăugați următorul cod:

$ scope.update = function () var width = $ ('# video-lățime') .val () = cultură]: verificat ') .val (), gravitatea = $ (' input [name = gravity]: checked ') .val (), background = $ (' video-background '); transform.crop = cultura; dacă (lățimea) transform.width = width;  dacă (înălțime) transform.height = height;  dacă (gravitatea) transform.gravity = gravitatea;  dacă (fundal) transform.background = background;  loadVideo (); ; 

Această metodă este oarecum lungă, dar ceea ce face este să creeze preluarea parametrilor de transformare introduși în forma transformărilor și să se stabilească parametrii corespunzători în anterior transforma obiect.

Când actualizăm videoclipul utilizând formularul de transformare, loadVideo metoda va fi executată cu noul obiect de transformare. Și videoclipul va fi actualizat.

Înainte de a continua cu următoarele transformări, trebuie să vă asigurați că ați resetat transforma obiect pentru fiecare fișier încărcat, în interiorul cloudinarystart apel invers, adăugați următorul cod.

transform = cloud_name: 'CLOUD_NAME'; 

Aici doar restabilim transforma obiecte față de starea inițială cu doar cloud_name set de parametri.

Rotația video

O altă transformare care poate fi efectuată este rotirea videoclipului streaming. La fel ca în cazul transformărilor de redimensionare și recoltare, putem folosi unul dintre SDK-urile sau pluginurile disponibile sau putem folosi adresa URL pentru a seta parametrii de rotație. Pentru pluginul jQuery parametrul de rotire a videoclipului generat este unghi.

Încă o dată, trebuie să setăm parametrul de rotire pentru transforma obiect, în interiorul Actualizați metoda de declarare, chiar înainte de loadVideo apel adăugați următorul cod.

var unghi = $ (unghi video) .val (); dacă (unghiul) transform.angle = unghiul;  

Cu acest ultim fragment putem face rotația videoclipurilor noastre folosind comenzile de transformare, astfel încât să redirecționăm un videoclip și să îl redimensionăm după cum urmează.

Transformări suplimentare

Există multe alte transformări care pot fi aplicate fișierelor video, inclusiv transcodarea video, manipularea audio, adăugarea suprapunerii și transformarea GIF. Pentru o listă completă a parametrilor disponibili, consultați documentația oficială.

Da gratis

Vom fi bucuroși să oferim un cititor norocos, aleator ales, patru luni libere pentru oricare dintre planurile noastre de pe raft (puteți vedea planurile noastre aici.

Pur și simplu tweet un link spre acest post folosind butonul de partajare Twitter situat pe bara laterală.

După încheierea concursului, Cloudinary va contacta la întâmplare un câștigător norocos și va urma cu dvs. pentru a vă revendica premiul.

Concluzie

În acest tutorial efectuăm încărcări și transformări video utilizând jQuery, dar există și multe alte SDK-uri care integrează cu ușurință orice aplicație cu serviciul Cloudinary. Și toate transcodările și transformările sunt efectuate pe cloud fără a necesita software suplimentar, acest lucru face serviciul o soluție cu adevărat viabilă și simplă pentru manipularea media în aplicații mobile și web. Pentru o listă completă a tuturor SDK-urilor și pluginurilor disponibile, consultați documentația oficială.

Cu Cloudinary putem gestiona imagini și clipuri video foarte ușor și fiabil. Acesta va avea grijă de manipularea tuturor stocării, optimizării, transformării, memorării în cache și livrării.

Toate transformările și manipulările efectuate în tutorial pot fi realizate și cu ajutorul oricăror SDK-uri și plugin-uri disponibile.

Lăsați-vă comentariile, întrebările, gândurile și sugestiile în secțiunea de comentarii de mai jos.

Cod