viernes, 20 de febrero de 2015

FFMPEG la navaja suiza para el vídeo en linux

Ha estas alturas los usuarios de Linux sabemos que FFMPEG es la herramienta de terminal perfecta para convertir vídeos.

También es sabido que no es una herramienta fácil por lo que en este post pretenderé dar unas nociones para su uso y un script final para codificar múltiples archivos.




Lo primero es tener FFMPEG instalado o instalarlo en nuestro linux.

1º En Debian

----------------------------------
$ apt-get update

$ apt-get install ffmpeg

----------------------------------

2º En Debian con soporte H.264, añadiendo repositorio debian multimedia

----------------------------------
$ echo "deb http://www.deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list

$ apt-get update

$ apt-get install deb-multimedia-keyring

$ apt-get update

$ apt-get remove ffmpeg

$ apt-get install ffmpeg x264

---------------------------------

3º En Ubuntu/Linux Mint

---------------------------------

$ sudo add-apt-repository ppa:jon-severinsson/ffmpeg

$ sudo apt-get update

$ sudo apt-get install ffmpeg

---------------------------------

Una vez instalado comenzamos con los opciones básicas de conversión de vídeos, estos ejemplos son encontrándonos en la carpeta donde reside el vídeo, el comando es "ffmpeg" le añadimos la opción
"-i" el nombre del vídeo original y el nombre del vídeo resultante.

de .flv a .avi

$ ffmpeg -i video.flv video.avi

de .avi a .mp4

$ ffmpeg -i video.avi video.mp4

Como es lógico podemos cambiar los formatos, como mpeg, mkv, mp4, avi, mov, flv.

Si queremos hacer algo mas complejo como determinar la codificación del audio estos son unos ejemplos.

de .avi a .mp4 con el audio en mp3

$ ffmpeg -i video.avi -vcodec copy -acodec mp3 video.mp4

En este ejemplo especificamos el codec de mp3 con la opción "-avcodec mp3" la opción "-vcodec copy" es para que no codifique el la imagen solo la copie.


Crear un vídeo compatible con la mayoría de los dispositivos

$ ffmpeg -i video.avi -vcodec libxvid -acodec mp3 video.mp4


Convertir múltiples archivos 

Creamos un archivo convert.sh y dentro pegamos este script, esta versión convierte todo los flv que se encuentren en la carpeta en mp4.

------------------------------------
#! /bin/bash
chmod 777 *.flv
function convert_all_to_mp4(){
for i in *.flv ; do
    ffmpeg -i "$i" -strict -2 $(basename "$i").mp4

done
}
convert_all_to_mp4
-------------------------------------

Esta versión del script es para codificar todos los mp4 de una carpeta con audio AC3, podemos cambiar AC3 por MP3 o otro de los codec "todo los vídeos nuevos pasaran a un carpeta llamada copia_mp4".

-------------------------------------
#! /bin/bash
mkdir copia_mp4
function convert_all_to_mp4(){
for i in *.mp4 ; do
    ffmpeg -i "$i" -vcodec copy -acodec ac3 copia_mp4/$(basename "$i")

done
}
convert_all_to_mp4
---------------------------------------

También podremos cambiar el -vcodec en vez de copiar añadir un codec de vídeo y codificara los vídeo así como el sonido de los mimos.

con el comando 

$ ffmpeg -encoders

podemos ver todos los codecs de vídeo y audio que tenemos para codificar.

No hay comentarios: