- FFmpeg vam omogućuje transformaciju slikovnih sekvenci u prilagođene videozapise kontroliranjem broja sličica u sekundi, kodeka i rezolucije.
- Postoji nekoliko metoda unosa (specifikatori formata, glob obrasci i concat demuxer) za prilagođavanje različitim vrstama naziva datoteka.
- Moguće je obogatiti rezultirajuće videozapise dodavanjem zvuka, vodenih žigova, efekata, promjena brzine i skaliranja.
- FFmpeg se ističe svojom snagom i automatizacijom, dok grafičke alternative nude jednostavnije tijekove rada za korisnike koji nisu tehnički potkovani.
Ako ste se ikada zapitali kako pretvorite planinu fotografija u glatki video (Bilo da se radi o ubrzanoj snimci, prezentaciji ili isječku s društvenih mreža), FFmpeg je vjerojatno najmoćniji alat koji ćete pronaći... i to je besplatan softver. Može biti malo zastrašujući jer se njime upravlja iz terminalali s nekoliko naredbe Uz jasnoću i malo vježbe, postaje moćan saveznik za automatizaciju zadataka koji bi s grafičkim urednikom trajali vječno.
U ovom ćete vodiču detaljno vidjeti kako Koristite FFmpeg za izradu videa iz slikovnih datotekaOd instalacije i pripreme fotografija, do kontrole brzine, izlaznog formata, dodavanja zvuka, slojeva ili čak igranja s efektima ubrzanog i usporenog snimanja. Vidjet ćete i nekoliko različitih metoda za rad sa sekvencama slika (specifikatori formata, glob uzorci, concat demuxer) i neke manje tehničke grafičke alternative ako vam naredbeni redak nije jača strana.
Što je FFmpeg i zašto se isplati naučiti kako ga koristiti?
FFmpeg je skup alata i biblioteka otvorenog koda za obradu gotovo bilo kojeg video, audio, pa čak i slikovnog formata. Naziv mu dolazi od "Fast Forward Moving Picture Experts Group" i iako se možda ne čini tako, to je tehnologija koja stoji iza mnogih platformi koje svakodnevno koristite: usluga tekućidruštvene mreže, medijski playeri, online pretvarači itd.
Za razliku od klasičnih editora s grafičkim sučeljem, FFmpeg se kontrolira pomoću naredbe napisane u terminaluOvo se na prvi pogled može činiti impresivnim, ali daje vam točnu kontrolu nad kodiranjem, kodecima, filterima, kvalitetom, rezolucijama i, prije svega, omogućuje vam automatizaciju skupnih procesa sa skriptama ili integraciju u druge sustave.
Među njegovim prednostima je to što je križna platformaradi na Linux, WindowsmacOS i ostali sustavi UNIXNadalje, distribuira se pod GPL/LGPL i BSD part licencama, tako da ga možete koristiti i u osobnim i u komercijalnim projektima bez plaćanja naknade.
S FFmpeg-om možete, na primjer, stvorite timelapse od tisuća fotografija, izvući slike iz videa, kombinirati fotografije, dodavati audio zapise, umetati vodene žigove, mijenjati kodek, smanjivati veličinu datoteke ili generirati animirane GIF-ove… sve iz terminala.
Instaliranje FFmpega na različitim sustavima

Prije nego što počnete pretvarati slike u video, morate imati FFmpeg ispravno instaliranU mnogim GNU/Linux distribucijama već je dostupan u službenim repozitorijima, a u macOS-u i Windowsu ga je također lako dodati.
U Debianu, Ubuntuu i derivatima obično se instalira pomoću upravitelja paketa sustava. Iz terminala možete učiniti nešto jednostavno poput ažuriranja indeksa paketa, a zatim... instalirajte ffmpeg paket s administratorskim privilegijama.
Na macOS-u je najprikladniji način korištenje Homebrew kao upravitelj paketaPrvo instalirajte Homebrew (ako ga već nemate), a zatim dodajte FFmpeg jednom naredbom `brew`. To će izbjeći ručno preuzimanje binarnih datoteka i upravljanje putanjama.
U sustavu Windows imate nekoliko mogućnosti: preuzimanje Službena izvršna datoteka s FFmpeg web stranice i dodajte ga u svoj PATH ili upotrijebite instalacijske programe poput Chocolateyja za instalaciju iz naredbenog retka. U oba slučaja, nakon instalacije, moći ćete pokrenuti naredbu ffmpeg iz bilo kojeg terminala ili naredbenog retka.
Bez obzira na vaš sustav, možete provjeriti je li instalacija prošla dobro upisivanjem naredbe u terminal. ffmpeg -verzijaAko vidite informacije o verziji, informacije o međuverziji i popis podržanih kodeka i formata, spremni ste.
Osnovni koncepti: video ulazi, izlazi i spremnici
Prije nego što se udubimo u nizove slika, korisno je razjasniti neke koncepte o tome kako FFmpeg obrađuje ulaze i izlazeA kako izgledaju MP4, MKV ili AVI formati koje ćete vidjeti u naredbama?
Opća struktura FFmpeg naredbe obično slijedi ovu shemu: parametri i ulazne datoteke (označeno s -i), zatim filteri i opcije kodiranja, te na kraju izlazna datoteka. Između toga možete dodati video parametre (-vf), audio parametre (-af), kodeke (-c:v, -c:a), brzine prijenosa, broj sličica u sekundi itd.
Izlazne datoteke se spremaju unutar video kontejnerMP4, MKV, AVI, MOV, WEBM… sve su to kontejnerski formati. Oni ne definiraju sam video ili audio kodek; oni samo pokazuju kako je sve pakirano kako bi to igrači mogli razumjeti. Na primjer, MP4 datoteka može sadržavati H.264 video i AAC audio, dok MKV datoteka može miješati H.265 s FLAC audiom i… titlovi.
Za većinu upotreba (posebno na webu, mobilnim uređajima i kućnim uređajima za reprodukciju) najpraktičniji format je MP4 s H.264 videomMKV nudi izvrsnu kompatibilnost i dobro uravnotežen omjer kvalitete i veličine. Ako trebate napredne značajke (više zapisa, složeni titlovi itd.), MKV je odlična opcija, iako ga preglednici ne podržavaju tako dobro.
Pomoću FFmpega možete navesti ogroman broj dostupnih kodeka s ffmpeg-kodeci ili specifične enkodere s ffmpeg enkoderima; u stvarnosti, za većinu projekata sa slikama, H.264 (libx264) i AAC audio bit će dovoljni. MP3, ako odlučite dodati zvuk.
Pripremite slike za pretvaranje u video
Ključ dobrog rada FFmpega pri spajanju fotografija je u tome što Slijed slika je ispravno poredan i imenovan.Ovo je posebno važno ako ćete koristiti specifikatore formata kao što su %d, %02d, %03d itd.
FFmpeg razumije različite obrasce imenovanja. Jedan vrlo klasičan je korištenje vodeće nule za numeriranjeNa primjer, fotografije poput photo-001.png, photo-002.png, ... photo-999.png. U tom slučaju, uzorak u naredbi bio bi nešto poput photo-%03d.png (3 označava broj znamenki).
Ako vas broj znamenki ne brine previše, možete koristiti i imena bez vodećih nula: slika1.jpg, slika2.jpg, slika3.jpg… s uzorkom slika%d.jpg. FFmpeg će se ponovno pobrinuti za pronalaženje datoteka čije ime odgovara tom uzorku.
Također postoji mogućnost korištenja uzorak globa zamjenskih znakova, kao što su *.jpg ili image-*.png, idealno kada vaše fotografije nisu numerirane, ali dijele zajedničku ekstenziju ili prefiks. U tom slučaju, FFmpeg skenira sve datoteke koje odgovaraju tom uzorku.
Ako se znak % iz bilo kojeg razloga pojavljuje u nazivima datoteka, morate ga izbjeći udvostručavanjem pomoću %% radije %tako da ga FFmpeg ne interpretira kao specifikator formata samog uzorka numeriranja.
Pretvorite niz slika u osnovni videozapis
Nakon što su sve slike numerirane i smještene u istu mapu, stvaranje jednostavnog videa je jednostavno kao... Navedite ulazni uzorak i naziv izlazne datotekeNa primjer, ako se vaše fotografije zovu img-01.png, img-02.png itd., mogli biste učiniti nešto poput ovoga:
ffmpeg -i img-%02d.png video_izlaz.avi
U ovom slučaju, FFmpeg će tražiti datoteke čije ime počinje s img- nakon čega slijede dvije znamenke i zapakirat će ih u AVI datoteku. brzina reprodukcije i zadani kodek Ovisiće o standardnim postavkama vaše FFmpeg verzije, ali za nešto osnovno je obično dovoljno.
Ako želite precizniju kontrolu, uobičajeno je također navesti unesite brzinu kadrova s -framerate i izlazni kodek s -c:v. Tipičan primjer za MP4 mogao bi biti:
ffmpeg -framerate 5 -i img-%02d.png -c:v libx264 -pix_fmt yuv420p video.mp4
Ovdje određujete da se treba čitati 5 slika u sekundi, da video treba biti kodiran s H.264 (libx264) i da format piksela treba biti yuv420p, koji je najkompatibilniji s uobičajenim televizorima, preglednicima i playerima.
Odabir prave brzine sličica u sekundi
La broj sličica u sekundi (fps) Ovo određuje koliko se slika prikazuje u sekundi u vašem konačnom videu. Ne postoji jedna točna vrijednost: to u potpunosti ovisi o efektu koji želite postići i izvornom materijalu.
Ako generirate stop-motion animacija Za brzi time-lapse, broj sličica u sekundi poput 24 ili 25 fps (filmski/televizijski standard) obično daje osjećaj glatkog kretanja. Za vrlo intenzivne time-lapse snimke možete ići do 30 fps ili čak i više.
Nasuprot tome, za prezentacija pauziranaAko želite da se svaka fotografija prikazuje samo nekoliko sekundi, vjerojatno ćete htjeti puno nižu brzinu sličica u sekundi: na primjer 1 ili 2 fps. To omogućuje da svaka fotografija ostane na zaslonu dulje bez potrebe za dupliciranjem datoteka.
Imajte na umu da ako ne postavite -framerate u ulazu, FFmpeg može koristiti zadanu vrijednost (često 25 fps) što možda ne odgovara onome što želite i generira videozapis koji je prebrz ili prespor, ovisno o broju fotografija.
Osim broja sličica u sekundi, možete kontrolirati i brzina reprodukcije unatrag s filterima kao što su setpts za video (na primjer, setpts=0.5*PTS tako da se reproducira dvostruko brže) i atempo za zvuk (atempo=2.0 tako da se zvuk također reproducira dvostruko brže).
Izradite videozapise iz jedne slike
Nije uvijek potreban cijeli niz. Ponekad je dovoljna jedna fotografija. ostati na ekranu određeno vrijemeNa primjer, kao uvodni ili statični zaslon s naslovom i logotipima prije glavnog sadržaja.
To se radi pomoću opcije -petlja 1što naređuje FFmpeg-u da ponovi sliku u petlji, zajedno s -t za postavljanje ukupnog trajanja isječka. Tipična naredba može biti:
ffmpeg -loop 1 -i cover.jpg -c:v libx264 -t 10 -pix_fmt yuv420p cover.mp4
Taj primjer generira 10-sekundni videozapis u kojem vaša slika naslovnice (.jpg) ostaje statična. Nakon toga možete spojite ovaj kratki isječak s drugim glavnim videom kako bi se formirala jedna kontinuirana datoteka s uključenim uvodom.
Ako želite primijeniti i blagi efekt kretanja (glatko zumiranje, pomicanje itd.), možete koristiti video filtere kao što su zumiranje ili kombinacije skaliranja, obrezivanja i podložnog sloja za simuliranje malog pokreta kamere.
Metoda 1: Specifikacije formata za numerirane nizove
Kada su vaše fotografije ispravno numerirane (slika1.jpg, slika2.jpg, slika3.jpg…), najizravnija metoda za pretvori tu sekvencu u video Radi se o korištenju specifikatora formata u ulaznoj putanji.
Na primjer, ako su vaše datoteke image1.jpg, image2.jpg, ... image50.jpg, možete stvoriti videozapis čitanjem jedne slike u sekundi i generiranjem izlaza od 30 fps pomoću ove naredbe:
ffmpeg -framerate 1 -i image%d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p izlaz.mp4
U ovom kontekstu, -framerate 1 označava da se jedna slika čita u sekundi. Opcija `-r 30` postavlja izlaznu brzinu sličica u sekundi na 30 fps. FFmpeg će koristiti najmanji broj kao prvu sliku; ako želite početi od drugog, možete dodati `-start_number 8`, na primjer, da biste započeli od image8.jpg.
Ako ste datoteke numerirali vodećim nulama (image01.jpg, image02.jpg, ...), morat ćete prilagoditi uzorak: image%02d.jpg za dvije znamenke, image%03d.jpg za tri i tako dalje. Važno je da uzorak točno odgovara načinu na koji ste napisali imena, inače će FFmpeg vratiti pogreške "datoteka nije pronađena".
Izbor -c:v libx264 određuje da se treba koristiti H.264 video koder, dok -pix_fmt yuv420p osigurava da je rezultirajuća datoteka kompatibilna s većinom playera, preglednika i mobilan Trenutno.
Metoda 2: Glob uzorak za nesekvencijalna imena
Ako vaše slike ne slijede jednostavan sustav numeriranja, već dijele uobičajena ekstenzija ili prefiks datotekeMožete koristiti FFmpeg-ov glob uzorak da ih sve odaberete odjednom bez preimenovanja jednog po jednog.
Zamislite da imate hrpu .jpg datoteka pomiješanih s drugim formatima u mapi i želite upotrijebiti sve .jpg datoteke (bez obzira na njihova imena) za stvaranje videa. Tipična naredba izgledala bi ovako:
ffmpeg -framerate 30 -pattern_type glob -i «*.jpg» -c:v libx264 -pix_fmt yuv420p output.mp4
Ovdje označavate s -pattern_type glob Koristit ćete uzorak zamjenskog znaka, a s "*.jpg" govorite FFmpeg-u da uzme u obzir sve datoteke koje završavaju s .jpg u trenutnom direktoriju. Na taj će se način generirati prezentacija u kojoj je svaka fotografija drugačiji kadar videozapisa.
Ako imate imena s zajedničkim prefiksom, mogli biste učiniti nešto poput "image-*.png" odabrati samo datoteke koje počinju s image- i završavaju s .png. To je čist način filtriranja bez prevelike reorganizacije mapa.
Naravno, vrijedi zapamtiti da redoslijed kojim se slike obrađuju To će ovisiti o tome kako sustav vraća datoteke koje odgovaraju uzorku. Ako vam je potreban određeni redoslijed koji ne odgovara abecednom redu, možda je bolje preimenovati datoteke ili prijeći na drugu metodu poput `concat demuxera`.
Metoda 3: Concat demultiplers za prilagođene prezentacije
Kada želite potpunu kontrolu nad redoslijed i trajanje svake slikeConcat demuxer vam je najbolji prijatelj. Ideja je jednostavna: kreirate tekstualnu datoteku koja navodi slike i koliko dugo svaka treba biti prikazana, a zatim FFmpeg generira video slijedeći taj skript.
Prvo, u istoj mapi kao i fotografije, stvorite datoteku pod nazivom nešto poput input.txtUnutra dodajete retke poput ovog:
datoteka 'imagen01.jpg'
trajanje 3
datoteka 'imagen02.jpg'
trajanje 5
datoteka 'imagen03.jpg'
trajanje 2
Svaki blok datoteke/trajanja označava putanja slike i broj sekundi koliko će ostati na zaslonuTrajanje možete mijenjati tako da se neke fotografije prikazuju dulje od drugih, što je savršeno za narativne prezentacije, sažetke projekata itd.
Nakon što imate tekstualna datoteka spremnaIzvršavate naredbu poput ove:
ffmpeg -f concat -safe 0 -i ulaz.txt -c:v libx264 -pix_fmt yuv420p izlaz.mp4
Parametar -f concat označava da koristite demultiplikator spajanjaOpcija `-safe 0` omogućuje manje restriktivne putanje (na primjer, ako koristite apsolutne putanje). FFmpeg će pročitati svaki redak, interno sastaviti niz u radnoj memoriji i generirati video sa svakim okvirom prikazanim tijekom reprodukcije. el tiempo naznačeno.
Dodajte zvuk, tekst i vodene žigove svojim videozapisima
Nakon što savladate dio o pretvaranju fotografija u videozapis, vrlo je uobičajeno da želite dodajte audio zapis (glazba, naracija, efekti) i neki tekstualni ili logotipni sloj kako bi se dobio profesionalniji izgled.
Za uključivanje zvuka u prezentaciju temeljenu na slikama, možete iskoristiti kuglasti uzorci i dodajte drugi -i koji pokazuje na zvučnu datoteku. Na primjer:
ffmpeg -framerate 1 -pattern_type glob -i «*.jpg» -i audio.mp3 -shortest -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4
U ovom slučaju -shortest označava konačno trajanje datoteke Odgovara najkraćoj pjesmi, pa ako je zvuk dulji od niza slika, prekinut će se točno kada fotografije završe.
Ako želite prekriti sliku logotipom ili vodenim žigom postojećim videozapisom, možete koristiti filtar prekriti, Na primjer:
ffmpeg -i video.mp4 -i watermark.png -filter_complex «overlay=10:10» output.mp4
Dio overlay=10:10 označava položaj (x,y) gdje se nalazi slika vodenog žiga Što se tiče videa: Ako želite prilagoditi prozirnost, možete povezati filtar miješanja s all_opacity kako biste postavili, na primjer, 70% neprozirnosti za vodeni žig.
Kontrolirajte kvalitetu, rezoluciju i veličinu datoteke
FFmpeg nudi mnogo opcija za uravnotežite kvalitetu slike, razlučivost i konačnu veličinu videaJedan od najvažnijih je parametar -crf kada koristite libx264 kao kodek.
Vrijednost -crf (Faktor konstantne kamatne stope) Definirajte ciljanu kvalitetu: što je broj manji, to je kvaliteta bolja (i veća datoteka); što je broj veći, to je veća kompresija i manja veličina datoteke. Vrijednosti poput 18 obično pružaju vrlo visoku kvalitetu, gotovo bez vidljivih gubitaka, dok 22-23 štede znatan prostor uz održavanje vrlo respektabilnog izgleda za web projekte.
Ako trebate promijeniti rezoluciju videa, možete koristiti filter za skaliranje Dodavanjem -vf skale=ŠIRINA:VISINA. Na primjer:
ffmpeg -i ulaz.mp4 -vf skala=640:480 -c:v libx264 -pix_fmt yuv420p izlaz_480p.mp4
U ovom primjeru, video se pretvara u 640 × 480 (480p)Par vrijednosti možete prilagoditi specifičnoj rezoluciji koja vam je potrebna (1280×720 za 720p, 1920×1080 za Full HD itd.), imajući na umu da povećanje skale ne stvara detalje, već samo povećava sliku.
Uobičajeni problemi prilikom pretvaranja slika u video
Prilikom rada s FFmpeg-om, posebno prilikom upravljanja mnogim fotografijama, uobičajeno je naići na neke tipične greške koje je važno imati na umu kako ne biste poludjeli.
Jedan od njih ima veze s netočna ili nedosljedna imena datotekaAko nedostaje međunumeriranje, ako postoji čudan skok ili ako uzorak naredbe ne odgovara stvarnim nazivima slika, FFmpeg se može zaustaviti s porukama o pogrešci ili ignorirati neke okvire.
Također su česti tipografske pogreške u naredbamaNedostajući navodnik, krivo napisana crtica, parametar koji bi trebao biti odvojen itd. Dobra je ideja pažljivo pregledati sintaksu i, ako je potrebno, konzultirati službenu dokumentaciju ili primjere upotrebe prije nego što se izludite.
Još jedan važan detalj je format pikselaAko ne postavite yuv420p na izlaz, neki stariji playeri mogu imati problema s kompatibilnošću s određenim formatima piksela prema zadanim postavkama. Dodavanje `-pix_fmt yuv420p` obično vam štedi mnogo problema.
Na kraju, upamtite to FFmpeg je u aktivnom razvojuAko koristite vrlo staru verziju, mogli biste naići na greške, čudno ponašanje ili ograničenja koja su ispravljena u novijim verzijama. Održavanje FFmpega ažurnim općenito je dobra ideja, posebno ako radite s modernim formatima ili visokim rezolucijama.
Automatizirajte složene tijekove rada pomoću skripti i YAML-a
Kada počnete koristiti FFmpeg za više od samo jednokratnog eksperimenta, to ima puno smisla. automatizirati repetitivne zadatke sa skriptama. U nekim projektima, FFmpeg se kombinira s YAML konfiguracijskim datotekama i uslužnim programima poput yq za izgradnju vrlo fleksibilnih tokova.
Na primjer, možete imati rukopis da on čita config.yml gdje definirate popis elemenata (slike, videozapisi, trajanje svakog, razine glasnoće, početni i završni rezovi itd.) i automatski generira privremene isječke koje zatim spaja u jedan konačni videozapis slijedeći te parametre.
Ove vrste sustava omogućuju montažu uvodi sa slikama, glavni video blokovi i institucionalni završni dijeloviDodavanje glatkih prijelaza (s filterima poput xfade za video i acrossfade za audio), podešavanje rezolucije, standardizacija zvuka i općenito osiguravanje vrlo dosljednog stila i kvalitete u cijelom nizu videa.
Prednost ovog pristupa je u tome što Svatko može uređivati YAML datoteku (ili obrazac koji ga generira) za definiranje što želite montirati, dok skripta brine o svim pozivima FFmpeg-a, bez potrebe da krajnji korisnik izravno dodiruje naredbenu liniju.
Netehničke alternative FFmpeg-u za kombiniranje slika i videa
Sve navedeno je odlično ako vam je ugodno pisati naredbe i Ne smeta ti baratanje sintaksom i terminalimaAli istina je da je za mnoge ljude to okruženje teško i preferiraju nešto vizualnije gdje mogu povući i ispustiti.
U tom području postoje programi za uređivanje kao što su Wondershare Filmora ili drugi uređivači s grafičkim sučeljem Ovi alati omogućuju vam izradu fotografija, dodavanje prijelaza, umetanje glazbe i izvoz u MP4 u samo nekoliko klikova. Ne nude istu preciznost ili mogućnosti automatizacije kao FFmpeg, ali su vrlo pristupačni korisnicima koji nisu tehnički potkovani. Ako tražite alternative usmjerene na Windows, možete se poslužiti i vodičima o tome kako... stvarajte videozapise pomoću klasičnih uređivača.
U novije vrijeme pojavila su se i rješenja s Umjetna inteligencija za stvaranje videagdje jednostavno prenesete fotografiju, napišete kratki opis, a sustav se brine za animiranje slike, dodavanje pokreta kamere, interpolaciju kadrova, produljenje trajanja isječka ili čak generiranje automatskih zvučnih zapisa.
Ovi alati su dizajnirani za one koji traže vizualno privlačan rezultat bez ulaženja u koncepte poput kodeka, spremnika, brzine sličica u sekundi ili filtera, uz cijenu žrtvovanja finog podešavanja kontrole nad svakim parametrom. FFmpeg, međutim, ostaje idealan izbor kada vam je potrebno točnost, ponovljivost i mogućnost integracije u automatizirane tijekove rada ili složene projekte.
Nakon što shvatite kako FFmpeg interpretira obrasce imenovanja, kako se nosi s brzinom sličica u sekundi, kodecima, formatom piksela, trajanjem i spajanjem, postaje svojevrsni švicarski nožić koji možete koristiti za... prelazak s jednostavnih kolekcija slika na uglađene video dijeloveSpremno za timelapse, prezentacije, online tečajeve, marketinške kampanje ili bilo koji drugi projekt koji vam padne na pamet, sve uz slobodu besplatnog softvera i snagu komandne linije.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje pisanjem, a to je ono što ću učiniti na ovom blogu, pokazati vam sve najzanimljivije stvari o gadgetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se snađete u digitalnom svijetu na jednostavan i zabavan način.