FFmpeg para la edición de video. Cómo funciona y sus comandos

En este tutorial voy a explicar la herramienta FFmpeg para la edición de video.

Índice de contenidos

FFmpeg: cómo usarlo para video

Una vez en el trabajo me preguntaron si podía hacer que unos videos pesaran menos. De primeras, ante una pregunta tan fácil dije que sí, claro que sí. Trabajo con videos y todos los días tengo que comprimir. En este caso, los archivos que debía comprimir eran archivos .mp4, .webm y .ogv.

El primer formato me resultaba muy familiar, evidentemente, pero de los otros dos sinceramente no había oído mucho. Cuando he abierto el programa que uso para comprimir videos sin perder calidad (Handbrake, Open Source Video Transcoder) me he dado cuenta de que con el .mp4 podía trabajar sin problemas, pero con los otros no, la única posibilidad que me daba ese programa era convertirlos a .mp4 o a .mkv y no quería tres archivos iguales.

Me puse a buscar en internet, navegué por muchos convertidores de video online pero la finalidad de todos era pasar de un formato a otro. No buscaba eso. Pero tenía que haber una solución. Investigando me he topado con algo llamado “FFmpeg”.

¿Qué es FFmpeg? Para los nuevos en esto como yo, “FFmpeg es una potente herramienta con la que podemos convertir entre formatos de video, rotar, reducir tamaño, calidad o resolución, y muchas otras operaciones, todo ello automatizado desde una terminal.” Una terminal. Ok.

No estoy muy familiarizada con el mundo de la informática. Cuando uso cualquier software me fijo en la apariencia externa, la interfaz que tiene pero no pienso que eso lo forma mucho código programado por detrás. FFmpeg lleva toda la vida y yo lo he descubierto ahora…

Por suerte trabajo en una empresa que desarrolla software y hay ingenieros informáticos que me ayudan a entender cómo funcionan las cosas.

1. Introducción

La herramienta ffmpeg es multiplataforma, por lo que puede instalarse en cualquier sistema ya sea Mac, Windows o Linux. Aunque su uso no es excesivamente complejo, la gran cantidad de parámetros, combinaciones y el inmenso abanico de formatos y sus características, hacen que el uso de ffmpeg sea poco intuitivo cuando empezamos a utilizarlo.

  1. Cambiar formato
  2. Resolución video
  3. Comprimir, extraer imágenes y video
  4. Insertar marcas de agua (texto o tipografías en un video)
  5. Etc.

2. Instalación

Este tutorial lo he realizado en un entorno Mac por lo que algunos de los comandos no servirán en entorno Windows.

3. Ejecutar ffmpeg

  • Una manera que aconsejo es crear una carpeta llamada ffmpeg y dejarla en el escritorio, dentro de esa carpeta meteremos el archivo ejecutable y pondremos todos los archivos que queramos convertir/editar.

  • También existe otra opción si no queremos mover cada video a la carpeta de ffmpeg en el escritorio, sino que queremos hacer la acción desde la ubicación donde ya se encuentre el archivo que sería la siguiente:

  • desde la terminal miro si tengo el archivo .bash_profile. Este archivo lo que hace es dejar órdenes grabadas para que se ejecuten siempre y no solo durante la sesión. Al ser un archivo oculto si listo el contenido con ls no me aparecerá, tengo que escribir ls -a.

    Si no lo tenemos podemos instalarlo desde la Terminal escribiendo nano .bash_profile. Nos aparecerá una ventana nueva y en ella escribimos lo siguiente:

    Yo he puesto Desktop porque el ejecutable de ffmpeg lo tengo en una carpeta en el escritorio, si lo tenéis en otra ubicación, sustituís Desktop por la carpeta correspondiente.

Para los siguientes ejemplos voy a ejecutar ffmpeg con la opción del .bash_profile. Yo lo tengo en el escritorio porque me he acostumbrado a trabajar con él desde ahí pero recordad que si lo hacéis con esta opción, podéis tener el ejecutable en cualquier carpeta y solamente tendréis que indicar la ruta correcta.

Abrimos la Terminal y nos situamos dentro de la carpeta ffmpeg. Para ello introducimos este comando: cd /Users/Desktop/ffmpeg

4. Comandos

Antes de empezar con los comandos debemos tener clara la diferencia entre contenedores de video y códecs:

4.1. Contenedores y códecs

Códecs: un códec es un programa que codifica o decodifica la información multimedia según cierto formato. Una vez codificados los datos pueden ser tratados, por ejemplo almacenados o transmitidos. Se utilizan para evitar archivos imposibles de manipular en un ordenador común. MPEG en todas sus variantes, como así también DivX, 3ivx y Xvid, entre otros.

Para audio, los más populares son el formato MP3, el Ogg Vorbis, el cual se caracteriza por ser un códec perteneciente al software libre, y el AC3 que suele utilizarse en compresiones de DVDs ya que se trata de un códec multicanal (5.1).

Contenedores: un formato contenedor es un formato de archivo que puede contener varios tipos de datos, comprimidos mediante una serie de códecs. El archivo contenedor es usado simplemente para identificar e interpolar los diferentes tipos de datos que contiene.

Los formatos contenedores más populares son:

  • AVI (contenedor estándar de Windows)
  • MOV (contenedor estándar de Quicktime)
  • MP4 (contenedor estándar para MPEG-4)
  • Ogg (contenedor estándar de Xiph.org códecs)
  • MKV (Matroska, estándar abierto)

Ver información de nuestro video

Si ejecutáramos ffmpeg desde la carpeta del escritorio y fuéramos pasando ahí todos los videos con los que vamos a hacer algo desde Terminal, estando dentro de la carpeta ffmpeg escribimos el comando así:

En mi opinión:

  • Pros de mover todos los videos a la carpeta de ffmpeg, convertirlos ahí y luego moverlos a otra ubicación si lo deseamos: tan sólo hay que poner un ./ delante de ffmpeg al inicio del comando.
  • Contras: tienes que andar copiando y pegando archivos en directorios.
  • Pros de hacerlo a través de .bash_profile: da igual en qué ubicación tengas el video, tan sólo indicas la ruta al ejecutar
  • Contras: tienes que escribir cada vez una ruta distinta si coges videos de varias ubicaciones.

Conversión a otros formatos

  • DE AVI A MP4

En este ejemplo indicamos a ffmpeg que el formato de entrada es videomuestra.mov (mediante el parámetro -i) y que lo convierta a un archivo de destino al cual le hemos indicado la extensión .mp4. De esta forma, ffmpeg busca los codecs de video y de audio apropiados para este formato (automáticamente selecciona h264 para video y aac para audio).

  • DE MP4 A MKV

  • Evitar pérdidas de calidad

¿Cuántas veces nos ha pasado que tenemos un video que queremos subir a youtube y no hemos podido porque era muy pesado? O que necesitamos enviarlo por WeTransfer y ocupa más de 2GB o tenemos el dropbox lleno para subirlo…

Podemos utilizar el contenedor .webm con video codificado en VP8 y audio con theora ogg vorbis

Con el valor -qscale 0 el video de salida conserva la calidad del original. Importante seleccionar siempre para evitar pérdidas.

  • CONVERTIR UN VIDEO PARA VER EN LA PSP

  • HACER UN VIDEO DE 5 SEGUNDOS POR EJEMPLO CON UNA IMAGEN

  • CAMBIAR EL FORMATO DE UN VIDEO Y MANTENERLO EN LA MISMA CALIDAD

Otra opción alternativa a la opción vista más arriba con el parámetro -qscale 0:

  • UNIR VARIOS VIDEOS EN UN ÚNICO VIDEO EN DOS PASOS

Primero se pasan a mpeg para que estén en un formato común:

Después se unen los videos:

5. Resumen comandos

Opciones de audio:

  • – ar: frecuencia de sambleado del audio por segundo.
  • –acodec: codec de audio. Por ejemplo: wav, mp3, mp2, ac3… (si no te funciona mp3, prueba a poner: libmp3lame)
  • -ab: tasa de bits de audio por segundo (por defecto 64k).

Opciones de video

  • –vcodec: codec de video. Por ejemplo: mpeg4, copy, flv, wmv1, libxvid, etc. Para consultar todos los codecs disponibles puedes escribir en la consola: ffmpeg -formats.
  • r: Ajuste de velocidad de frames (número de ciclos por segundo (Hz), (por defecto = 25).
  • –s: tamaño del video. Por ejemplo: vga (640×480), svga (800×600)…
  • –b: tasa de bits de video por segundo (por defecto 200kbits por segundo). De este parámetro depende mucho la calidad del video y el tamaño.
  • –qscale 0: para obtener la misma calidad de video que el original.
  • –aspect: para fijar el aspect ratio (4:3, 16:9).

Otras opciones:

  • –i: nombre del fichero de entrada.
  • –pass: el número de veces que se va a recodificar el video (para conseguir una mayor compresión), por defecto 1.
  • –y: sobreescribir el fichero de salida.

6. Conclusiones

Hay un montón de comandos para manipular el video y el audio con ffmpeg. Es una herramienta que ofrece un amplio abanico de posibilidades y para los que no estáis acostumbrados a trabajar con comandos y la Terminal, con un poco de paciencia, buscando por internet los comandos que queramos y referencias de otros ejemplos se pueden hacer muchas cosas. Aquí dejo varias páginas donde vienen más ejemplos para que completéis: