FFmpeg för nybörjare: gör en liggande AI-demo vertikal utan att beskära motivet

En färdig AI-demo kan se rätt ut på datorn och ändå fungera dåligt i ett vertikalt flöde. Zoomar du upp en liggande skärminspelning till 9:16 försvinner ofta menyer, resultat eller andra delar som tittaren behöver se.

I den här guiden behåller vi hela den skarpa 16:9-bilden. En förstorad och suddig kopia fyller ytan bakom den. Resultatet blir en 1080 × 1920-video där huvudbilden är komplett, centrerad och lätt att granska.

FFmpeg är ett verktyg med öppen källkod som läser, filtrerar och kodar video- och ljudströmmar. Här använder vi det till en enda uppgift: en befintlig MP4-fil blir en vertikal MP4-fil. Vi skapar ingen ny video, berättarröst eller textning.

Vem guiden passar

Du har en kort produktdemo, kursförklaring eller skärminspelning i liggande format. Den är redan godkänd, men du behöver en vertikal förhandsvisning utan att skära bort gränssnittet eller slutresultatet.

Efter guiden har du:

  • en vertikal MP4 i 1080 × 1920
  • hela den skarpa huvudbilden kvar
  • en suddig bakgrund som fyller 9:16
  • den första ljudströmmen med när den finns
  • en visuell och teknisk kontroll av slutfilen

Installera och kontrollera FFmpeg

Hämta FFmpeg via FFmpegs officiella nedladdningssida. Sidan länkar till paket och byggen för Linux, Windows och macOS. Installationen skiljer sig mellan systemen.

På Ubuntu testade vi:

sudo apt update
sudo apt install ffmpeg
ffmpeg -version
ffprobe -version

Kontrollera också att just ditt bygge har kodarna libx264 och aac:

ffmpeg -hide_banner -encoders

Sök efter libx264 och aac i listan. libx264 finns inte i alla FFmpeg-byggen.

Källor: FFmpeg Download och FFmpeg codec documentation.

Förbered källfilen

Skapa en egen arbetsmapp och lägg en kopia av videon där. Döp kopian till:

demo-landscape.mp4

Kommandot nedan är testat med en vanlig 16:9-video med kvadratiska pixlar, en videoström och högst ett ljudspår. Kontrollera källan först:

ffprobe -v error \
  -show_entries stream=codec_type,width,height,sample_aspect_ratio \
  -of json demo-landscape.mp4

För den här guiden ska videon vara 16:9 och sample_aspect_ratio vara 1:1. Om värdet är något annat behöver flödet anpassas. Receptet försöker inte bevara undertexter, kapitel, flera ljudspår eller HDR- och färgmetadata.

Så fungerar de två videolagren

FFmpeg delar samma video i två visuella lager:

  1. Bakgrundskopian förstoras tills den täcker 1080 × 1920. Överskottet beskärs och bilden suddas.
  2. Huvudbilden skalas ned tills hela 16:9-bilden ryms i den vertikala ytan.
  3. Den skarpa huvudbilden centreras över den suddiga bakgrunden.

"Utan beskärning" gäller alltså huvudbilden. Bakgrundskopian beskärs medvetet för att fylla formatet.

Kör den vertikala konverteringen

Kör kommandot i samma mapp som källfilen:

ffmpeg -y -i demo-landscape.mp4 \
  -filter_complex "[0:v]split=2[bg][fg];[bg]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=30:10[bgv];[fg]scale=1080:1920:force_original_aspect_ratio=decrease[fgv];[bgv][fgv]overlay=(W-w)/2:(H-h)/2:shortest=1,setsar=1[outv]" \
  -map "[outv]" -map 0:a:0? \
  -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p \
  -c:a aac -b:a 128k -movflags +faststart \
  demo-vertical.mp4

Flaggan -y skriver över en befintlig demo-vertical.mp4 utan att fråga. Byt utfilens namn om du vill behålla en tidigare version.

Det långa filtersteget gör sex saker:

  • split skapar bakgrunds- och huvudbildslagret.
  • increase, crop och boxblur fyller och suddar bakgrunden.
  • decrease passar in hela huvudbilden.
  • overlay centrerar lagren.
  • -map 0:a:0? tar med den första ljudströmmen när den finns.
  • H.264 och AAC kodas i en MP4-fil, medan +faststart flyttar MP4-metadata mot filens början.

Ljudet kodas om till AAC. Det är alltså inte bitidentiskt med källan. Vi använder inte en avslutande -shortest, eftersom ett kortare ljudspår annars kan kapa bildens slut.

Källor: FFmpeg documentation samt FFmpeg Filters Documentation och FFmpeg Formats Documentation.

Granska videon, inte bara siffrorna

Spela upp demo-vertical.mp4 från början till slut. Stanna vid början, mitten och slutet. Kontrollera att:

  • hela huvudbilden är synlig
  • bilden inte är utdragen
  • inga kanter har kapats av misstag
  • bakgrunden fyller den vertikala ytan utan svarta glapp
  • videon fortsätter hela vägen till rätt slutbild
  • ljudet hörs tydligt och slutar där du förväntar dig

Kör sedan en teknisk kontroll:

ffprobe -v error \
  -show_entries stream=codec_type,codec_name,width,height,sample_aspect_ratio,display_aspect_ratio \
  -show_entries format=duration \
  -of json demo-vertical.mp4

Du ska se 1080 × 1920, visningsformatet 9:16, pixelförhållandet 1:1, H.264-video och AAC-ljud när källan hade ljud. Jämför även längden med originalet.

ffprobe kan läsa filens tekniska metadata. Det kan inte avgöra om en knapp har hamnat utanför bilden eller om slutet känns avhugget. Därför behövs både uppspelning och kontrollbilder.

Källa: ffprobe Documentation.

Vanliga misstag

Undvik att skala huvudbilden så att den fyller hela 9:16-ytan. Då beskär du just den information guiden ska bevara. Sätt inte heller både bredd och höjd utan bibehållet bildförhållande, eftersom videon då kan bli utdragen.

Om ljudet saknas har du troligen glömt den uttryckliga ljudmappningen efter det filtrerade videolagret. Om libx264 inte finns behöver du använda ett FFmpeg-bygge eller en kodare som stöds i din miljö.

Nästa steg

Nu har du ett repeterbart flöde för en färdig liggande video och en granskad vertikal kopia. Textning, flera exportformat och automatisk publicering hör hemma i senare steg.

Om ni gör samma videoanpassning varje vecka kan Hammer Automation hjälpa er att paketera kommandot, filnamnen, kontrollpunkterna och godkännandet till ett repeterbart arbetsflöde. Läs också hur ett kort produktklipp kan få röst, musik och ljudeffekter i Adobe Firefly.

Vanliga frågor

Beskär FFmpeg originalvideon i det här flödet?

Den skarpa huvudbilden skalas så att hela bilden ryms. Bara den förstorade, suddiga bakgrundskopian beskärs för att fylla 9:16.

Varför använda suddig bakgrund i stället för att zooma in?

Den fyller den vertikala ytan utan att sträcka huvudbilden eller skära bort delar av demon.

Behåller den vertikala videon ljudet?

Kommandot mappar den första ljudströmmen när den finns och kodar om den som AAC. Lyssna igenom slutfilen före användning.

Fungerar kommandot med alla MP4-filer?

Nej. Receptet är testat med en vanlig kvadratpixelvideo med en videoström och högst ett ljudspår. Kontrollera källfilen och FFmpeg-bygget först.

Smedjans nyhetsbrev

Få nya artiklar i inkorgen

Välj de ämnen som intresserar dig. Inget brus, max ett mejl i veckan.

Få nya artiklar i inkorgen

Vi följer GDPR. Avsluta när du vill.