Diferencia entre revisiones de «Ffmpeg»

De Guía Ubuntu
Saltar a: navegación, buscar
(Enlaces extrenos)
 
(No se muestran 36 ediciones intermedias realizadas por 9 usuarios)
Línea 1: Línea 1:
[[Category:Usuario doméstico]][[Category:Video]][[Categoría:Audio]]
+
'''Ffmpeg''' es un programa sin interfaz gráfica que permite convertir o transformar entre formatos multimedia, tanto de video como de audio. Aunque existen otros programas, algunos sin necesidad de usar comandos, es una de las opciones con más posibilidades y es muy rápida.
  
Ya sabemos que en Windows hay un montón de programas para convertir entre formatos de audio y video. Pero... ¿es posible hacer esto en GNU/Linux? La respuesta es que si. Existen algunas utilidades gráficas que permiten hacer estas conversiones. Sin embargo la reina de todas es una aplicación de línea de comandos. Quizás no sea tan bonita pero admite un montón de formatos de entrada y de salida, y es muy rápida. Estamos hablando de '''ffmpeg'''. Esta utilidad tiene parámetros como para echar para atrás, pero la idea es ir poniendo ejemplos de uso para no tener que pelear mucho.
+
El paquete viene con tres programas:
  
== Instalación ==
+
* '''ffmpeg''': ffmpeg es una herramienta en línea de comandos para convertir ficheros de vídeo, flujos de red o la entrada de una tarjeta de TV a varios formatos de vídeo.
Este paquete está en el repositorio '''universe''' de modo que es sencillo de instalar. Sin embargo esta versión que hay en los repositorios no tiene soporte para muchos formatos de fichero. Por ejemplo no podrás convertir un fichero de audio a AMR para subirlo a tu móvil. En mi caso era una necesidad, por lo que estuve mirando una solución. Y estás de suerte :)  
+
* '''ffserver''':  es un servidor de flujo para todo lo que ffmpeg pueda usar como entrada (ficheros, flujos, entrada de la tarjeta de TV, cámara web, etc).
 +
* '''ffplay''': es un reproductor de medios muy simple y portable que utiliza las librerías ffmpeg y la librería SDL.
  
Hay dos formas de hacer esto, instalando desde los fuentes del paquete o instalando el paquete binario generado. Si tienes prisa y no quieres complicarte la vida elegirás la segunda opción. El paquete te lo puedes bajar de http://issaris.be/dapper/snapshots/.
+
== Instalación sencilla ==
 +
Lo más fácil y rápido es hacer uso del repositorio de paquetes de [http://www.medibuntu.org/ Medibuntu] donde viene una versión de ffmpeg que compilada con las opciones más comunes, incluyendo soporte para el codec x264 entre otros.
  
Si por el contrario te gusta hacer las cosas tu mismo sigue estas instrucciones. Lo primero de todo es tener habilitado el repositorio ''multiverse''. Si no sabes como hacer esto pásate por [Primeros pasos/Activar universe-multiverse|Activar universe-multiverse].
+
La instalación de este repositorio se hace con este churro:
  
{{Nota|Las acciones que tienes que hacer a continuación tendrás que hacerla como usuario '''root'''}}
+
$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
  
Como vamos a compilar, serán necesarios una serie de paquetes de desarrollo:
+
Adicionalmente se recomiendo instalar estos dos paquetes. El primero hace que las aplicaciones del repositorio de Medibuntu aparezcan en el Ubuntu Software Center (Ubuntu 9.10+) (o Añadir/Quitar Aplicaciones (en versiones de Ubuntu anteriores a 9.10). La segunda permite a los usuarios generar un reporte de error contra los paquetes de Medibuntu y enviarlo al bugtracker de Medibuntu.
  
  $ aptitude install dpkg-dev libimlib2-dev texi2html liblame-dev libfaad2-dev libmp4v2-dev
+
  $ sudo apt-get --yes install app-install-data-medibuntu apport-hooks-medibuntu
$ aptitude install libfaac-dev libxvidcore4-dev libtheora-dev libgsm1-dev libogg-dev libvorbis-dev 
+
$ aptitude install liba52-dev libdts-dev libsdl1.2-dev libraw1394-dev libdc1394-13-dev
+
  
Vamos ahora al directorio donde se baraján los fuentes del paquete ''ffmpeg'':
+
Acto seguido ya podremos instalar ffmpeg con todas sus dependencias:
 +
 
 +
$ sudo apt-get install ffmpeg libavcodec-extra-52
 +
 
 +
== Instalación complicada ==
 +
Existe una versión inicial en ''universe'' (véase [[activar universe y multiverse]]). Sin embargo esta versión esta algo limitada para algunos tipos de formatos multimedia.
 +
 
 +
Para obtener esta versión puedes conseguirlo de dos maneras distintas: instalando desde los fuentes del paquete o desde el paquete binario generado. Si tienes prisa elige la segunda opción. El paquete te lo puedes descargar de [http://www.dante.net.ve/material/ffmpeg_amr.deb www.dante.net.ve].
 +
 
 +
Otra opción mas manual va a necesitar de que ya tengas activados los repositorios universe y multiverse de Ubuntu.
 +
 
 +
{{Nota|Las acciones que tienes que hacer a continuación tendrás que hacerla como usuario '''root'''.}}
 +
 
 +
Como vamos a compilar, serán necesarios una serie de paquetes de desarrollo
 +
 
 +
dpkg-dev libimlib2-dev texi2html liblame-dev libfaad2-dev libmp4v2-dev libfaac-dev libxvidcore4-dev libtheora-dev
 +
libgsm1-dev libogg-dev libvorbis-dev liba52-dev libdts-dev libsdl1.2-dev libraw1394-dev libdc1394-13-dev quilt
 +
 
 +
Las podemos instalar mediante Synaptic o la terminal con los siguientes comandos:
 +
 
 +
$ sudo aptitude install dpkg-dev libimlib2-dev texi2html liblame-dev libfaad2-dev libmp4v2-dev
 +
$ sudo aptitude install libfaac-dev libxvidcore4-dev libtheora-dev libgsm1-dev libogg-dev libvorbis-dev 
 +
$ sudo aptitude install liba52-dev libdts-dev libsdl1.2-dev libraw1394-dev libdc1394-13-dev quilt
 +
 
 +
Vamos ahora al directorio donde se bajarán los fuentes del paquete ''ffmpeg'':
  
 
  $ cd /usr/local/src
 
  $ cd /usr/local/src
Línea 24: Línea 48:
 
Nos bajamos los fuentes del paquetes:
 
Nos bajamos los fuentes del paquetes:
  
  $ apt-get source ffmpeg
+
  $ sudo apt-get source ffmpeg
  
Hay que bajarse el parche para que funcione el soporte para AMR:
+
Hay que bajarse el parche para que funcione el soporte para AMR, descarga [http://blogger.rukker.org/dl/ffmpeg_enable_amr.patch.bz2 ffmpeg_enable_amr.patch.bz2].
 
+
$ wget http://blogger.rukker.org/dl/ffmpeg_enable_amr.patch.bz2
+
  
 
Cambiamos al directorio con los fuentes de ''ffmpeg'' y aplicamos el parche:
 
Cambiamos al directorio con los fuentes de ''ffmpeg'' y aplicamos el parche:
Línea 35: Línea 57:
 
  $ bzcat ../ffmpeg_enable_amr.patch.bz2 | patch -p1
 
  $ bzcat ../ffmpeg_enable_amr.patch.bz2 | patch -p1
  
Ahora construimos el paquete con la opción ''risky'' (no preguntes por qué):
+
Ahora construimos el paquete con la opción ''risky'':
  
 
  $ DEB_BUILD_OPTIONS="risky" dpkg-buildpackage
 
  $ DEB_BUILD_OPTIONS="risky" dpkg-buildpackage
Línea 44: Línea 66:
 
  $ dpkg -i ffmpeg_0.cvs20050918-5ubuntu1_i386.deb
 
  $ dpkg -i ffmpeg_0.cvs20050918-5ubuntu1_i386.deb
  
Ahora ya tenemos ''ffmpeg'' con soporte para MP3 y AMR. Bien ya está casi completada la tarea. Tenemos que evitar que ''apt'' actualice nuestra versión compilada por una actualización que no tenga soporte para MP3 y AMR. A esto se le llama ''pinning''. Hemos de editar las preferencias de ''apt'':
+
Ahora ya tenemos ''ffmpeg'' con soporte para MP3 y AMR. Bien ya está casi completada la tarea. Tenemos que evitar que ''apt'' actualice nuestra versión compilada por una actualización que no tenga soporte para MP3 y AMR. A esto se le llama ''pinning''. Hay que editar las preferencias de ''apt'':
  
 
  $ gedit /etc/apt/preferences
 
  $ gedit /etc/apt/preferences
Línea 54: Línea 76:
 
  Pin-Priority: 1001
 
  Pin-Priority: 1001
  
== Ejemplos de conversión ==
+
==Ver también==
 
+
*[[Instalar codecs multimedia]]
=== AVI -> FLV ===
+
*[[Conversión de formatos multimedia]]
$ ffmpeg -i movie.avi -acodec mp3 -ar 11025 movie.flv
+
 
+
=== 3GP -> MPEG4 ===
+
$ ffmpeg -i movie.3gp -vcodec mpeg4 -acodec mp3 movie.avi
+
 
+
=== MP3 -> AMR ===
+
$ ffmpeg -i music.mp3 -acodec amr_nb -ar 8000 -ac 1 -ab 32 music.amr
+
 
+
=== MPEG -> MP3 ===
+
Extrae el audio de un fichero MPEG y lo pasa a MP3
+
 
+
$ ffmpeg -i video.mpg -f mp3 audio_track.mp3
+
 
+
=== AVI -> VCD ===
+
Añadiendo la opción ''-hq'' usa alta calidad.
+
 
+
$ ffmpeg -i myfile.avi -target pal-vcd myfile_vcd.mpg
+
 
+
=== WAV -> AMR ===
+
$ ffmpeg -i music.wav -acodec amr_nb -ar 8000 -ac 1 -ab 32 music.amr
+
 
+
=== MPEG -> 3GP ===
+
$ ffmpeg -i archivo.mpeg -s qcif -r 12 -ac 1 -ar 8000 -b 30 -ab 12 salida.3gp
+
 
+
=== MPEG -> XviD ===
+
$ ffmpeg -i pelicula.mpg -acodec mp3 -vcodec xvid -b 687 pelicula.avi
+
 
+
=== MPEG -> FLV ===
+
$ ffmpeg -i pelicula.mpg -vcodec flv -y pelicula.flv
+
 
+
El fichero resultante no contiene correctamente la información de meta datos. Esto implica que cuando utilices el fichero en un visualizador de videos flash como [http://jeroenwijering.com/?item=Flash_Video_Player Flash Video PLayer] el fichero se verá correctamente pero la barra de progreso no de actualizará. Para arreglar esto usa la utilidad '''flvtool2''' que la encontrarás en http://inlet-media.de/flvtool2. Está hecha en Ruby de modo que tendrás que instalar el paquete correspondiente. Se usa así:
+
 
+
$ flvtool2 -U pelicula.flv
+
 
+
=== AVI -> DV ===
+
Este es el formato Digital Video, el mismo que produce una cámara de video digital y es el que se puede usar para editar con Kino.
+
 
+
$ ffmpeg -i pelicula.avi -target pal-dv pelicula.dv
+
 
+
Esto me da unos errores de sincronismo del audio que no veo que se noten. Si quieres evitarlos tendrás que hacerlo de esta forma:
+
 
+
$ mencoder pelicula.avi -ovc lavc -oac pcm -o pelicula-new.avi
+
$ ffmpeg -i pelicula-new.avi -s pal -r pal -ac 2 -ar 48000 pelicula.dv && rm pelicula-new.avi
+
 
+
Otra forma de hacerlo:
+
 
+
$ ffmpeg -i pelicula.avi -vcodec dvvideo -acodec copy -f dv pelicula.dv -hq
+
 
+
=== AVI -> PNG ===
+
$ ffmpeg -i swing.avi -vcodec png -vframes 1 -an -f rawvideo -s 320x240 swing1.png
+
  
=== WMA -> MP3 ===
+
== Enlaces extrenos ==
Tras el parametro ''ab'' especificaremos el [[w:es:bitrate|bitrate]] del mp3 (192 en el ejemplo).
+
* [http://winff.org/ WinFF] {{en}}
$ ffmpeg -i ficheroEntrada.wma -f mp3 -ab 192 ficheroSalida.mp3
+
* [http://ubuntuforums.org/showthread.php?t=1117283 HOWTO: Easily enable MP3, MPEG4, AAC, and other restricted encoding in FFmpeg] {{en}}
 +
* [http://rob.opendot.cl/index.php/useful-stuff/ffmpeg-x264-encoding-guide/ FFmpeg x264 encoding guide] {{en}}
 +
* [http://mundogeek.net/archivos/2008/10/10/19-cosas-utiles-que-puedes-hacer-con-ffmpeg/ 19 cosas útiles que puedes hacer con ffmpeg] {{es}}
 +
* [http://www.hiteshagrawal.com/ffmpeg/converting-audiovideos-using-ffmpeg Converting Audio/Videos using FFMPEG] {{en}}
 +
* [http://www.linuxquestions.org/questions/linux-mobile-81/androidg1-and-video-converted-via-ffmpeg-h263-687163/#post3359781 Android/G1 and video converted via ffmpeg / h263] {{en}}
  
== Comprobar el resultado ==
+
[[Categoría:Multimedia]]
Si el formato de destino no lo soporta Totem (ya sea con el backed Xine o GStreamer) pudes usar la aplicación '''ffplay''' que viene en el paquete ''ffmpeg'' que reproducirá cualquier formato soportado por ''ffmpeg''. Esto es útil, por ejemplo, para el formato de audio de móvil AMR.
+

Última revisión de 18:57 19 abr 2010

Ffmpeg es un programa sin interfaz gráfica que permite convertir o transformar entre formatos multimedia, tanto de video como de audio. Aunque existen otros programas, algunos sin necesidad de usar comandos, es una de las opciones con más posibilidades y es muy rápida.

El paquete viene con tres programas:

  • ffmpeg: ffmpeg es una herramienta en línea de comandos para convertir ficheros de vídeo, flujos de red o la entrada de una tarjeta de TV a varios formatos de vídeo.
  • ffserver: es un servidor de flujo para todo lo que ffmpeg pueda usar como entrada (ficheros, flujos, entrada de la tarjeta de TV, cámara web, etc).
  • ffplay: es un reproductor de medios muy simple y portable que utiliza las librerías ffmpeg y la librería SDL.

Instalación sencilla

Lo más fácil y rápido es hacer uso del repositorio de paquetes de Medibuntu donde viene una versión de ffmpeg que compilada con las opciones más comunes, incluyendo soporte para el codec x264 entre otros.

La instalación de este repositorio se hace con este churro:

$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update

Adicionalmente se recomiendo instalar estos dos paquetes. El primero hace que las aplicaciones del repositorio de Medibuntu aparezcan en el Ubuntu Software Center (Ubuntu 9.10+) (o Añadir/Quitar Aplicaciones (en versiones de Ubuntu anteriores a 9.10). La segunda permite a los usuarios generar un reporte de error contra los paquetes de Medibuntu y enviarlo al bugtracker de Medibuntu.

$ sudo apt-get --yes install app-install-data-medibuntu apport-hooks-medibuntu

Acto seguido ya podremos instalar ffmpeg con todas sus dependencias:

$ sudo apt-get install ffmpeg libavcodec-extra-52

Instalación complicada

Existe una versión inicial en universe (véase activar universe y multiverse). Sin embargo esta versión esta algo limitada para algunos tipos de formatos multimedia.

Para obtener esta versión puedes conseguirlo de dos maneras distintas: instalando desde los fuentes del paquete o desde el paquete binario generado. Si tienes prisa elige la segunda opción. El paquete te lo puedes descargar de www.dante.net.ve.

Otra opción mas manual va a necesitar de que ya tengas activados los repositorios universe y multiverse de Ubuntu.

Nota clasica.png Las acciones que tienes que hacer a continuación tendrás que hacerla como usuario root.

Como vamos a compilar, serán necesarios una serie de paquetes de desarrollo

dpkg-dev libimlib2-dev texi2html liblame-dev libfaad2-dev libmp4v2-dev libfaac-dev libxvidcore4-dev libtheora-dev
libgsm1-dev libogg-dev libvorbis-dev liba52-dev libdts-dev libsdl1.2-dev libraw1394-dev libdc1394-13-dev quilt

Las podemos instalar mediante Synaptic o la terminal con los siguientes comandos:

$ sudo aptitude install dpkg-dev libimlib2-dev texi2html liblame-dev libfaad2-dev libmp4v2-dev
$ sudo aptitude install libfaac-dev libxvidcore4-dev libtheora-dev libgsm1-dev libogg-dev libvorbis-dev  
$ sudo aptitude install liba52-dev libdts-dev libsdl1.2-dev libraw1394-dev libdc1394-13-dev quilt

Vamos ahora al directorio donde se bajarán los fuentes del paquete ffmpeg:

$ cd /usr/local/src

Nos bajamos los fuentes del paquetes:

$ sudo apt-get source ffmpeg

Hay que bajarse el parche para que funcione el soporte para AMR, descarga ffmpeg_enable_amr.patch.bz2.

Cambiamos al directorio con los fuentes de ffmpeg y aplicamos el parche:

$ cd ffmpeg-0.cvs20050918
$ bzcat ../ffmpeg_enable_amr.patch.bz2 | patch -p1

Ahora construimos el paquete con la opción risky:

$ DEB_BUILD_OPTIONS="risky" dpkg-buildpackage

Volvemos al directorio /usr/local/src e instalamos el paquete generado:

$ cd ..
$ dpkg -i ffmpeg_0.cvs20050918-5ubuntu1_i386.deb

Ahora ya tenemos ffmpeg con soporte para MP3 y AMR. Bien ya está casi completada la tarea. Tenemos que evitar que apt actualice nuestra versión compilada por una actualización que no tenga soporte para MP3 y AMR. A esto se le llama pinning. Hay que editar las preferencias de apt:

$ gedit /etc/apt/preferences

Y añadir estas líneas:

Package: ffmpeg
Pin: version 0.cvs20050918-5ubuntu1
Pin-Priority: 1001

Ver también

Enlaces extrenos