Comprimir videos con FFMPEG

Últimamente me está siendo muy útil este programa para realizar conversiones de video de un formato a otro, para extraer audios de videos, etc. y visto el embrollo que resulta acostumbrarse a usar la linea de comandos de Linux para manejar tantísimas opciones me he dedicado un momentillo a hacer un resumen de las opciones más útiles, sus funciones y como convertir algunos formatos.

Comencemos por algunas de las opciones de audio:

  • ar: frecuencia de sambleado del audio por segundo. Por ejemplo 22050 (por defecto 44100Hz -> calidad de CD).
  • acodec: codec de audio. Por ejemplo: wav, mp3, mp2, ac3,… (si no te funciona mp3 pon: libmp3lame)
  • -ab: tasa de bits de audio por segundo (por defecto 64k)
  • Más opciones de audio

Opciones de video:

  • vcodec: codec de video. Por ejemplo: mpeg4, copy, flv, wmv1, libxvid, etc. Para consultar todos los codecs disponibles puedes escribir en la consola:
    ffmpeg -formats
  • r: Ajuste de velocidad de frames (número de ciclos por segundo (Hz), (por defecto = 25).
  • s: tamaño del video. Por ejemplo: vga (640×480), svga (800×600), …
  • b: tasa de bits de video por segundo (por defecto 200kbits por segundo). De este parámetro depende mucho la calidad del video y el tamaño.
  • sameq:  para obtener la misma calidad de video que el original
  • aspect: para fijar el aspect ratio (4:3, 16:9 ).
  • Más opciones de video

Otras opciones:

  • i: nombre del fichero de entrada
  • pass: el número de veces que se va a recodificar el video (para conseguir una mayor compresión), por defecto 1.
  • y: sobreescribir el fichero de salida

Ejemplos de uso de FFMPEG

Y ahora os voy a poner algunos ejemplos de uso que he recopilado de varios sitios (en especial de LaPipaPlena)y alguno que añado yo:

Obtener información de un archivo de audio o video:
$ ffmpeg -i archivo.mpg

Cambiar de formato especificando el bitrate y la resolución del archivo de salida:
$ ffmpeg -i archivo1.avi archivo2.mpg -s 640×480 -b 800

Extraer el audio de un archivo de video:
$ ffmpeg -i archivo.avi -vn -acodec copy audio.mp3

Extraer el video de un archivo olvidándonos del audio:
$ ffmpeg -i archivo.avi -an -vcodec copy video.avi

Conversión / Codificación de audio y video

Convertir un archivo de wav a mp3
$ffmpeg -i audio.wav -f mp3 audio.mp3

Convertir un archivo de mpg a flv
ffmpeg -i video.mpg -ar 22050 video.flv

Convertir de un formato a otro archivos de audio o video:
$ ffmpeg -i archivo1.avi archivo2.mpg

Convertir videos en formato 3gp del móvil a mpeg4:
$ ffmpeg -i archivo1.3gp -vcodec mpeg4 -acodec mp3 archivo2.avi

Convertir de avi a flv:
$ ffmpeg -i movie.avi -acodec mp3 -ar 11025 movie.flv

Convertir de mp3 a amr:
$ ffmpeg -i music.mp3 -acodec amr_nb -ar 8000 -ac 1 -ab 32 music.amr

Convertir de mpeg a mp3:
$ ffmpeg -i video.mpg -f mp3 audio_track.mp3

Convertir de avi a vcd:
$ ffmpeg -i myfile.avi -target pal-vcd myfile_vcd.mpg

Convertir de wav a amr:
$ ffmpeg -i music.wav -acodec amr_nb -ar 8000 -ac 1 -ab 32 music.amr

Convertir de mpeg a 3gp:
$ ffmpeg -i archivo.mpeg -s qcif -r 12 -ac 1 -ar 8000 -b 30 -ab 12 salida.3gp

también:
$ ffmpeg -i archivo.mpeg -s qcif -r 15 -ac 1 -ar 8000 -b 256000 -ab 15 salida.3gp

Convertir de mpeg a Xcid:
$ fmpeg -i pelicula.mpg -acodec mp3 -vcodec xvid -b 687 pelicula.avi

Convertir de mpeg a flv:
$ ffmpeg -i pelicula.mpg -vcodec flv -y pelicula.flv

Convertir una secuencia de imagenes a video:
$ ffmpeg -f image2 -i imagenes%d.jpg video.mpeg

Convertir imagenes de un video en un .gif animado:
$ ffmpeg -i video.mpeg -pix_fmt rgb24 imagenes.gif

Unir varios videos (primero convertirlos a mpeg):
$ ffmpeg -i video1.avi -sameq video1.mpeg
$ ffmpeg -i video2.avi -sameq video2.mpeg

Unir los videos resultantes usando cat:
$ cat video1.mpeg video2.mpeg > nuevo_video.mpeg

Regresar el video resultante al formato deseado:
$ ffmpeg -i nuevo_video.mpeg -sameq nuevo_video.avi

Suprimir el audio de un video:
$ ffmpeg -i video.avi -an video_sin_sonido.avi

Separar para guardar el sonido de un video:
$ ffmpeg -i video.avi audio.mp3

Añadir sonido a un video sin él (por ejemplo a un montaje fotográfico):
$ ffmpeg -i audio.mp3 -i montaje.avi video_final.avi
Nota.- Si el audio.mp3 es más largo que el montaje.avi el video_final tendrá la duración del audio y viceversa
ffmpeg -i utc_1434.mpg -b 80 -vcodec wmv1 -acodec mp3 -ar 8000 -ab 16 -y out.wmv