Automatisering og utvikling

Massekonvertering av bilder med FFmpeg: en praktisk guide

5 min lesetid
Massekonvertering av bilder med FFmpeg: en praktisk guide

Du har 500 PNG-skjermbilder som skal konverteres til WebP for nettstedet ditt. FFmpeg er best kjent som et videoverktøy, men håndterer bilder like bra.

Hvorfor FFmpeg for bilder?

FFmpeg er sannsynligvis allerede installert hvis du jobber med video. For RAW-formater (CR2, NEF, ARW) bruk darktable eller RawTherapee.

Installer FFmpeg

bash
# macOS
brew install ffmpeg

# Ubuntu / Debian
sudo apt install ffmpeg

# Windows (Chocolatey)
choco install ffmpeg

bash
ffmpeg -version

Grunnleggende mønster

Hver bulk-konverteringskommando følger samme struktur: en shell-løkke (Linux/macOS) eller en for-løkke (Windows). Skriv alltid til en separat utdatakatalog.

Massekonverter PNG til JPG

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -q:v 2 "output/${f%.png}.jpg"
done

bash
mkdir output
for %f in (*.png) do ffmpeg -i "%f" -q:v 2 "output/%~nf.jpg"

bash
New-Item -ItemType Directory -Force output
Get-ChildItem *.png | ForEach-Object {
  ffmpeg -i $_.FullName -q:v 2 "output/$($_.BaseName).jpg"
}

-q:vKvalitetTypisk bruk
1-2Nesten tapsfriTrykk, arkivering
3-5Høy kvalitetWebfotografi
6-10MiddelsForhåndsvisninger
11+Lav kvalitetUnngå

Massekonverter JPG til WebP

bash
mkdir -p output
for f in *.jpg *.jpeg; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" -quality 85 "output/${f%.*}.webp"
done

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -lossless 1 "output/${f%.png}.webp"
done

WebP produserer typisk 25–35 % mindre filer enn tilsvarende JPG. For bilder er 80–85 det optimale området.

Konverter til PNG

bash
mkdir -p output
for f in *.jpg *.jpeg; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" "output/${f%.*}.png"
done

Konverter blandede formater

bash
mkdir -p output
for f in *.jpg *.jpeg *.png *.webp *.tiff *.bmp; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" -q:v 3 "output/${f%.*}.jpg"
done

Endre størrelse og konverter i ett trinn

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 "output/${f%.png}.jpg"
done

bash
mkdir -p output
for f in *.jpg; do
  ffmpeg -i "$f" -vf "crop='min(iw,ih)':'min(iw,ih)',scale=200:200" \
    "output/${f%.jpg}_thumb.jpg"
done

Rekursiv behandling av undermapper

bash
find . -name "*.png" -not -path "./output*" | while read f; do
  output="output/${f#./}"
  mkdir -p "$(dirname "$output")"
  ffmpeg -i "$f" -q:v 3 "${output%.png}.jpg"
done

Parallell behandling for hastighet

bash
mkdir -p output
ls *.png | xargs -P 4 -I {} sh -c 'ffmpeg -i "$1" -q:v 3 "output/${1%.png}.jpg"' _ {}

På en 8-kjerners maskin med SSD reduserer parallell behandling typisk konverteringstiden 3–5 ganger.

Fremdriftsindikator

bash
total=$(ls *.png | wc -l)
count=0
mkdir -p output
for f in *.png; do
  count=$((count + 1))
  echo "[$count/$total] $f"
  ffmpeg -loglevel quiet -i "$f" -q:v 3 "output/${f%.png}.jpg"
done

Feilhåndtering

bash
mkdir -p output
error_log="errors.txt"
> "$error_log"
for f in *.jpg *.jpeg *.png *.webp; do
  [ -f "$f" ] || continue
  if ffmpeg -loglevel error -i "$f" -quality 85 "output/${f%.*}.webp" 2>>"$error_log"; then
    echo "✓ $f"
  else
    echo "✗ $f"
  fi
done

Kommandoreferanse

KonverteringKommando (Linux/macOS)Merknad
Alle PNG → JPGfor f in *.pngdo ffmpeg -i "$f" -q:v 3 output/${f%.png}.jpg
Alle JPG → WebPfor f in *.jpgdo ffmpeg -i "$f" -quality 85 output/${f%.jpg}.webp
Alle JPG → PNGfor f in *.jpgdo ffmpeg -i "$f" output/${f%.jpg}.png
Alle → WebP tapsfrittfor f in *.pngdo ffmpeg -i "$f" -lossless 1 output/${f%.png}.webp
Endre størrelse + konverterfor f in *.jpgdo ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 output/${f%.jpg}.jpg

Når FFmpeg ikke er riktig verktøy

RAW-kameraformater — begrenset støtte. Bruk darktable eller RawTherapee.

AVIF-koding — mulig men veldig treg uten maskinvareakselerasjon.

Bare noen få filer? FastConvert er raskere — uten installasjon.

Ofte stilte spørsmål

Standard nei. Legg til -map_metadata 0: ffmpeg -i input.jpg -map_metadata 0 -q:v 3 output.jpg

Skjer når kilde-JPG allerede er kraftig komprimert. Konverter alltid fra beste tilgjengelige kilde.

Bruk PNG som utdataformat eller -lossless 1 for WebP.

Legg til -y for automatisk overskriving eller -n for å hoppe over eksisterende filer.

Oppsummering

Masse-bildekonvertering med FFmpeg handler om en enkel shell-løkke. Test alltid på en liten batch før du behandler hele biblioteket.

Konvertere bilder uten kommandolinjen? FastConvert — gratis, ingen registrering.

Del