(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!
Taula de contingut
- Convertir entre formats
- Extraure l’àudio d’un vídeo
- Substituir l’àudio d’un vídeo
- Retallar un vídeo
- Modificar la resolució
- Reduir el pes
- Retallar un vídeo
- Modificar la relació d’aspecte
- Accelerar un vídeo
- Unir o ajuntar 2 o més vídeos
- 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
iy
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
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