FFMpeg
FFMpeg es una herramienta extremadamente poderosa para convertir video
de un formato a otro. Todos los codecs prinicpales funcionan, y aún
muchos otros codecs menos conocidos. Desafortunadamente, la única
manera de usar esta herramienta es a través de comandos en la línea de
comandos.
Para introducir comandos, necesitas lanzar un programa de
"Terminal". En Ubuntu puedes accesar este programa a través de
Aplicaciones -> Accesorios -> Terminal.
Una vez en el Terminal, puedes ingresar comandos para operar
programas. (Dos comandos importantes pero no relacionados con FFMpeg
son: "ls" - produce una lista de todos los archivos en el directorio en
el que te encuentras, y "cd" - cambia el directorio. Por ejemplo puedes
ingresar "cd Descargas" desde tu directorio principal para ir al
directorio de Descargas. Tu línea de entrada te va a mostrar el
directorio en el que te encuentras; la tilde "~" significa que estás en
tu directorio principal /home/usuario.)
Las primeras dos cosas que puedes hacer con FFMpeg son hacer una
lista de los formatos y codecs que esta copia soporta. Esto puede
cambiar basado en lo que tengas instalado en tu computador, por lo que
es mejor revisar esto antes de ingresar un comando, para asegurante que
tengas el soporte correcto disponible.
Para ver una lista de todos lost formatos contenedores ingresa: ffmpeg -formats
Para ver una lista de todos los codecs ingresa: ffmpeg -codecs
Para convertir un video, simplemente ingresa el comando "ffmpeg" con cuatro partes adicionales:
ffmpeg [entrada] [opciones de video] [opciones de audio] [salida]
La parte del video de entrada se compone de una "-i" y el nombre
del video (o audio) que tienes que quieres convertir a otro tipo.
Puedes tener más de uno de estos archivos de entrada (y cada uno recibe
su propia "-i") si por ejemplo tienes un video con una pista de audio
en un archivo diferente.
ffmpeg
-i VideoEntrada.mpg ...[opciones de video] [opciones de audio] [salida]
ffmpeg -i PistaDeVideoDeEntrada.mpg -i PistaDeAudioDeEntrada.wav ...[opciones de video] [opciones de audio] [salida]
La opciones de video es donde especificas el codec (con el prefijo
"-vcodec") y el bit-rate (con la opción "-b"). Además puedes
especificar un preset de video ("-preset") sin el cual la codificación
x264 no va a comenzar (algunos presets sencillos son: slow, medium,
fast), y puedes especificar un tamaño ("-s") ya sea con una referencia
a un tamaño estándar o con el formato ANCHOxALTO.
ffmpeg
[entrada] -vcodec mpeg2 -b 3000k ...[opciones de audio] [salida]
ffmpeg [entrada] -vcodec libtheora -b 3000k ...[opciones de audio] [salida]
ffmpeg [entrada] -vcodec libx264 -preset medium -b 3000k ...[opciones de audio] [salida]
ffmpeg [entrada] -vcodec mpeg2 -b 3000k -s hd480 ...[opciones de audio] [salida]
ffmpeg [entrada] -vcodec mpeg2 -b 3000k -s vga ...[opciones de audio] [salida]
ffmpeg [entrada] -vcodec mpeg2 -b 3000k -s 1280x720 ...[opciones de audio] [salida]
Las opciones de audio es donde especificas el condec de audio
("-acodec") y el bit-rate ("-ab"). También es posible especificar no
audio ("-an") para obtener solamente video en el archivo de salida.
ffmpeg
[entrada] [opciones de video] -acodec flac ...[salida]
ffmpeg [entrada] [opciones de video] -acodec libmp3lame -ab 256k ...[salida]
ffmpeg [entrada] [opciones de video] -acodec libvorbis -ab 192k ...[salida]
ffmpeg [entrada] [opciones de video] -acodec libfaac -ab 192k ...[salida]
ffmpeg [entrada] [opciones de video] -an ...[salida]
La salida es donde especificas el nombre del archivo al cual se
grabará el video convertido. Usualmente la extensión del nombre del
archivo (.mkv, .mp4,
.avi, etc) le permitirá al programa determinar qué formato debe usarse
para el archivo, sin embargo esto es ambiguo si quieres usar un formato
que no está asociado con esa extensión de archivo; en ese caso puedes
usar "-f" y el nombre del formato deseado. (Estos comandos siempre van a
almecenar el archivo de salida en el mismo directorio en el que te
encuentras actualmente.)
ffmpeg
[entrada] [video options] [audio options] SalidaVideo.mkv
ffmpeg
[entrada] [video options] [audio options] SalidaVideo.mp4
ffmpeg
[entrada] [video options] [audio options] -f dvd SalidaVideo.mpg
ffmpeg
[entrada] [video options] [audio options] -f matroska SalidaVideo.vid
ffmpeg
[entrada] [video options] [audio options] -f mp4 SalidaVideo.vid
ffmpeg
[entrada] [video options] [audio options] -f avi SalidaVideo.vid
El resultado puede verse como sigue:
ffmpeg
-i EntradaVideo.mpg -vcodec mpeg2 -b 3000k -s hd480 -acodec flac SalidaVideo.mkv
Codificación a Doble Paso (Two-Pass)
Es posible usar ffmpeg para
codificación two-pass. La parte importante es entrar el comando dos
veces, primero con el parámetro "-pass 1" y luego una vez terminado
entrar el mismo comando con el parámetro "-pass 2". En Ubuntu, puedes
hacer un par de cosas adicionales en el primer paso para acelerarlo:
"-an" especifica que no hay un codec de audio que activar. "-f
rawvideo" evita que el programa trate de empacar el video en un formato
especial, solo para descartarlo luego. El "-y /dev/null" especifica que
el archivo de salida va a ir al archivo especial "null", que significa
que solamente desaparecerá en vez de tener que enviar data al disco
duro. Ademas de usar "two-pass", podemos añadir el parámetro "-bt" el
cual le comunica al codec cuanto puede cambiar el bit-rate. Usualmente
va a servir bien el establecer este parámetro igual que el bit-rate.
ffmpeg
-i EntradaVideo.mpg -pass 1 -vcodec mpeg2 -b 3000k -bt 3000k -an -f
rawvideo -y /dev/null
ffmpeg
-i EntradaVideo.mpg -pass 2 -vcodec mpeg2 -b 3000k -bt 3000k -acodec flac SalidaVideo.mkv
Eso es todo lo que hay que saber para operar FFMpeg. No es tan complicado.
Ahora intentemos un ejemplo usando FFMpeg...
ffmpeg
-i sintel_clip-ffmpeg.mkv -pass 1 -vcodec libx264 -preset
slow_firstpass -b 1200k -bt 1200k -an -f rawvideo -y /dev/null
ffmpeg
-i sintel_clip-ffmpeg.mkv -pass 2 -vcodec libx264 -preset
slow -b 1200k -bt 1200k -acodec libfaac -ab 192k output.mp4
Como bono, puedes configurar el programa para que pueda correr
desde un website, y el video va a comenzar a reproducir antes de que la
descarga termine:
qt-faststart
output.mp4 webvid.mp4