FFmpeg

Introducción

Nos últimos días tiven que traballar con algúns vídeos. Así que decidín ao igual que co comando awk ou sed, crear unha sección para ffmpeg. Ao igual cas outras este será un artigo vivo, conforme vaia vendo novas funcións. De momento o único que fixen foi comprimir vídeos e mudar o formato de mkv a mp4. Pero seguramente, en breve agardo, terei que recortar os vídeos, eliminando a parte final e inicial do mesmo. Isto axudará a reducir aínda máis o tamaño e ademáis borrará partes do inicio das reunións ou do fin, que non son relevantes.

ffmpeg é un comando que soe vir instalado nas nosas distribucións GNU/Linux de escritorio e que nos permite facer varias operacións, sobre arquivos de vídeo. Comprimilos, extraer audio, mudarlles o formato, etc. É unha ferramenta moi versátil, rápida e potente.

Resumo das opcións

  • -c:v libsvtav1: Aquí especificamos o codec de vídeo. AV1 é un codificador rápido, o que permite unha gran compresión, sen tempos elevados na tarefa.
  • -crf 40: Este é o valor de compresión. Vai de 0 (sen perda), a 63 (que é a compresión máxima). Aínda que 40 é un valor bastante alto, aínda permite ler as diapositivas do vídeo. E permite alcanzar o tamaño que se me pediu. Se quixésemos mellorar a calidade poderíamos probar con valores menores, entre 30 ou 35. Ao especificar un valor constante, ffmpeg escollerá o bitrate apropiado.
  • -preset 8: cun rango de 0 a 13 o que indica é a velocidade de compresión. Canto máis alto, máis rápido codifica pero maior é a perda de calidade. 8 é un punto de equilibrio que vin nas probas.
  • -c:a aac -b:a 96k: permite escoller o codec de audio. AAC é o nativo de ffmpeg, compatible con navegadores, móbiles e reproductores.
    • -c:a aac: permite escoller o codec de audio. AAC é o nativo de ffmpeg, compatible con navegadores, móbiles e reproductores.
    • -b:a 96k: é o bitrate de audio. Como os vídeos son dunha charla é suficiente, para cousas como música e similares, podería ser insuficiente.
    • Se temos problemas ca calidade da saída, podemos prescindir do bitrate e indicar que se manteña o audio orixinal con -c:a copy.
  • -map 0:v:0: aquí indicamos que do primeiro vídeo de entrada (o 0 antes dos dous puntos), seleccione o primeiro fluxo de vídeo (v:0). Neste caso só temos un vídeo e unha única pista de vídeo. Pero ao indicar outros -map se non o puña non se engadía a pista de vídeo.
  • -map 0:a:0: igual que antes, pero neste caso ca pista de audio. Aquí os vídeos si que viñan con varias pistas de audio, así que con VLC vin cal era a que me interesaba. No exemplo era a primeira a a:0, pero noutros vídeos era a segunda a:1.
  • -map 0:s:?: incluímos as pistas de subtitulos do ficheiro. A interrogante faino opcional, se o arquivo non ten subtitulos, evitamos que de erro.
  • -vf "scale=800:-2": aplica un filtro de vídeo para redimensionar.
    • 800: ancho de 800 píxeles, o orixinal estaba en 1200.
    • -2: calcula o alto automáticamente e forza a que o resultado sexa divisible por 2. Moitos codecs esixen dimensións pares, con -1 o alto podería resultar impar e algúns codecs rexeitarían o resultado. Interrompendo o comando.
  • -c:s mov_text: é o codec dos subtitulos, convírteo a formato mov_text, compatible co contenedor MP4.

Escenarios

Reducindo tamaños

O primeiro escenario que tiven que tratar foi o de reducir o tamaño dos vídeos. Un coñecido me pasou uns vídeos que gravou con OBS Studio pero que lle quedaban demasiado grandes para o que precisaba. Ocupaban entre tres e cinco xigas e queríaos en menos de douscentos megas.

Así que executei sobre os vídeos o seguinte comando.

ffmpeg -i "2026-11-04 10-50-39.mp4" -c:v libsvtav1 -crf 40 -preset 8 -c:a aac -b:a 96k "Clase 1.mp4"

Básicamente aquí temos o seguinte ffmpeg -i ficheiro_de_entrada [opcións] ficheiro_de_saída. Podemos ver a explicación das opcións no resumo ao inicio do artigo.

Reducir tamaño e mudar o tipo de arquivo

Para o seguinte tiña que facer unha operación similar. Reducir o tamaño duns arquivos con extensión mkv e mudar o contenedor a mp4. Isto fíxeno co seguinte comando.

ffmpeg -i Parte1.mkv -map 0:v:0 -map 0:a:0 -map 0:s:? -vf "scale=800:-2" -c:v libsvtav1 -crf 40 -preset 8 -c:a aac -b:a 96k -c:s mov_text Parte1.mp4

Ao igual ca antes, temos a mesma estrutura ffmpeg -i ficheiro_de_entrada [opcións] ficheiro_de_saída. Igual ca antes as opcións están explicadas no resumo do artigo.

NOTA: algún dos vídeos contiña escenas que misturaban voces con ruídos de fondo, como tráfico ou ruído de cafeterías. Isto facía que co bitrate de 96k, as voces moitas veces quedasen máis apagadas. A solución neste caso foi mudar -c:a aac -b:a 96k a -c:a copy. É dicir, que manteña o do arquivo orixinal.

Conclusión

FFmpeg é unha ferramenta moi potente e versátil que nos permite facer diversas operacións sobre os nosos ficheiros de vídeo. Facer transformacións, escalados, mudar os codecs no ficheiro de saída, etc. É un xeito de poder editar os nosos vídeos, eficiente e rapidamente.