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)
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.


