Comprimir videos con ffmpeg para web en HD (alta definición)

De Wiki de Aulir

Contenido

Obtención de ffmpeg con soporte para h264 (libx264)

Imagen:FFMPEG.png

Instalación desde los repositorios

Ubuntu

La mejor opción en el caso de ubuntu, en versiones anteriores a Intrepid era añadir los repositorios de Medibuntu de la siguiente manera:

Según las versiones introduciremos las siguientes órdene en consola:

Ubuntu 9.04 "Jaunty Jackalope":
sudo wget http://www.medibuntu.org/sources.list.d/jaunty.list --output-document=/etc/apt/sources.list.d/medibuntu.list
Ubuntu 8.04 "Hardy Heron":
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list --output-document=/etc/apt/sources.list.d/medibuntu.list
Ubuntu 7.10 "Gutsy Gibbon":
sudo wget http://www.medibuntu.org/sources.list.d/gutsy.list --output-document=/etc/apt/sources.list.d/medibuntu.list
Ubuntu 7.04 "Feisty Fawn":
sudo wget http://www.medibuntu.org/sources.list.d/feisty.list --output-document=/etc/apt/sources.list.d/medibuntu.list
Ubuntu 6.10 "Edgy Eft":
sudo wget http://www.medibuntu.org/sources.list.d/edgy.list --output-document=/etc/apt/sources.list.d/medibuntu.list
Ubuntu 6.06 "Dapper Drake":
sudo wget http://www.medibuntu.org/sources.list.d/dapper.list --output-document=/etc/apt/sources.list.d/medibuntu.list

Y después para añadir la clave haremos:

sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update

Por último instalaremos los paquetes necesarios:

sudo aptitude install ffmpeg

Compilación desde las fuentes

Ubuntu Intrepid

Para el siguiente apartado, me he basado en el wiki de ubuntu : ubuntuforums.org, con algunas modificaciones.

1-Añadimos los repositorios de Medibuntu:

Ubuntu 8.10 "Intrepid Ibex":

sudo wget http://www.medibuntu.org/sources.list.d/intrepid.list --output-document=/etc/apt/sources.list.d/medibuntu.list
sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update
2-Desinstalamos versiones anteriores de ffmpeg y libx264:
sudo apt-get purge ffmpeg x264 libx264-dev
3-Instalamos paquetes necesarios:
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaad-dev libfaac-dev libmp3lame-dev
   libtheora-dev libxvidcore4-dev
4-Instalar libx264

(a todas las preguntas contestamos con "entrar")

cd ~/
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-shared
make
sudo checkinstall --fstrans=no --install=yes --pkgname=libx264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1"

¡Ojo, en el wiki de ubuntu ponía --pkgname=x264 y yo utilizo --pkgname=libx264 !

5-Instalar ffmpeg

(a todas las preguntas contestamos con entrar)

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-postproc --enable-pthreads \
    --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora \
    --enable-libx264 --enable-libxvid
make
sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg \
    --pkgversion "3:0.svn`date +%Y%m%d`-12ubuntu"
sudo ldconfig

Creación de archivos "presset" para guardar las configuraciones

Las fuentes de ffmpeg, traen unas configuraciones preestablecidas para cada tipo de codificación llamadas "pressets"

Yo utilizo estas pressets y luego elijo el bitrate de video y audio, el framerate, etc.

Para poder utilizar estas pressets hay que copiarlas en una carpeta que llamaremos .ffmpeg dentro del directorio /home de cada usuario que vaya a utilizar ffmpeg.

Desde el directorio donde se encuentren las fuentes de ffmpeg, haremos:

cp ./ffpresets/* ~/.ffmpeg

Comprimir para Youtube

Comprimir para Vimeo

Lo que he hecho es crear un script con los ratios que yo utilizo para así no tener que elegir todas las opciones cada vez que quiero comprimir un archivo.

El archivo lo llamaremos como queramos, por ejemplo all2x264 con el siguiente contenido:

#!/bin/bash

#Para usar presets de ffmpeg incluidos en .ffmpeg 
#usar -vpre nombre_preset
#por ejemplo para alta calidad hacer:
#     -vpre hq

VBITRATE="3500k"  # bitrate del video
ABITRATE="128k"   # bitrate del audio
FPS="25000/1001"  # fotogramas por segundo (también puede ser 25000/1001)
HZ="48100"        # rango de herzios del audio (suficiente con esta calidad)

PRESET_1="fastfirstpass" # presset para la primera pasada
PRESET_2="hq"            # presset para la segunda pasada

ffmpeg -y -i $1 -pass 1 -vcodec libx264 -vpre $PRESET_1 -b $VBITRATE -bt $VBITRATE -threads 0 -f mp4 -an /dev/null && \
ffmpeg -y -i $1 -pass 2 -acodec libfaac -ab $ABITRATE -ac 2 -vcodec libx264 -vpre $PRESET_2 \
       -b $VBITRATE -bt $VBITRATE -threads 0 -f mp4 \
	$1.mp4

Luego cambiamos los permisos del archivo para que sea ejecutable así:

chmod a+x all2x264

Para poder llamar al archivo fuera de su ubicación actual haremos:

sudo ln -s all2x264 /usr/local/bin/all2x264

Por último para codificar un video con el archivo creado haremos:

 all2x264 archivo_video.avi 

La codificación tardará un rato, dependiendo del ordenador que tengamos. Esto nos crea un archivo de video con el nombre archivo_video.avi.mp4 y codificado para luego subirlo a Vimeo.


A mí me ha dado suficiente calidad, incluso con menos ratios de audio y video puede ser suficiente. Espero que os sirva.

Herramientas personales