Există multe instrumente cu sursă deschisă pentru editarea, ajustarea și convertirea fișierelor multimedia în exact ceea ce aveți nevoie. Instrumente precum Audacity sau Handbrake sunt fantastice, dar uneori doriți doar să schimbați rapid un fișier dintr-un format în altul. Intrați în FFmpeg.
FFmpeg este o colecție de proiecte diferite pentru manipularea fișierelor multimedia. Este adesea folosit în spatele scenei în multe alte proiecte legate de media. În ciuda numelui său, nu are nimic de-a face cu Moving Picture Experts Group sau cu miriadele de formate multimedia pe care le-a creat.
În acest articol voi folosi FFmpeg prin intermediul instrumentului de linie de comandă ffmpeg, care este doar o singură și mică parte a proiectului FFmpeg. Este disponibil pe multe sisteme de operare diferite și este inclus în unele sisteme de operare în mod implicit. Poate fi descărcat de pe site-ul FFmpeg sau prin intermediul majorității managerilor de pachete.
FFmpeg este un instrument puternic care poate face aproape orice vă puteți imagina cu fișiere multimedia. În acest articol, suntem interesați să îl folosim pentru a converti fișiere, așa că nu vom face o scufundare profundă în întregul său set de caracteristici. Înainte de a ne uita la utilizarea FFmpeg, mai întâi trebuie să aruncăm o privire rapidă asupra a ceea ce este mai exact un fișier multimedia.
Filiere multimedia
La un nivel foarte înalt, un fișier multimedia este împărțit într-un container și fluxurile sale. Fluxurile includ componentele AV reale, cum ar fi componentele audio sau video ale unui film, și sunt codificate folosind o anumită codificare media, sau codec. Fiecare codec are propriile proprietăți, puncte forte și puncte slabe. De exemplu, codecul FLAC este bun pentru audio fără pierderi de înaltă calitate, în timp ce Vorbis este conceput pentru a concura cu MP3 în ceea ce privește dimensiunea fișierelor, oferind în același timp o calitate audio mai bună. Acest lucru înseamnă că un fișier în format FLAC va fi mult mai mare decât un flux audio Vorbis, dar ar trebui să sune mai bine. Nici unul nu este în mod inerent mai bun decât celălalt, deoarece fiecare încearcă să facă lucruri diferite.
Contenitorul este învelișul pentru fluxuri. Acesta prezintă o singură interfață cu care pot interacționa playerele și instrumentele media. Unele containere sunt foarte avansate și permit orice tip de flux, inclusiv mai multe fluxuri video și audio în interiorul unui singur container. Cu toate acestea, fluxurile dintr-un container nu trebuie să fie doar audio sau video. Diferite containere vor permite diferite fluxuri, de exemplu, subtitrări, informații despre capitole sau alte metadate. Totul depinde de ceea ce este setat containerul să permită.
Aceasta este o reprezentare abstractă a fișierelor media și sare peste multe dintre diferențele dintre containere. Multe dintre ele necesită anumite fluxuri și metadate sau impun restricții asupra codecurilor sau conținutului permis. Această explicație este suficientă pentru a vă ajuta să parcurgeți acest articol. Pentru a afla mai multe, faceți clic pe link-urile de mai sus.
Atenție, codificarea video și audio poate dura foarte mult timp pentru a se executa. Ar trebui să fiți pregătit să vă așezați pentru o vreme atunci când folosiți FFmpeg.
Conversie de bază
Ceea ce îi împiedică pe cei mai mulți oameni atunci când vine vorba de conversia audio și video este selectarea formatelor și containerelor corecte. Din fericire, FFmpeg este destul de inteligent cu setările sale implicite. De obicei, selectează automat codecurile și containerul corect, fără nicio configurație complexă.
De exemplu, să spunem că aveți un fișier MP3 și doriți să îl convertiți într-un fișier OGG:
ffmpeg -i input.mp3 output.ogg
Această comandă ia un fișier MP3 numit input.mp3 și îl convertește într-un fișier OGG numit output.ogg. Din punctul de vedere al FFmpeg, aceasta înseamnă convertirea fluxului audio MP3 într-un flux audio Vorbis și înfășurarea acestui flux într-un container OGG. Nu a trebuit să specificați tipurile de flux sau de container, deoarece FFmpeg și-a dat seama pentru dumneavoastră.
Acest lucru funcționează și cu videoclipurile:
ffmpeg -i input.mp4 output.webm
Pentru că WebM este un format bine definit, FFmpeg știe în mod automat ce tipuri de fluxuri video și audio poate suporta și va converti fluxurile pentru a fi un fișier WebM valid.
În funcție de containerul ales de dumneavoastră, acest lucru nu va funcționa întotdeauna. De exemplu, containere precum Matroska sunt concepute pentru a gestiona aproape orice flux pe care doriți să îl introduceți în ele, indiferent dacă este valid sau nu. Acest lucru înseamnă că comanda:
ffmpeg -i input.mp4 output.mkv
poate avea ca rezultat un fișier cu aceleași codecuri pe care le avea input.mp4, ceea ce poate fi sau nu ceea ce vă doriți.
Selectarea codecurilor
Atunci ce faceți atunci când doriți să folosiți un container precum Matroska (care poate gestiona aproape orice flux), dar totuși să influențați ce codecuri se află la ieșire? FFmpeg la salvare! Puteți selecta codecurile necesare folosind stegulețul -c.
Acest steguleț vă permite să setați codecurile diferite de utilizat pentru fiecare flux. De exemplu, pentru a seta ca fluxul audio să fie Vorbis, veți folosi următoarea comandă:
ffmpeg -i input.mp3 -c:a libvorbis output.ogg
Același lucru poate fi făcut și pentru a schimba atât fluxul video, cât și pe cel audio:
ffmpeg -i input.mp4 -c:v vp9 -c:a libvorbis output.mkv
Aceasta va face un container Matroska cu un flux video VP9 și un flux audio Vorbis, în esență la fel ca WebM-ul pe care l-am făcut mai devreme.
Comanda ffmpeg -codecs va imprima fiecare codec pe care FFmpeg îl cunoaște. Ieșirea acestei comenzi se va schimba în funcție de versiunea de FFmpeg pe care o aveți instalată.
Schimbarea unui singur flux
De mai multe ori decât v-ar plăcea, fișierul pe care îl aveți este parțial corect, cu un singur flux în format greșit. Poate fi foarte consumatoare de timp pentru a recodifica fluxul corect. FFmpeg vă poate ajuta în această situație:
ffmpeg -i input.webm -c:v copy -c:a flac output.mkv
Acestă comandă copiază fluxul video din input.webm în output.mkv și codifică fluxul audio Vorbis într-un FLAC. Steagul -c este cu adevărat puternic.
Schimbarea unui container
Exemplul anterior poate fi aplicat atât fluxurilor audio, cât și celor video, permițându-vă să convertiți de la un format de container la altul fără a fi nevoie să efectuați o codificare suplimentară a fluxului:
ffmpeg -i input.webm -c:av copy output.mkv
Influențarea calității
Acum că avem un control asupra codecurilor, următoarea întrebare este: Cum setăm calitatea fiecărui flux?
Cea mai simplă metodă este de a schimba bitrate-ul, ceea ce poate duce sau nu la o calitate diferită. Capacitatea oamenilor de a vedea și de a auzi nu este atât de curată și clară pe cât ne-ar plăcea să credem. Uneori, schimbarea bitrate-ului face o diferență uriașă în ceea ce privește calitatea subiectivă. Alteori s-ar putea să nu facă nimic altceva decât să schimbe dimensiunea fișierului. Uneori este foarte greu de spus ce se va întâmpla fără a încerca.
Pentru a seta bitrate-ul fiecărui flux, folosiți stegulețul -b, care funcționează într-un mod similar cu stegulețul -c, cu excepția faptului că, în loc de opțiuni de codec, setați un bitrate.
De exemplu, pentru a schimba bitrate-ul video, îl veți folosi astfel:
ffmpeg -i input.webm -c:a copy -c:v vp9 -b:v 1M output.mkv
Aceasta va copia audio (-c:a copy) de la intrare.webm și va converti videoclipul într-un codec VP9 (-c:v vp9) cu o rată de biți de 1M/s (-b:v), toate grupate într-un container Matroska (output.mkv).
O altă modalitate prin care putem influența calitatea este să ajustăm rata de cadre a videoclipului folosind opțiunea -r:
ffmpeg -i input.webm -c:a copy -c:v vp9 -r 30 output.mkv
Aceasta creează un nou Matroska cu fluxul audio copiat și rata de cadre a fluxului video forțată la 30 de cadre pe secundă, în loc să folosim rata de cadre de la intrare (-r 30).
De asemenea, puteți ajusta dimensiunile videoclipului folosind FFmpeg. Cel mai simplu mod este să folosiți o dimensiune video predeterminată:
ffmpeg -i input.mkv -c:a copy -s hd720 output.mkv
Aceasta modifică videoclipul la 1280×720 în ieșire, dar puteți seta lățimea și înălțimea manual dacă doriți:
ffmpeg -i input.mkv -c:a copy -s 1280x720 output.mkv
Aceasta produce exact aceeași ieșire ca și comanda anterioară. Dacă doriți să setați dimensiuni personalizate în FFmpeg, vă rugăm să rețineți că parametrul lățime (1280) vine înaintea înălțimii (720).
Ajustarea ratei de cadre și a bitrate-ului sunt două tehnici rudimentare, dar eficiente pentru a afecta calitatea media. Setarea acestor valori la un nivel foarte ridicat nu poate îmbunătăți calitatea unei surse existente dacă calitatea acesteia este deja scăzută.
Modificarea acestor setări este cea mai eficientă pentru reducerea rapidă a unui flux de înaltă calitate pentru a obține un fișier de dimensiuni mai mici. Ajustarea dimensiunii videoclipului nu poate îmbunătăți calitatea, dar poate face ca acesta să se potrivească mai bine pe o tabletă în loc de televizor. Modificarea dimensiunii unui videoclip de 640×480 la 4K nu îl va îmbunătăți.
Modificarea calității fișierelor dvs. este o chestiune foarte subiectivă, ceea ce înseamnă că nu există un singur mod care să funcționeze de fiecare dată. Cea mai bună metodă este să faceți câteva modificări și să testați dacă vi se pare că arată sau sună mai bine.
Modificarea fluxurilor
De multe ori aveți un fișier care este aproape perfect și trebuie doar să tăiați câteva părți. Acest lucru se poate face mai ușor cu un instrument care vă arată ce modificați, dar dacă știți exact unde vreți să tăiați, este foarte ușor să o faceți în FFmpeg:
ffmpeg -i input.mkv -c:av copy -ss 00:01:00 -t 10 output.mkv
Aceasta va copia fluxurile video și audio (-c:av copy), dar va tăia videoclipul. Opțiunea -t stabilește durata de tăiere la 10 secunde, iar opțiunea -ss stabilește punctul de început al videoclipului pentru tăiere, în acest caz la un minut (00:01:00). Puteți fi mai precis decât doar ore, minute și secunde, coborând până la milisecunde dacă este necesar.
Extragerea sunetului
Câteodată nu vă interesează cu adevărat videoclipul, ci doriți doar sunetul. Din fericire, acest lucru este foarte simplu în FFmpeg cu ajutorul steagului -vn:
ffmpeg -i input.mkv -vn audio_only.ogg
Această comandă extrage doar sunetul audio de la intrare, îl codifică ca Vorbis și îl salvează în audio_only.ogg. Acum aveți un flux audio izolat. De asemenea, puteți folosi stegulețele -an și -sn în același mod pentru a extrage fluxurile audio și de subtitrări.
Făcând un GIF din el
Recent, GIF-urile animate (cu g tare pentru că nu sunt un monstru) au revenit în forță. Personal, cred că GIF este cel mai prost format pe care l-ai putea alege pentru video. Are o calitate și o dimensiune de compresie îngrozitoare; are limite foarte dure în ceea ce privește culorile, ratele cadrelor și metadatele containerului; și nu poate suporta audio. Cu toate acestea, este destul de popular. Deci, cum puteți transforma un clip video într-un GIF animat?
Utilizarea steagului -an, similar cu ceea ce am făcut mai sus, este mai bună decât crearea unui GIF animat dacă doriți să faceți un videoclip fără audio, dar există o mulțime de locuri care acceptă GIF-uri care nu vor accepta un format video diferit. Pentru toate acestea:
ffmpeg -i input.mkv output.gif
ffmpeg -i input.mkv output.gif
Această comandă creează un GIF de aceleași dimensiuni ca și fișierul de intrare. Aceasta este adesea o idee proastă, deoarece GIF-urile nu se comprimă bine în raport cu alte formate video (din experiența mea, un GIF va fi de aproximativ opt ori mai mare decât videoclipul sursă). Poate fi util să folosiți opțiunea -s pentru a redimensiona GIF-ul la ceva mai mic, mai ales dacă sursa de intrare este destul de mare, cum ar fi un video HD.
Alte instrumente
În timp ce FFmpeg este instrumentul de bază pentru majoritatea sarcinilor AV, nu este perfect pentru orice. Există unele instrumente care, utilizate împreună cu FFmpeg, pot face totul un pic mai ușor.
Căutarea videoclipurilor de pe YouTube
Poate fi foarte ușor să încărcați ceva pe YouTube, să pierdeți videoclipul sursă original și să rămâneți doar cu versiunea YouTube. Care este cel mai simplu mod de a prelua o copie a videoclipurilor de pe YouTube?
Youtube-dl este un mic instrument ingenios pe care îl puteți folosi pentru a prelua videoclipuri de pe YouTube și de pe alte câteva servicii de video-streaming. Este foarte simplu de utilizat:
youtube-dl https://www.youtube.com/watch?v=2m5nW9CQLJ0
youtube-dl https://www.youtube.com/watch?v=2m5nW9CQLJ0
Această comandă descarcă videoclipul de la URL-ul indicat și îl salvează local.
Youtube-dl are mai multe opțiuni pentru a controla calitatea și formatul videoclipului descărcat, dar mie mi se pare mai ușor să folosesc comanda de mai sus. Aceasta descarcă audio și video de cea mai bună calitate într-un singur fișier, apoi folosesc FFmpeg pentru a le converti în formatul dorit.
Obținerea de informații despre media
Câteodată tot ce trebuie să știți este ce se află în interiorul containerului media. Deși există mai multe instrumente care pot face acest lucru, cel pe care îl prefer este MediaInfo. MediaInfo arată toate informațiile din interiorul unui container media, pentru fiecare dintre diferitele fluxuri, precum și metadatele pentru fișierul de intrare. Acest lucru vă oferă tot ceea ce ați putea dori să știți – și probabil o grămadă de lucruri pe care nu le-ați știut.
Executarea comenzii mediainfo inputFile.mkv scuipă o listă de informații despre fișierul de intrare într-o formă lizibilă pentru oameni.
Și multe altele…
Aceasta este doar o zgârietură la suprafața a ceea ce poate face FFmpeg. Din fericire, documentația pentru FFmpeg și celelalte instrumente ale proiectului este foarte bună și merită verificată. Vă va învăța totul despre numeroasele trucuri diferite pe care le poate face acest câine.
Dacă sunteți în căutarea unui instrument cu o interfață grafică pentru conversia de fișiere multimedia, Handbrake este unul excepțional de bun, disponibil pe Linux, Mac OS X și Windows. Handbrake folosește FFmpeg (printre alte instrumente) sub capotă.
.