un blog de Radu Dumitru

►► canalele mele de YouTube: youtube.com/RaduDumitru (personal) și youtube.com/NwraduBlog (tech) ◄◄

Editarea video accelerată de plăci grafice RTX: cum funcționează și de ce voi trece de la Adobe la DaVinci Studio

24 Oct 2023  ·

TEHNOLOGIE  ·

6 comentarii

Cred că o să trec cu editarea video de la Adobe Premiere Pro la DaVinci Resolve, iar motivul este legat de AI.

Pe scurt, NVIDIA prin platforma lor Studio (și sunt și sisteme din gama Studio) permite tot felul de procesări avansate și rapiditate în execuție pe plăcile grafice RTX, iar eu am o placă foarte bună în PC, un RTX 3080. Nu mă mai joc ca altădată din lipsă de timp, dar editare video fac tot mai multă și vreau să folosesc placa la maxim cu tot felul de noi funcții și trucuri aduse de procesările AI, nu să pierd timp făcându-le manual. I want in, ca să zic așa!

Întâi o explicație privind editarea video, ca să înțelegeți mai bine de ce am ajuns la concluzia aceasta.

O mulțime de procesare de tip AI se face în cloud, în data centere cu multe procesoare, iar mai nou chiar unele NVIDIA derivate din plăcile lor grafice consumer. Plăcile grafice NVIDIA sunt însă suficient de performante încât să efectueze foarte multe procesări direct în computer, în special în aplicații de editare și randare video, foto, audio, 3D și alte asemenea munci “creative”.

Poate ați sesizat, de fapt, că la fiecare lansare de plăci video NVIDIA se vorbește despre performanțele lor în jocuri și ray tracing (care în DLSS 3.5 devine o funcție AI, apropo), dar o mare parte din specificațiile plăcilor video este legată și de activități creative, nu recreaționale. Plăcile RTX includ codor hardware pentru H265 și chiar AV1 (chiar mai mult codoare, cum este cazul lui RTX 4090) și se vorbește despre ce poți face cu nucleele CUDA și Tensor din aceste plăci video.

În plus, nu doar că plăcile video sunt foarte bune și pentru creat conținut sau cod sau grafică, dar NVIDIA suportă acest tip de activități printr-o serie paralelă de drivere pentru plăcile GeForce RTX și GTX, numite Studio Drivers, față de cele Game Ready Drivers. Driverele Studio vin cu optimizări periodice pentru aplicații de muncă.

Eu le folosesc de mulți ani. Motivul este simplu: jocurile oricum rulează excelent și cu driverele Studio. Mă joc orice în 1440p cu grafica la maxim și refresh variabil la maxim 144 Hz, cât poate duce monitorul meu. Parcă la Assassin’s Creed Mirage am obținut 96 fps în medie, nu? Așa că nu am nevoie de încă 1-3% performanță în plus sau cât or aduce driverele Game Ready dacă vin cu optimizări speciale pentru anumite jocuri.

În schimb, orice optimizare cât de mică în muncă (editare video, în cazul meu) este binevenită. Când randezi clipul final, nu faci altceva decât să aștepți să treacă timpul. Când aplici un efect de stabilizare de imagine sau de scalare sau de noise reduction, de obicei aștepți un număr de secunde, în funcție de complexitatea sa, iar dacă pot reduce asta cu drivere optimizate special, sigur că vreau să profit de ele.

Ca să vorbim aplicat, sunt trei tipuri mari de operațiuni pe care placa video le face în Premiere Pro, pe care-l folosesc în acest moment: decodare video, accelerarea randării video și apoi codare video. Le-am scris practic în ordinea fluxului de lucru.

Decodarea înseamnă cât de repede rulează secvențele video care fac parte din proiect. Poate că nu vă așteptați să zic asta, dar decodarea făcută de placa video, nu de procesorul computerului, este foarte importantă. În general în editare video, cel puțin în stilul meu de lucru, am vreo 20 de mici clipuri filmate cu diverse ocazii și toate sunt codate H.264, dacă ies din camera mare, sau H.265, dacă sunt filmate cu telefonul.

Nu-i vorba că dai Play și doar alegi un segment care să facă parte din clipul video final. De obicei le deschid “în rafală”, câte unul pe secundă pentru că-mi dau seama rapid că nu este clipul căutat și deja dau click pe următorul ca să-l văd. Apoi fac scrub cu viteză prin clipul respectiv ca să caut momentul dorit, iar uneori îl rulez invers când dau prin el în față și în spate. Totul trebuie să curgă natural, inclusiv cu sunet perfect sincronizat, că nu poți aștepta câte o secundă pentru seek și decodare de câte ori miști cursorul prin clip.

Un clip video codat cu un codec foarte complex, care îi reduce mult dimensiunea fișierului final, înseamnă de fapt multă matematică în spate. Din aceea complexă, cu transformate Fourier rapide și macroblocuri și vectori de mișcare și predicție între frame-uri. Decodarea fiecărui frame este o operațiune complexă.

Decodorul NVIDIA din placa mea (numit NVDEC uzual) decodează cam tot ce există, inclusiv VP9 cu 8-12 biți, H.265, H.265 4:2:0 și 4:4:4 pe 8-12 biți, AV1 pe 8 și 10 biți. Este o pagină foarte utilă aici care arată pentru toate plăcile NVIDIA din istorie ce anume suportă codorul și decodorul lor.

Îmi aduc aminte când plăcile video nu făceau decodare și totul se baza pe procesor, apoi momentul când placa pe care o aveam înainte nu putea decoda și randa clipuri 4K chiar atât de repede, așa că foloseam proxy-uri. Practic, editorul video îmi permitea să transcodez toate fișierele inițiale într-un format mult mai puțin complex și la rezoluție mult mai mică, apoi editam clipul final folosind acest fișiere înlocuitoare, iar la final randarea și codarea se făcea folosind fișierele inițiale. Not fun, ci mult timp pierdut pe creat acest proxy-uri.

Accelerarea randării video se referă la calcularea în nucleele plăcii video RTX a efectelor video adăugate pe un clip. Nu vă gândiți la efecte ca în Star Wars aici, ci inclusiv la editările banale și aparent simple, precum un zoom de 10% în cadru, creșterea contrastului sau a luminozității, rotație că poate era camera un pic strâmbă, crop, rularea în paralel a două clipuri pe ecran, blurarea feței cuiva, white balance, compensarea distorsiunilor unui GoPro etc. Există o listă completă a efectelor accelerate pe GPU.

Orice astfel de efect, chiar și un banal zoom digital sau o rotație de 1 grad, înseamnă de fapt decodarea fiecărui cadru în parte dintr-un format complex precum H.264 sau H.265 (unde fiecare frame este de fapt codat în funcție de cele anterioare și chiar și viitoare, dacă mai țin bine minte din facultate), apoi aplicarea unor formule matematice și rularea lui în timp real pe ecran, ca să vezi ce-a ieșit. Și eventual făcut toate aceste operațiuni în timp ce utilizatorul tot trage stânga dreapta de slider-ul de efecte, ca să găsească valoarea care-i place.

Îmi aduc aminte momentul când o versiune destul de recentă de Premiere Pro a adăugat suport pentru randare pe plăcile NVIDIA a efectului de Warp Stabilizer, care este stabilizare digitală. A scăzut timpul de analiză a frame-urilor de vreo 3 ori. Închipuiți-vă că poate așteptai 60 de secunde pentru a analiza 100 de frame-uri (vreo 3 secunde de footage) și dintr-o dată așteptai doar 20 de secunde. Party!

Iar partea de encoding se referă la finalul proiectului, când ai făcut clipul final, l-ai editat, ai adăugat text și tranziții și efecte sonore și vrei doar să-l exporți ca film de dat clientului sau de pus pe YouTube. Pentru asta plăcile video NVIDIA au un codor hardware dedicat, numit NVENC în discuții, care mie personal mi-a micșorat la o treime sau la o jumătate timpul total de codare atunci când am început să-l folosesc, acum niște ani.

Am făcut un test rapid al codorului pentru articol. Proiectul este un clip 4K cu editare de culori și sunet, cu ceva text adăugat peste el. Durată totală 53 de secunde, că l-am pus pe Shorts și Reels; Premiere Pro 24.0, iar exportul în H.264 la 4K și 20 Mbps VBR 1 pass cu o normalizare audio a durat:

  • 26 sec cu encoding făcut de placa RTX 3080.
  • 56 sec cu encoding făcut de procesorul meu (AMD 5800X), fără ajutor de la placa video.

Mai mult de dublu. Și un avantaj al codării pe placa video este că poți utiliza PC-ul în acele momente pentru a face altceva. Browsing, deschizi un Excel, trimiți un email, whatever. Când randează procesorul, în schimb, acesta se duce în 100% și îl lași să-și facă treaba fără să-l atingi, că oricum abia procesează o comandă alt-tab în acele momente.

Ah, există câteva diferențe între placa mea RTX 3080 și noile RTX 4080 și RTX 4090 în aceste privințe. Situația este următoarea:

  • decodare: ambele generații au NVDEC “de generația a 5-a” și suport pentru aceleași codecuri.
  • randare video: plăcile RTX 40 sunt mai rapide. Au mai multe nuclee CUDA, arhitectură superioară, frecvențe de ceas mai mari și memorie VRAM mai multă (placa mea are 10 GB)
  • codare video: s-a trecut de la “a 7-a generație” la “a 8-a generație” de codor NVENC, unul care lucrează mai rapid. Mai important, plăcile din seria RTX 40 sunt primele cu suport pentru codare AV1, care-i un codec foarte bun și gratuit. În plus, plăcile RTX 4090 sunt primele cu 2 codoare NVENC la bord, nu doar unul, și asta înseamnă o accelerare prin paralelism a randării.

Am văzut pe net un test în acest sens și rezultatele erau următoarele:

  • codare H.265 4K 30 fps: 33 sec pe RTX 3090 și 14 sec pe RTX 4090
  • codare H.265 8K 30 fps: 120 sec pe RTX 3090 și 47 sec pe RTX 4090.

Nu-i doar diferența de arhitectură la mijloc, ci dublarea numărului de codoare hardware.

 

Anyway, așa mă ajută placa video în editare video. Pe scurt, în orice moment al editării, de la scrubbing prin clipuri și timeline până la calcularea oricărui efect video și apoi randarea finală. Iar recent, într-o versiune beta de Premiere Pro pe care o am instalată, Adobe a introdus inclusiv o funcție numită Enhance Speech, care face procesare AI audio pentru a reduce zgomotul ambiental și pentru a scoate vocea în evidență. Este un fel de one-click-fix cu rezultate uneori bune (mai multe despre asta mai jos), iar procesarea se face tot pe placa video, din ce-mi dau eu seama din Task Manager.

 

Spuneam însă că, după vreo 4 ani de când plătesc lunar la Adobe Premiere Pro, cel mai probabil voi renunța la acest program în favoarea DaVinci Resolve Studio.

Explicația ar fi următoarea: DaVinci folosește la fel ca și Premiere Pro placa video NVIDIA pentru decodare, randare și apoi codare, dar include mai multe efecte și procesări video AI moderne. Când văd ce poate face AI-ul în general zilele acestea, de la umplere generativă și până la eliminat obiecte nedorite din imagini sau modificări intuitive “alimentate” de machine learning, care nu necesită ore de muncă și bibilire prin reglaje și măști, ci se rezolvă totul din 2 clickuri, mă întreb de ce nu am și eu așa ceva în editorul video pentru care plătesc lunar.

Am tot urmărit ce noutăți va introduce Premiere Pro, iar pe unele le-am folosit în beta imediat ce au fost disponibile. Am fost dezamăgit. Principala funcție introdusă acum, una foarte utilă, este disponibilă doar în engleză și câteva alte limbi. Premiere Pro transcrie în engleză ce se vorbește în clipurile video, apoi poți face editare direct pe text. Selectezi textul pe care-l vrei și Premiere Pro îți păstrează de fapt clipul video cu acele vorbe. Faci copy-paste și rearanjare de text ca în Word, iar în timeline se întâmplă automat asta cu secvențele video respective. Apoi, o procesare audio scoate chiar și cuvintele de tipul “umm” și “aaah”. Treaba asta îi va scuti pe cei care editează interviuri și podcasturi și prezentări de ore întregi de muncă.

Dar în limba engleză. Nu o pot folosi. O a doua noutate introdusă este acel Enhance Speech de care spuneam, tot un algoritm AI care  elimină zgomotul de fundal și accentuează vocile. Funcționează binișor, doar că, în mod ironic și foarte amuzant, introduce niște cuvinte în momentele când nu vorbește nimeni. Nu cuvinte, ci un fel de strigăte sau distorsiuni. Aproape că mi-a luat mai mult să găsesc și să elimin acest probleme la un clip video editat cu așa ceva decât dacă foloseam algoritmii vechi de reducere de zgomot. Mai are nevoie de tuning.

Și asta este tot. M-am uitat la recenta conferință Adobe MAX sperând să fie anunțate și alte funcții, dar aproape toate funcțiile noi au fost introduse în Photoshop și Illustrator și Express prin acel AI numit Firefly. Premiere Pro a fost la categoria “și altele”.

 

DaVinci Studio (de fapt compania mamă, Blackmagic, aceiași care fac și camerele video și consolele de editare profesională) pare că lucrează mai îndeaproape cu NVIDIA. Editorul acesta folosește plăcile RTX la fel ca Premiere Pro, tot pentru decodare, randare și apoi codare, dar introduc periodic tot felul de efecte complexe tip AI, unele pe care le vreau și eu.

Uitați un anunț de câteva zile:

Blackmagic Design has adopted NVIDIA TensorRT acceleration in update 18.6 for its popular DaVinci Resolve software for video editing, color correction, visual effects, motion graphics and audio post-production. By integrating TensorRT, the software now runs AI tools like Magic Mask, Speed Warp and Super Scale over 50% faster than before. With this acceleration, AI runs up to 2.3x faster on GeForce RTX and NVIDIA RTX GPUs compared to Macs.

Citatul este dintr-un articol NVIDIA despre ce funcții accelerate au mai fost adăugate prin diverse programe. Păi numai aceste trei funcții sunt excelente și folosite des inclusiv de mine. Magic Mask, de exemplu, îți permite să faci click undeva pe o persoană din clipul video și programul îi detectează conturul și o selectează. Poți edita apoi doar acea persoană, îi poți regla nuanța pielii, îi mai luminezi fața, adaugi blur pe restul cadrului pentru un efect de adâncime de câmp etc. Apoi Magic Mask detectează în fiecare cadru care urmează acea persoană și cum se mișcă ea și păstrează selecția și editările făcute.

În Premiere, o persoană se selectează manual, faci click din punct în punct în jurul ei și o selectezi treptat cu linii și noduri. Durează enorm, iar tracking-ul prin frame-urile următoare este la noroc, are nevoie de multe opriri și corecții.

Speed Warp face un slow-motion de calitate mult mai bine, interpolând cadre. Are și Premiere o funcție asemănătoare numită Optical Flow, dar a lui DaVinci este făcută cu AI care estimează mult mai bine totul. Foarte mulți filmează la 60 fps pentru a putea face apoi un slow motion artistic la 50% pentru 30 fps cu diverse cadre gen flori în vânt sau whatever. Eu n-am cameră de 60 fps, dar o astfel de funcție ar putea-o simula mult mai bine decât înainte.

Super Scale este un algoritm de upscaling. Poate ați crede că nu are rost să faci zoom digital într-o imagine. În fond, filmezi 4K și apoi exporți tot 4K, nu? Nu. În primul rând, chiar și când mă filmez la măsuța mea prezentând vreun produs adaug apoi un zoom digital între 10 și 30% ca să mai fie diferență de la o secțiune la alta. Mai strâng cadrul, ca să zic așa, pentru o vreme, ca să fie imaginea mai variantă.

În al doilea rând, camera video are și ea o distanță minimă la care focalizează. Uneori filmez un telefon mobil de la 60 cm distanță și ocupă 50% din cadru. În clipul final, aș vrea să ocupe 90%, ca să se vadă bine pe tot ecranul. Asta înseamnă tot zoom digital, iar un algoritm bun de upscaling este crucial. Poate ați văzut că mai noi și Google a prezentat un upscaling AI pentru Pixel 8 Pro.

Astfel de funcții sunt procesate de placa video RTX. Sunt curios dacă Adobe sau NVIDIA n-ar putea licenția tehnologia DLSS pentru a face upscaling pe video. Din câte știu eu, pipeline-ul este similar, iar DLSS acționează direct asupra cadrului final de rezoluție mică randat de placa video în joc. Versiuni ulterioare de DLSS au adăugat funcții suplimentare precum generare de cadre suplimentare și ray tracing făcut cu AI, dar la bază tot un algoritm de upscaling se află.

Ca o paranteză aici, NVIDIA are deja experiență în upscaling video. În februarie 2023 au lansat oficial o funcție numită Video Super Resolution, posibilă pe plăcile RTX 30 și 40, implementată automat prin drivere Game Ready și Studio lansate în acea perioadă. Placa video preia cam orice stream video (YouTube, Netflix etc) rulat în Chrome sau Edge și îi face upscale până la 4K, cu rezultate mult mai bine decât un simplu algoritm.

Acum câteva zile a apărut chiar un update pentru această tehnologie. Calitatea procesării a fost îmbunătățită. A devenit disponibilă și pe plăcile RTX 20. Mi-ar plăcea să o văd direct implementată în editoarele video.

Nu știu cât de mulți folosesc această opțiune, apropo. Ea se găsește în NVIDIA Control Panel la Adjust Video Image Settings > RTX Video Enhancement și este oprită default. O puteți activa dacă doriți.

Dacă editoarele video ar mai adăuga și un algoritm bun de sharpening pentru imagini ușor neclare, ar fi perfect.

Pentru Premiere Pro plătesc 24 de euro lunar (și asta fără After Effects). DaVinci Resolve este gratuit și este suficient pentru majoritatea oamenilor care vor să facă editare video la nivel de bază. Varianta DaVinci Resolve Studio este pe bani, dar este un one-time fee de vreo 330 de euro și este al tău pe viață, cu toate update-urile viitoare. Am instalat deja versiunea gratuită și voi edita câteva clipuri pe ea. Poate de Black Friday prind și vreun discount la cea plătită.

Interfața este foarte diferită (dar pare mai fluentă și mai modernă și mai… stabilă), ceea ce este cam bummer, dar am învățat cândva Premiere la nivel intermediar spre expert, pot să-l învăț și pe DaVinci. Iar dacă programul a fost suficient de bun încât să editeze filme precum Star Wars pe el, mă descurc și eu pentru ale mele.

    6 comentarii

  1. Niciodata n-am inteles de ce atata bataie de cap cu Davinci si alte programe imense cand pentru un amarat de vlog poti folosi chiar si o aplicatie de telefon. :)

      (Citează)

    • Păi poate că unii trag câte 500-600 de GB de informatie pentru un vlog?! Ia incearca sa procesezi asta de pe un telefon. SLOG, VLOG, etc. :)

        (Citează)

    • N-ai înțeles pentru că nu ai încercat să faci un astfel de montaj. Camere diferite, culori diferite (chiar și un telefon cu GoPro) care trebuie corectate – poate puțin contrast, claritate. Mai sunt elemente de bază ca titluri, tranziții, tăiat, lipit, adăugat imagini peste clip, stabilizare. După ce te chinui fără un soft ca lumea n-o să mai ai impresia că merge de pe telefon.

        (Citează)

  2. Am trecut pe DaVinci de vreo 6 luni, dupa 4 ani de Premiere. Diferenta e uriasa, la toate capitolele.

    Am redus timpul de lucru la cel putin jumatate cu niste shortcut-uri foarte bine gandite, never going back to Adobe.

      (Citează)

  3. Probabil nu folosesti, dar daca ai ceva timp de pierdut si chef de invatat cu nvidia rtx arunca un ochi si pe blender si/sau automatic1111. Am luat un 3090 pentru astea 3, davinci/blender/automatic1111. Probabil o sa sar direct la o placa 50xx, 4090 e interesanta dar ma descurc deocamdata.

      (Citează)

  4. Îmi place când ești foarte tehnic în articole, mulți poate nu înțeleg dar pe cei aficionado ca myself acest limbaj tehnic ne gâdilă simțurile :)

      (Citează)

    Alătură-te discuției, lasă un mesaj

    E-mail-ul nu va fi publicat. Fără înjurături și cuvinte grele, că vorbim prietenește aici. Gândiți-vă de două ori înainte de a publica. Nu o luați pe arătură doar pentru că aveți un monitor în față și nu o persoană reală.

    Apăsați pe Citează pentru a cita întreg comentariul cuiva sau selectați întâi anumite cuvinte și apăsați apoi pe Citează pentru a le prelua doar pe acelea. Link-urile către alte site-uri, dar care au legătură cu subiectul discuției, sunt ok.


    Prin trimiterea comentariului acceptați politica de confidențialitate a site-ului.



    Vreți un avatar în comentarii? Mergeți pe gravatar.com (un serviciu Wordpress) și asociați o imagine cu adresa de email cu care comentați.

    Dacă ați bifat să fiți anunțați prin email de noi comentarii sau posturi, veți primi inițial un email de confirmare. Dacă nu validați acolo alegerea, nu se va activa sistemul și după un timp nu veți mai primi nici alte emailuri

    Comentariile nu se pot edita ulterior, așa că verificați ce ați scris. Dacă vreți să mai adăugați ceva, lăsați un nou comentariu.

sus