Aprende a convertir videos desde la terminal con FFmpeg
Cuantos de ustedes no han recurrido a diversos programas para poder convertir alguno de sus archivos de video a otro formato por cuestiones de compatibilidad con algún dispositivo o sencillamente para ganar algo más de espacio al reducir su peso.
Por mi parte he utilizado diferentes programas y he obtenido diferentes resultados, en la mayoría de ellos estamos muy limitados a las opciones que nos ofrecen, desde solo poder convertir a ciertos formatos, únicamente al mismo o algunos otros con bastantes opciones que no tienes ni idea de que hacen cada una de ellas.
En esta ocasión aprovecho para compartir con ustedes una estupenda herramienta que es muy potente dado a todas las características y opciones que nos ofrece y sencilla de utilizar.
Esta herramienta se llama FFmpeg como les comento es bastante sencilla de utilizar y está orientada tanto a personas con conocimientos avanzados como usuarios novatos.
FFmpeg nos permite poder grabar, convertir y hacer streaming de audio y vídeo, este programa es software libre, originalmente fue desarrollada para los entornos GNU/Linux, pero dada su gran popularidad también puede ser compilado en la mayoría de los sistemas operativos, incluyendo Windows.
También podemos destacar que este programa, la mayoría de sus desarrolladores también lo sean del proyecto MPlayer.
Por último, debo mencionar que FFmpeg es una herramienta de línea de comandos por lo cual no utiliza ninguna interfaz gráfica, aunque existe WinFF que es un GUI de este, de manera personal puedo decir que es preferible aprender el uso FFmpeg, dado que muchos convertidores de videos lo utilizan como base y varios de ellos admiten el ingreso de comandos personalizados de esta herramienta.
Antes de pasar a explicar un poco sobre sus opciones les comparto en el siguiente enlace, donde pueden revisar los formatos de audio, video e imagen que pueden trabajar con esta herramienta, así como las opciones y códecs.
¿Cómo instalar FFmpeg en Linux?
Actualmente la mayoría de las distribuciones de Linux cuentan con esta herramienta ya instalada por defecto, aunque son pocas la que lo excluyen por temas de algunas librerías que no son de código abierto. Sin más les dejo los comandos para su instalación.
Para Debian, Ubuntu y derivados:
sudo apt-get install ffmpeg
Para ArchLinux, Manjaro y derivados:
sudo pacman -S ffmpeg
Para Fedora, Red Hat, CentOS, openSUSE y derivados:
sudo dnf install ffmpeg
¿Cómo utilizar FFmpeg?
El primer paso es definir a qué tipo de formato vamos a convertir nuestro video, así como el formato de audio, si queremos que el video tenga una resolución en particular, si queremos un tamaño en particular para el video resultante, bitrate del audio, bitrate del vídeo, fps, etc.
Ahora para comenzar con el uso del programa, debemos abrir una terminal, comenzaremos con obtener información del video con el que vamos a trabajar, para ello utilizamos el siguiente comando:
ffmpeg -i ~/Videos/video.mp4
Podemos indicar la ruta del video o simplemente posicionarnos en la terminal sobre la carpeta donde esta nuestro video, en mi caso me va a mostrar algo así:
Con esta información podemos tomar un rango de valores con los que podemos crear nuestro nuevo video, si quieres aumentar la resolución, fps, audio y demás, puedes hacerlo, pero el resultado será malo.
En mi caso me interesa convertir el video para que pueda utilizarlo en mi servidor multimedia y pueda reproducirlo directamente en Chromecast (dado que no soporta la transcondificacion). En su caso deben buscar un poco sobre los formatos recomendados, así como los valores para algún dispositivo en particular.
El otro caso si no tienes interés en algo en particular y solo convertirlo los comandos son los siguientes.
Convertir de un formato a otro y que ffpmeg se encargue de los valores convenientes:
ffmpeg -i videoaconvertir videoresultante
Queda algo asi, por ejemplo, de mp4 a avi o flv a mpeg o mkv a avi etc.
ffmpeg -i video.mp4 nuevovideo.avi
ffmpeg -i video.flv nuevovideo.mpeg
ffmpeg -i video.mkv nuevovideo.avi
Ahora les dejare algunos parámetros y lo que hacen:
-qscale 0: Conservar la misma resolución
Para cambiar la resolución del video, en este caso a 1280×720
m-filter: v scale = 1280: 720 -c: a copy
-s 1280×720 -c: a copy
-aspect 16: 9: Si quieren cambiar la relación al aspecto, en este caso 16:9
-b:v 2600k : Bitrate del video en esta caso a 2600
-b:a 128k: Bitrate del audio aquí en este caso 128
-pass 1: En cuantas pasadas terminara la conversión del video (lo recomendado son 2)
-c:a aac : Codec del audio en este caso aac
-c:v libx264: Codec del video en este caso h.264
-framerate 30: Cuantos FPS tendrá el video en este caso 30
-threads 2 : Esta opción en caso de tener un procesador con 2 o más núcleos, podemos indicar que se utilizen más de 1 para la conversión del video y así acelerar el proceso.
Existen muchas les recomiendo leer esta otra Wiki donde nos explica más a detalle el uso para cada caso en particular.
Ahora en mi caso como les comentaba me interesa para mi Chromecast, para ello debo colocarlo así:
ffmpeg -i video.mp4 -pass 2 -b:a 128k -c:a aac -c:v libx264 -qscale 0 -framerate 29 -threads 2 nuevovideo.mp4
Sin más solo puedo decir que es una herramienta sencilla, pero bastante potente si se adentra uno más al tema y sobre todas las opciones que nos ofrece FFmpeg.
El artículo Aprende a convertir videos desde la terminal con FFmpeg ha sido originalmente publicado en Linux Adictos.