Manual de FFmpeg per a usuaris no avançats de la terminal Linux

(títol alternatiu: Xulla FFMPEG. Operacions bàsiques)

El FFmpeg és un convertidor de vídeo i àudio molt ràpid que funciona des de la línia d’ordres.

Els avantatges d’usar FFmpeg enfront d’altres programes amb interfície gràfica són, des del meu punt de vista:

  • És programari lliure
  • ja ve instal·lat en Lliurex
  • està en els repositoris de la majoria d’altres distribucions GNU/Linux
  • s’instal·la amb un simple sudo apt install ffmpeg
  • no cal pensar massa en la configuració d’eixida, el programa intenta optimitzar els resultats.
  • per a operacions un poc més complexes, li pots preguntar la sintaxi a la intel·ligència artificial, ho fa genial!
ChatGPT responent una pregunta sobre com usar FFmpeg en la terminal

Taula de contingut

  1. Convertir entre formats
  2. Extraure l’àudio d’un vídeo
  3. Substituir l’àudio d’un vídeo
  4. Retallar un vídeo
  5. Modificar la resolució
  6. Reduir el pes
  7. Retallar un vídeo
  8. Modificar la relació d’aspecte
  9. Accelerar un vídeo
  10. Unir o ajuntar 2 o més vídeos
  11. Estabilitzar vídeos

Comencem!

S’escriu en la línia d’ordres ffmpeg seguit de les opcions, la més important és -i (input: indica l’arxiu o URL d’entrada). La resta d’opcions van precedides d’un guió (a continuació en veurem unes quantes) i qualsevol cosa que no es pot interpretar com una opció es considera un URL (o arxiu) de sortida.

Convertir entre formats de vídeo o àudio

És el més simple de tot, només cal posar

ffmpeg -i videoin.avi videoout.mp4

on videoin.avi és l’arxiu d’entrada i videoout.mp4 serà el d’eixida. Es pot canviar l’extensió d’entrada i d’eixida per qualsevol altra, ffmpeg reconeix quasi totes. Aquest exemple pot servir per rebaixar el pes (en Bytes) d’un vídeo, ja que mp4 és un format amb més compressió que avi. O bé:

ffmpeg -i musicalliure.ogg compatibleiphone.mp3

On musicalliure.ogg és l’arxiu d’àudio d’entrada i compatibleiphone.mp3 serà el d’eixida.

Extraure l’àudio d’un vídeo

Això es fa amb un simple:

ffmpeg -i elmeuvideo.mp4 elmeuaudio.mp3

Substituir l’àudio d’un vídeo

Usarem dos fitxers d’entrada, el del vídeo (v.mp4) i el del nou àudio que volem posar (a.wav), compiem el flux de vídeo per no tornar a recodificar i mapejarem els fluxos:

ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4

Si l’àudio és més llarg que el vídeo, afegirem -shortest abans del nom del fitxer de sortida. Si no especifiquem un còdec d’àudio, se’n seleccionarà automàticament un que funcione. Podem especificar-ne un afegint, per exemple, -c:a libvorbis després de la còpia -c:v.

Retallar un vídeo (el temps, la duració)

Retallar per davant: posarem -ss seguit de la marca de temps on volem que comence el nou vídeo.
Retallar per darrere: posarem -t seguit de la duració que volem que tinga el nou vídeo. El temps s’indica en segons o bé en format HH:MM:SS

Exemple 1: fer que, d’un vídeo llarg, es retallen els primers 30 segons i que dure en total un minut:

ffmpeg -i llarg.mp3 -ss 00:00:30 -t 00:01:00 curt.mp3

Exemple 2: Crear un GIF animat a partir d’un vídeo (com ara riure.mp4), que comence als 5 segons i tinga una duració de 15 segons:

ffmpeg -t 15 -ss 00:00:05 -i riure.mp4 lol.gif

Modificar la resolució (redimensionar un vídeo)

Posarem -s seguit de la resolució que volem. Exemple, reduir de 4K a HD (1280×720):

ffmpeg -i elmeuvideoen4k.mkv -s 1280x720 videoenhd.mp4

Resolucions típiques en relació d’aspecte 16:9

    1920x1080 (full HD)
    1600x900
    1366x768
    1280x720 HD
    1024x576 PAL+
    854x480 WVGA
    640x360
    569x320
    427x240
    356x200
    256x144

Resolucions típiques en relació d’aspecte 4:3

    1600x1200 UXGA
    1400x1050 SXGA+
    1280x960
    1152x864 XGA+
    1024x768 XGA
    800x600 SVGA
    768x576 PAL*
    640x480 VGA (NTSC*)
    384x288 SIF**
    320x240 QVGA

Més informació a la Wiki d’ffmpeg

Reduir el pes (mida d’arxiu) d’un vídeo

Normalment, es farà a costa de reduir també la qualitat. A més del fet obvi com seria retallar la duració o reduir la resolució, també podem:

Modificar el CRF

El CRF és un paràmetre que determina la qualitat de la compressió en vídeos codificats amb el còdec H.264. En augmentar el CRF, es redueix la qualitat, però també disminueix la grandària de l’arxiu, mentre que en disminuir el CRF es millora la qualitat, però augmenta la grandària de l’arxiu.

Podem provar de posar un CRF entre al voltant de 18 i 24 (factor de taxa constant), a més, si usem libx265 (o libx264 a falta del 5) com a còdec de vídeo, molt millor.

Aquest és un bon exemple de reducció de mesura amb molt poca pèrdua de qualitat:

ffmpeg -i video.mp4 -c:v libx264 -crf 28 video_compress.mp4

Canviar els fotogrames per segon

Una altra forma de reduir molt és canviant els fotogrames per segon. Tradicionalment, les pel·lis s’han fet amb uns 24 fotogrames per segon, però ara hi ha mòbils i càmeres capaços de gravar a 60 fps o més. Només passant-los a 24 amb

ffmpeg -i entrada.avi -r 24 sortida.avi

ocuparia menys de la meitat.

Retallar un vídeo (píxels per dalt, per baix o pels costats)

Per retallar (crop) un vídeo (no en temps sinó el format, per exemple retallar un vídeo per la meitat de la pantalla) cal usar el filtre de crop:

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

On les opcions són les següents:

  • out_w és l’ample del rectangle d’eixida, 
  • out_h és l’alçària del rectangle d’eixida, 
  • x i y especifiquen el cantó superior esquerre del rectangle d’eixida

Exemple, per retallar una secció de 80×60, començant des de la posició (x,y) 200, 100:

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4

L’àudio es copia en aquest exemple, per la qual cosa s’evita tornar a codificar.

Font de la informació i més exemples

Modificar la relació d’aspecte (aspect ratio):

Podem canviar la relació d’aspecte amb -aspect. El resultat quedarà estirat o estretit fins encaixar en la nova relació (p.e. de 4:3 a 16:9 s’estirarà)

ffmpeg -i mivideo.mp4 -aspect 16:9 mivideo1.mp4

Accelerar un vídeo (TimeLapse)

Podem accelerar un vídeo (posar-lo a càmera ràpida o fer un TimeLapse) de diverses formes explicades ací, una de les més simples és indicar el factor de multiplicació de la velocitat, per exemple, per accelerar un vídeo de 3 minuts (180 segons) i que dure mig minut (30 segons) haurem de multiplicar la seua velocitat per 6 (180/30 o bé 3/0,5). Això es fa posant:

ffmpeg -i in.mp4 -vf "setpts=PTS/6" -an out.mp4

Cal tenir en compte que amb l’opció -an eliminem l’àudio del vídeo.

Unir o ajuntar 2 o més vídeos

És un poquet més complex. Suposant que tenen tots el mateix format, resolució, còdecs, etc., cal crear un fitxer de text amb la llista d’arxius a unir. Per exemple, imagineu que volem unir els vídeos 1apart.mp4 i 2apart.mp4. Cal crear un arxiu anomenat list.txt amb el contingut:

file ‘1apart.mp4’ 
file ‘2apart.mp4’

Després, fem:

ffmpeg -f concat -i list.txt -c copy complet.mp4

Més info ací i ací

Estabilitzar vídeos

Teniu vídeos fets amb una càmera en moviment?, potser si fem un vídeo quan anem corrent o en bicicleta el resultat és un vídeo molt mogut. Això es pot arreglar amb el connector vidstab de FFmpeg. Caldrà fer l’estabilització en 2 passos, en el primer pas fem una detecció de les dades d’estabilització del clip i les guardem en un fitxer de text, sense generar cap vídeo d’eixida:

ffmpeg -i clip.mkv -vf vidstabdetect -f null -

Es crearà un fitxer de text anomenat transforms.trf. En el segon pas transformarem el clip de vídeo mogut en un vídeo amb major estabilitat.

ffmpeg -i clip.mkv -vf vidstabtransform clip-estable.mkv

El resultat és espectacular! Fins i tot podem crear un vídeo comparant l’abans i el després: Més info

Altres enllaços i manuals

Feu un comentari

"edutictac.es