ffmpeg + codecs per a Mac OS X 10.6

Objectiu:

L’objectiu d’aquesta entrada és facilitar la compilació i execució del conversor d’audio i vídeo ffmpeg amb els complements libx264 i libfaac (entre d’altres). Aquest tutorial està copiat de diverses fonts d’Internet que he recollit i resumeixo aquí, sobretot, per recordar-ho en un futur.

Instal·lacions prèvies:

Algunes de les llibreries que instal·larem a continuació requereixen de yasm per a compilar. A continuació instal·lem aquest programari.

$ curl -#LO http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz
$ tar zxf yasm-1.1.0.tar.gz
$ cd yasm-1.1.0
$ ./configure
$ make && sudo make install
$ cd ..

Procediment:

Seguidament ja podem descarregar les llibreries dels diferents codecs als que volem que l’ffmpeg tingui accés i pugui utilitzar:

FAAC (aac Audio Encoder):

$ curl -#LO http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
$ tar zxf faac-1.28.tar.gz
$ cd faac-1.28
$ CFLAGS="-D__unix__" ./configure
$ make && sudo make install
$ cd ..

LAME MP3 (mp3 Audio Encoder):

$ curl -#LO http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz
$ tar zxf lame-3.98.4.tar.gz 
$ cd lame-3.98.4
$ ./configure
$ make && sudo make install
$ cd ..

Xiph.org family of codecs:

$ curl -#LO http://downloads.xiph.org/releases/ogg/libogg-1.2.2.tar.gz
$ curl -#LO http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
$ curl -#LO http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
$ curl -#LO http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz
$ tar zxvf libogg-1.2.2.tar.gz
$ cd libogg-1.2.2
$ ./configure
$ make && sudo make install
$ cd ..
$ tar zxf libvorbis-1.3.2.tar.gz
$ cd libvorbis-1.3.2
$ ./configure --disable-oggtest
$ make && sudo make install
$ cd ..
$ tar jxf libtheora-1.1.1.tar.bz2
$ cd libtheora-1.1.1
$ ./configure --disable-oggtest --disable-vorbistest --disable-examples --disable-asm
$ make && sudo make install
$ cd ..
$ tar zxf flac-1.2.1.tar.gz
$ cd flac-1.2.1
$ ./configure --disable-thorough-tests --disable-oggtest --disable-asm-optimizations
$ make && sudo make install
$ cd ..

VPX (VP8 video encoder):

$ curl -#LO http://webm.googlecode.com/files/libvpx-v0.9.6.tar.bz2
$ tar jxf libvpx-v0.9.6.tar.bz2
$ cd libvpx-v0.9.6
$ ./configure --enable-vp8 --enable-psnr --enable-postproc --enable-multithread --enable-runtime-cpu-detect --disable-install-docs --disable-debug-libs --disable-examples
$ make && sudo make install
$ cd ..

libx264 (264 video encoder):

$ curl -#LO ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
$ tar jxf last_x264.tar.bz2
$ cd x264-*
$ CFLAGS="-I. -fno-common -read_only_relocs suppress" ./configure --prefix=/usr/local --enable-static --enable-shared
$ make -j3 && sudo make install
$ cd ..

XVID Codec (Xvid video encoder):

$ curl -#LO http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
$ tar zxf xvidcore-1.3.2.tar.gz
$ cd xvidcore/build/generic
$ ./configure --disable-assembly
$ make && sudo make install
$ cd ../../..

FFMPEG 0.8:

Un cop compilades i instal·lades totes les llibreries (aquesta selecció no és completa, n’hi ha més que es poden instal·lar, la llista completa es pot veure fent un ./configure –help) podem procedir a instal·lar l’ffmpeg:

$ curl -#LO http://www.ffmpeg.org/releases/ffmpeg-0.8.tar.gz
$ tar zxf ffmpeg-0.8.tar.gz
$ cd ffmpeg-0.8
$ CFLAGS="-DHAVE_LRINTF" ./configure --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-shared --enable-pthreads --disable-indevs
$ make && sudo make install
$ cd ..

A partir d’aquest moment ffmpeg està instal·lat i ja podem començar a utilitzar-lo. Com a exemple mostro dues comandes que fan conversions simples:

Convertir vídeo a x264:

$ ffmpeg -i infile.mov -acodec libfaac -ab 192k -sameq -vcodec libx264 -threads 2 -f mp4 outfile.avi

Extreure audio d’un vídeo:

$  ffmpeg -i infile.mov -acodec libfaac -ab 192k -f mp4 -vn outfile.m4a

Convertir un mp4 a avi (per a reproductors antics):

$  ffmpeg -i infile.mp4 -vcodec libxvid -acodec libmp3lame -sameq -vcodec libxvid output.avi

Documentació

Com sempre els manuals són una bona font d’informació. El manual d’ffmpeg és molt extens i pot semblar aterridor de bon principi. Paciència.

man ffmpeg