- Med FFmpeg kan du omvandla bildsekvenser till anpassade videor genom att kontrollera bildhastighet, kodekar och upplösning.
- Det finns flera inmatningsmetoder (formatspecifikationer, glob-mönster och concat-demuxer) för att hantera olika filnamnstyper.
- Det är möjligt att berika de resulterande videorna genom att lägga till ljud, vattenstämplar, effekter, hastighetsändringar och skalning.
- FFmpeg utmärker sig för sin kraft och automatisering, medan grafiska alternativ erbjuder enklare arbetsflöden för icke-tekniska användare.
Om du någonsin undrat hur man förvandlar ett berg av foton till en smidig video (oavsett om det är en timelapse, ett bildspel eller ett klipp från sociala medier), är FFmpeg förmodligen det kraftfullaste verktyget du hittar ... och det är gratis programvara. Det kan verka lite skrämmande eftersom det styrs från terminalen, men med några tydliga kommandon och lite övning blir det en otrolig allierad för att automatisera uppgifter som skulle ta en evighet med en grafikredigerare.
Den här guiden visar dig i detalj hur du använder FFmpeg för att skapa videor från bildfiler : från att installera det och förbereda dina foton, till att kontrollera hastighet, utdataformat, lägga till ljud, överlägg och till och med experimentera med snabba och långsamma effekter. Du kommer också att se flera olika metoder för att arbeta med bildsekvenser (formatspecifikationer, globmönster, concat demuxer) och några mindre tekniska grafiska alternativ om kommandoraden inte är din grej.
Vad är FFmpeg och varför är det värt att lära sig hur man använder det?
FFmpeg är en uppsättning verktyg och bibliotek med öppen källkod för att bearbeta praktiskt taget alla video-, ljud- och till och med bildformat. Namnet kommer från "Fast Forward Moving Picture Experts Group", och även om det kanske inte verkar så, är det tekniken bakom många plattformar du använder dagligen: streamingtjänster , sociala nätverk, mediaspelare, online-konverterare och mer.
Till skillnad från traditionella editorer med ett grafiskt gränssnitt styrs FFmpeg med kommandon som skrivs in i terminalen . Detta kan verka skrämmande till en början, men det ger dig exakt kontroll över kodning, kodekar, filter, kvalitet, upplösningar och, viktigast av allt, låter dig automatisera batchprocesser med skript eller integrera det i andra system.
Bland dess styrkor är dess plattformsoberoende kompatibilitet : den körs på Linux , Windows , macOS och andra UNIX -liknande system . Dessutom distribueras den under GPL/LGPL- och BSD-licenser, så du kan använda den i både personliga och kommersiella projekt utan att betala en avgift.
Med FFmpeg kan du till exempel skapa en timelapse från tusentals foton , extrahera bilder från en video , kombinera foton, lägga till ljudspår, infoga vattenstämplar, ändra codec, minska filstorleken eller generera animerade GIF-bilder ... allt från terminalen.
Installera FFmpeg på olika system

Innan du börjar konvertera bilder till video måste du ha FFmpeg korrekt installerat . Det finns redan tillgängligt i de officiella arkiven för många GNU/Linux-distributioner, och det är också enkelt att lägga till i macOS och Windows.
På Debian, Ubuntu och derivator installeras det vanligtvis med hjälp av systemets pakethanterare. Från terminalen kan du göra något så enkelt som att uppdatera paketindexet och sedan installera ffmpeg-paketet med administratörsbehörighet.
På macOS är det enklaste sättet att använda Homebrew som pakethanterare . Installera först Homebrew (om du inte redan har det) och lägg sedan till FFmpeg med ett enda `brew`-kommando. Detta undviker att behöva ladda ner binärfiler manuellt och hantera sökvägar.
I Windows har du flera alternativ: ladda ner den officiella körbara filen från FFmpeg-webbplatsen och lägg till den i din PATH, eller använd installationsprogram som Chocolatey för att installera den från kommandoraden. I båda fallen kan du, när den väl är installerad, köra ffmpeg-kommandot från valfri terminal eller kommandotolk.
Oavsett vilket system du har kan du kontrollera att installationen gick bra genom att skriva `ffmpeg -version` i terminalen . Om du ser versions- och versionsinformation, samt en lista över codecs och format som stöds, är du redo att fortsätta.
Grundläggande begrepp: videoingångar, -utgångar och containrar
Innan vi fördjupar oss i bildsekvenserna är det bra att förstå några koncept om hur FFmpeg hanterar in- och utdata , och hur MP4-, MKV- eller AVI-formaten som du ser i kommandona ser ut.
Den allmänna strukturen för ett FFmpeg-kommando följer vanligtvis detta mönster: inparametrar och filer (indikerade med -i), sedan filter och kodningsalternativ, och slutligen utdatafilen. Däremellan kan du lägga till parametrar för video (-vf), ljud (-af), codecs (-c:v, -c:a), bitrate, bildhastigheter etc.
Utdatafilerna sparas i en videobehållare . MP4, MKV, AVI, MOV, WEBM… dessa är alla behållare. De definierar inte själva video- eller ljudkodeken; de anger bara hur allt är paketerat så att spelare kan förstå det. Till exempel kan en MP4-fil innehålla H.264-video och AAC-ljud, medan en MKV-fil kan kombinera H.265-video med FLAC-ljud och undertexter.
För de flesta användningsområden (särskilt på webben, mobila enheter och hemmamediaspelare) är MP4 med H.264-video det mest praktiska formatet , eftersom det erbjuder utmärkt kompatibilitet och ett välbalanserat förhållande mellan kvalitet och storlek. Om du behöver avancerade funktioner (flera spår, komplexa undertexter etc.) är MKV ett bra alternativ, även om det inte stöds lika bra av webbläsare.
Med FFmpeg kan du lista det enorma antalet tillgängliga codecs med ffmpeg -codecs eller specifika kodare med ffmpeg -kodare; i verkligheten räcker H.264 (libx264) och AAC- eller MP3 -ljud för de flesta projekt med bilder , om du bestämmer dig för att lägga till ljud.
Förbered bilderna för att konvertera dem till video
Nyckeln till att FFmpeg fungerar korrekt vid sammanfogning av foton är att bildsekvensen är korrekt ordnad och namngiven . Detta är särskilt viktigt om du ska använda formatspecifikationer som %d, %02d, %03d, etc.
FFmpeg förstår olika namngivningsmönster. Ett mycket vanligt mönster är att använda inledande nollor för numrering , till exempel foton som photo-001.png, photo-002.png, … photo-999.png. I så fall skulle mönstret i kommandot vara något i stil med photo-%03d.png (3:an indikerar antalet siffror).
Om du inte är alltför bekymrad över antalet siffror kan du också använda namn utan inledande nollor : bild1.jpg, bild2.jpg, bild3.jpg… med ett mönster som bild%d.jpg. Återigen, FFmpeg tar hand om att hitta filer vars namn matchar det mönstret.
Det finns också möjlighet att använda jokertecken som glob-mönster , till exempel *.jpg eller image-*.png, vilket är idealiskt när dina foton inte är numrerade men delar ett gemensamt filtillägg eller prefix. I så fall söker FFmpeg efter alla filer som matchar det mönstret.
Om ett %-teckne av någon anledning förekommer i filnamn måste du escape-teckenet genom att dubblera det, med %% istället för % , så att FFmpeg inte tolkar det som en formatspecificerare för själva numreringsmönstret.
Konvertera en bildsekvens till en enkel video
När du har numrerat alla dina bilder och i samma mapp är det lika enkelt att skapa en enkel video som att ange inmatningsmönstret och utdatafilens namn . Om dina foton till exempel heter img-01.png, img-02.png osv. kan du göra något liknande:
ffmpeg -i img-%02d.png video_output.avi
I det här fallet letar FFmpeg efter filer vars namn börjar med img- följt av två siffror och paketerar dem till en AVI-fil. Uppspelningshastigheten och standardkodeken beror på standardinställningarna för din FFmpeg-version, men för grundläggande användning är det vanligtvis tillräckligt.
För mer exakt kontroll är det vanligt att även ange ingångsbildhastigheten med `-framerate` och utgångskodeken med `-c:v`. Ett typiskt exempel för MP4 kan vara:
ffmpeg -bildfrekvens 5 -i img-%02d.png -c:v libx264 -pix_fmt yuv420p video.mp4
Här anger du att 5 bilder per sekund ska läsas, att videon ska kodas med H.264 (libx264) och att pixelformatet ska vara yuv420p, vilket är det mest kompatibla med vanliga tv-apparater, webbläsare och spelare.
Att välja rätt bildfrekvens
Bildfrekvensen (fps) avgör hur många bilder som visas per sekund i din slutliga video. Det finns inget enskilt korrekt värde: det beror helt på vilken effekt du strävar efter och källmaterialet.
Om du skapar en stop-motion-animation eller en snabb timelapse ger bildfrekvenser som 24 eller 25 fps (film-/TV-standarden) vanligtvis en känsla av jämn rörelse. För mycket intensiva timelapse-sekvenser kan du gå upp till 30 fps eller ännu högre.
Å andra sidan, för ett bildspel i slowmotion , där du vill att varje foto ska visas i några sekunder, vill du förmodligen ha en mycket lägre bildfrekvens: till exempel 1 eller 2 bps. Detta gör att varje foto kan visas längre på skärmen utan att du behöver duplicera filer.
Tänk på att om du inte ställer in bildfrekvensen i inmatningen kan FFmpeg använda ett standardvärde (ofta 25 fps ) som kanske inte matchar vad du vill ha och kan generera en video som är för snabb eller för långsam beroende på antalet foton.
Förutom bildhastigheten kan du styra uppspelningshastigheten efteråt med filter som setpts för video (t.ex. setpts=0.5*PTS för att spela upp med dubbel hastighet) och atempo för ljud (atempo=2.0 för att spela upp ljudet med dubbel hastighet).
Skapa videor från en enda bild
Du behöver inte alltid en fullständig sekvens. Ibland räcker det med ett enda fotografi som visas på skärmen under en viss tid , till exempel som en introduktion eller en statisk skärm med titel och logotyper före huvudinnehållet.
Detta uppnås med hjälp av alternativet `-loop 1` , som anger att FFmpeg ska loopa bilden, tillsammans med `-t` för att ställa in den totala klippets längd. Ett typiskt kommando kan vara:
ffmpeg -loop 1 -i omslag.jpg -c:v libx264 -t 10 -pix_fmt yuv420p omslag.mp4
Det här exemplet genererar en 10-sekunders video där din omslagsbild (.jpg) förblir statisk. Därifrån kan du kombinera det här korta klippet med en annan huvudvideo för att skapa en enda, sammanhängande fil, inklusive introduktionen.
Om du också vill tillämpa en liten rörelseeffekt (smidig zoom, panorering etc.) kan du använda videofilter som zoompan eller kombinationer av skala, beskärning och pad för att simulera en liten kamerarörelse.
Metod 1: Formatspecifikationer för numrerade sekvenser
När dina foton är korrekt numrerade (bild1.jpg, bild2.jpg, bild3.jpg…) är den mest direkta metoden för att konvertera den sekvensen till en video att använda formatspecifikationer i inmatningssökvägen.
Om dina filer till exempel är image1.jpg, image2.jpg, … image50.jpg, kan du skapa en video genom att läsa en bild per sekund och generera en utdata med 30 fps med det här kommandot:
ffmpeg -bildhastighet 1 -i bild%d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p utdata.mp4
I detta sammanhang indikerar `-framerate 1` att en bildruta per sekund läses , och `-r 30` ställer in bildrutefrekvensen för videon till 30 fps. FFmpeg tar den första bilden som den med det lägsta numret; om du vill börja med en annan bild kan du lägga till `-start_number 8`, till exempel, för att börja med image8.jpg.
Om du har numrerat filerna med inledande nollor (image01.jpg, image02.jpg, …) måste du justera mönstret: image%02d.jpg för två siffror, image%03d.jpg för tre, och så vidare. Det är viktigt att mönstret matchar exakt hur du har skrivit namnen, annars returnerar FFmpeg felmeddelandet "filen hittades inte".
Alternativet -c:v libx264 anger att H.264-videokodaren ska användas, medan -pix_fmt yuv420p säkerställer att den resulterande filen är kompatibel med de flesta aktuella spelare, webbläsare och mobila enheter.
Metod 2: Globmönster för icke-sekventiella namn
Om dina bilder inte följer ett enkelt numreringssystem, utan delar ett gemensamt filtillägg eller prefix , kan du använda FFmpegs glob-mönster för att markera dem alla samtidigt utan att byta namn på dem en efter en.
Tänk dig att du har en massa .jpg-filer blandade med andra format i en mapp, och du vill använda alla .jpg-filer (oavsett deras namn) för att skapa en video. Ett typiskt kommando skulle se ut ungefär så här:
ffmpeg -framerate 30 -pattern_type glob -i «*.jpg» -c:v libx264 -pix_fmt yuv420p output.mp4
Här indikerar `-pattern_type` globen att du kommer att använda ett jokerteckenmönster, och `*.jpg` anger att FFmpeg ska ta hänsyn till alla filer som slutar på `.jpg` i den aktuella katalogen. Detta genererar ett bildspel där varje bild representerar en annan bildruta i videon.
Om du har filnamn med ett vanligt prefix kan du göra något i stil med "image-*.png" för att bara välja de filer som börjar med image- och slutar med .png. Det är ett snyggt sätt att filtrera utan att behöva omorganisera dina mappar för mycket.
Det är dock värt att komma ihåg att ordningen i vilken bilderna bearbetas beror på hur systemet returnerar filerna som matchar mönstret. Om du behöver en specifik ordning som inte följer den alfabetiska ordningen kan det vara bättre att byta namn på filerna eller byta till en annan metod som `concat demuxer`.
Metod 3: Concat demuxer för anpassade presentationer
När du vill ha fullständig kontroll över ordningen och varaktigheten för varje bild är concat demuxer din bästa vän. Idén är enkel: du skapar en textfil som listar bilderna och hur länge varje bild ska visas, och sedan genererar FFmpeg videon enligt det skriptet.
Först, i samma mapp som fotona, skapa en fil som heter något i stil med input.txt . Inuti, lägg till rader som denna:
filen 'imagen01.jpg'
varaktighet 3
filen 'imagen02.jpg'
varaktighet 5
filen 'imagen03.jpg'
varaktighet 2
Varje block av typen `fil/duration` anger bildens sökväg och antalet sekunder den ska visas på skärmen . Du kan variera varaktigheten så att vissa foton visas längre än andra, vilket är perfekt för berättade presentationer, projektsammanfattningar med mera.
När du har textfilen klar kör du ett kommando som liknar detta:
ffmpeg -f concat -safe 0 -i input.txt -c:v libx264 -pix_fmt yuv420p output.mp4
Parametern `-f concat` indikerar att du använder sammanfogningsdemuxern , och `-safe 0` tillåter mindre restriktiva sökvägar (till exempel om du använder absoluta sökvägar). FFmpeg läser varje rad, sätter ihop sekvensen internt i arbetsminnet och genererar videon med varje bildruta som visas under den angivna tiden.
Lägg till ljud, text och vattenstämplar i dina videor
När du väl bemästrat processen att konvertera foton till video är det mycket vanligt att vilja lägga till ett ljudspår (musik, berättarröst, effekter) och lite text- eller logotypöverlägg för att ge det en mer professionell finish.
För att integrera ljud i en bildbaserad presentation kan du utnyttja glob-mönster och lägga till ett andra -i som pekar på en ljudfil. Till exempel:
ffmpeg -framerate 1 -pattern_type glob -i «*.jpg» -i audio.mp3 -shortest -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4
I det här fallet indikerar -shortest att filens slutliga längd ska matcha det kortaste spåret, så om ljudet är längre än bildsekvensen kommer det att klippas av precis när fotona är klara.
Om du vill lägga en logotyp eller vattenstämpel över en bild på en befintlig video kan du använda överlagringsfiltret . Till exempel:
ffmpeg -i video.mp4 -i vattenstämpel.png -filter_complex «överlägg=10:10» utdata.mp4
Delen `overlay=10:10` anger positionen (x,y) där vattenstämpelbilden placeras över videon. Om du vill justera transparensen kan du länka ett `blend`-filter med `all_opacity` för att till exempel ställa in 70 % opacitet för vattenstämpeln.
Kontrollera kvalitet, upplösning och filstorlek
FFmpeg erbjuder många alternativ för att balansera bildkvalitet, upplösning och slutlig videostorlek . En av de viktigaste är parametern -crf när libx264 används som kodek.
Värdet på -crf (Constant Rate Factor) definierar målkvaliteten: ju lägre siffra, desto bättre kvalitet (och ju större filen); ju högre siffra, desto mer komprimering och desto mindre filstorlek. Värden som 18 ger vanligtvis mycket hög kvalitet, nästan utan synlig förlust, medan 22-23 sparar en avsevärd mängd utrymme samtidigt som de bibehåller ett mycket respektabelt utseende för webbprojekt.
Om du behöver ändra videoupplösningen kan du använda skalningsfiltret genom att lägga till `-vf scale=WIDTH:HEIGHT`. Till exempel:
ffmpeg -i input.mp4 -vf scale=640:480 -c:v libx264 -pix_fmt yuv420p output_480p.mp4
I det här exemplet konverteras videon till 640×480 (480p) . Du kan anpassa värdeparet till den specifika upplösning du behöver (1280×720 för 720p, 1920×1080 för Full HD, etc.), med tanke på att uppskalning inte skapar detaljer, det förstorar bara bilden.
Vanliga problem vid konvertering av bilder till video
När man arbetar med FFmpeg, särskilt när man hanterar många foton, är det vanligt att man stöter på några typiska fel som är värda att tänka på för att undvika att bli galen.
En av dem har att göra med felaktiga eller inkonsekventa filnamn : om en mellanliggande numrering saknas, om det finns ett konstigt hopp, eller om kommandomönstret inte matchar det faktiska bildnamnet, kan FFmpeg stoppa med felmeddelanden eller ignorera vissa bildrutor.
Stavfel är också vanliga i kommandon : ett saknat citattecken, ett felstavat bindestreck, en parameter som ska separeras, etc. Det är en bra idé att noggrant granska syntaxen och, om nödvändigt, konsultera den officiella dokumentationen eller användningsexemplen innan du gör dig själv galen.
En annan viktig detalj är pixelformatet . Om du inte ställer in yuv420p som utgång kan vissa äldre spelare ha kompatibilitetsproblem med vissa pixelformat som standard. Att lägga till `-pix_fmt yuv420p` sparar vanligtvis mycket problem.
Slutligen, kom ihåg att FFmpeg är under aktiv utveckling . Om du använder en mycket gammal version kan du stöta på buggar, ovanligt beteende eller begränsningar som har åtgärdats i nyare versioner. Att hålla FFmpeg uppdaterat är generellt en bra idé, särskilt om du arbetar med moderna format eller höga upplösningar.
Automatisera komplexa arbetsflöden med skript och YAML
När du börjar använda FFmpeg för mer än bara ett engångsexperiment är det mycket klokt att automatisera repetitiva uppgifter med skript. Vissa projekt kombinerar FFmpeg med YAML-konfigurationsfiler och verktyg som yq för att bygga mycket flexibla arbetsflöden.
Du kan till exempel ha ett skript som läser en config.yml-fil där du definierar en lista med element (bilder, videor, längd för varje element, volymnivåer, start- och slutklipp etc.) och automatiskt genererar tillfälliga klipp som sedan sammanfogas till en enda slutgiltig video enligt dessa parametrar.
Den här typen av system låter dig skapa introduktioner med stillbilder, huvudvideoblock och institutionella avslutningar , lägga till mjuka övergångar (med filter som xfade för video och crossfade för ljud), retuschera upplösning, standardisera ljudet och generellt säkerställa en mycket konsekvent stil och kvalitet genom en serie videor.
Fördelen med den här metoden är att vem som helst kan redigera YAML-filen (eller ett formulär som genererar den) för att definiera vad de vill montera, medan skriptet hanterar alla anrop till FFmpeg, utan att slutanvändaren behöver röra kommandoraden direkt.
Icke-tekniska alternativ till FFmpeg för att kombinera bilder och video
Allt ovanstående är utmärkt om du är bekväm med att skriva kommandon och inte har något emot att hantera syntax och terminalen . Men det är sant att för många är den miljön lite av en slitsam process, och de föredrar något mer visuellt där de kan dra och släppa.
Inom detta område finns redigeringsprogram som Wondershare Filmora och andra redigerare med grafiska gränssnitt som låter dig skapa bildspel, lägga till övergångar, infoga musik och exportera till MP4 med bara några få klick. De erbjuder inte samma precision eller automatiseringsmöjligheter som FFmpeg, men de är mycket tillgängliga för icke-tekniska användare. Om du letar efter Windows-centrerade alternativ kan du också konsultera guider om hur man skapar videor med klassiska redigerare.
Nyligen har AI-drivna lösningar också dykt upp för att skapa videor , där du helt enkelt laddar upp ett foto, skriver en kort beskrivning, och systemet tar hand om att animera bilden, lägga till kamerarörelser, interpolera bildrutor, förlänga klippets längd eller till och med generera automatiska ljudspår.
Dessa verktyg är utformade för de som söker visuellt tilltalande resultat utan att behöva fördjupa sig i koncept som codecs, containrar, bildhastighet eller filter, på bekostnad av att offra finjustering av varje parameter. FFmpeg, å andra sidan, är fortfarande det perfekta valet när du behöver precision, reproducerbarhet och möjligheten att integrera det i automatiserade arbetsflöden eller komplexa projekt.
När du väl förstår hur FFmpeg tolkar namngivningsmönster, hur man hanterar bildhastighet, kodekar, pixelformat, varaktigheter och sammanfogning, blir det ett slags schweizisk armékniv som låter dig gå från enkla bildsamlingar till polerade videobitar , redo för timelapse-sekvenser, presentationer, onlinekurser, marknadsföringskampanjer eller vilket annat projekt du kan tänka dig, allt med friheten hos fri programvara och kraften i kommandoraden.
Passionerad författare om bytesvärlden och tekniken i allmänhet. Jag älskar att dela med mig av min kunskap genom att skriva, och det är vad jag kommer att göra i den här bloggen, visa dig alla de mest intressanta sakerna om prylar, mjukvara, hårdvara, tekniska trender och mer. Mitt mål är att hjälpa dig att navigera i den digitala världen på ett enkelt och underhållande sätt.