O FFmpegO FFmpeg é uma ferramenta completa para gravar, converter e efetuar streaming de audio e vídeo. Inclui a
libavcodec, uma poderosa biblioteca de codecs para audio e vídeo. O FFmpeg é desenvolvido no linux, mas pode ser compilado na maioria dos sistemas operacionais, incluindo o Windows.
Na última compilação do FFmpeg, não estava habilitado o suporte à medias em formato mp3, aac e amr. Esse tutorial mostra como recompilar o FFmpeg habilitando o surporte à esses formatos de mídia. O tutorial foi testado no ubuntu linux versão 8.04.1, no entando com algumas modificações pode facilmente ser adaptado para compilar o software em outros sistemas.
Para copiar os códigos fonte diretamente do site do cvs, utilizei o subversion. Para instalar o subversion digite no terminal:
sudo apt-get install subversion
Para organizar nosso processo, sugiro criar o diretório /proj em /tmp que conterá o código fonte do ffmpeg e dos codecs para compilação:
cd /tmp
mkdir proj
O próximo passo é fazer o download do código fonte do ffmpeg:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
ou
wget http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2
Vamos descompactar o arquivo com os fontes e renomear a pasta original para ffmpeg:
sudo tar -jxvf ffmpeg-export-snapshot.tar.bz2
mv ffmpeg-export-snapshot ffmpeg
Bibliotecas e DependênciasAntes de compilar o ffmpeg, verifiquei a necessidade de softwares adicionais para que a compilação possa se dar corretamente. Para compilar, é necessário ter um compilador C/C++ instalado e algumas outras bibliotecas para auxiliar na compilação. Lembrando que no meu caso, estou executando os procedimentos no ubuntu linux, verifique a necessidade de instalar essas bibliotecas no seu sistema.
Instalando o g++ (~32MB) 4.2.3:
sudo apt-get install g++
Instalando o comando patch (2.5.9.4):
sudo apt-get install patch
Instalando pacotes autotools:
sudo apt-get install automake (autoconf automake m4)
sudo apt-get install libtool ( autotools-dev libtool )
sudo apt-get install yasm ( autotools-dev libtool )
Demais pacotes:
sudo apt-get install build-essential
Feita a instalação das ferramentas, vamos iniciar a compilação do ffmpeg propriamente dito. Antes de instalar as bibliotecas auxiliares, vamos compilar o código fonte original do ffmpeg para garantir que a configuração das bibliotecas e mesmo a integridade do código fonte esteja ok:
cd /tmp/proj/ffmpeg
sudo ./configure
make
make install
Se tudo correu bem até aqui, um arquivo binário chamado ffmpeg deve ter sido gerado. É o nosso programa já compilado no formato original.
Bibliotecas Externas (codecs)Sugiro que seja criada uma pastas codecs em /tmp/proj para que os códigos fonte das bibliotecas externas sejam armazenados, em seguida criar uma pasta chamada lib em /tmp/proj para que sejam armazenadas as bibliotecas compiladas.
- mp3lame:
-----------------
Download do código fonte para a pasta /tmp/proj/codecs:
http://prdownloads.sourceforge.net/lame/lame-3.97.tar.gz?download
Descompactar e mover para a pasta dos fontes do ffmpeg:
cd /tmp/proj/codecs
tar xvfz lame-3.97.tar.gz
mv lame-3.97 ../ffmpeg
baixar o patch de correção para o diretório /tmp/proj/codecs e mover para a pasta /tmp/proj/ffmpeg/lame-3.97:
wget http://arrozcru.no-ip.org/ffmpeg_patches/lame.diff
no diretório /tmp/proj/ffmpeg/lame-3.97, aplique o patch de correção:
patch -p0 < ../lame.diff
Para compilar o mp3lame, gerando as libs no diretório /tmp/proj/lib:
./configure --prefix=/tmp/proj/lib --disable-shared --enable-static --disable-frontend --enable-yasm
make
make install
- faad2
----------
Download do código fonte para a pasta /tmp/proj/codecs:
http://prdownloads.sourceforge.net/faac/faad2-2.6.1.tar.gz?download
baixar o patch de correção para o diretório /tmp/proj/codecs e mover para a pasta /tmp/proj/ffmpeg:
wget http://arrozcru.no-ip.org/ffmpeg_patches/faad2-2.6.1.patch
Descompactar e mover para a pasta ffmpeg:
tar xvfz faad2-2.6.1.tar.gz
mv faad2 ../ffmpeg
no diretório /tmp/proj/ffmpeg, aplique o patch de correção:
patch -p0 < faad2-2.6.1.patch
Compilar o faad2, gerando as libs no diretório /tmp/proj/lib:
cd faad2
sh bootstrap
./configure --prefix=/tmp/proj/lib --enable-static --disable-shared
make LDFLAGS="-no-undefined"
make install
- faac
-----------
Download do código fonte para a pasta /tmp/proj/codecs:
http://prdownloads.sourceforge.net/faac/faac-1.26.tar.gz?download
Descompactar e mover para a pasta ffmpeg:
tar xvfz faac-1.26.tar.gz
mv faac ../ffmpeg
baixar o patch de correção para o diretório /tmp/proj/codecs e mover para a pasta /tmp/proj/ffmpeg:
wget http://arrozcru.no-ip.org/ffmpeg_patches/faac-1.26.patch
no diretório /tmp/proj/ffmpeg, aplique o patch de correção:
patch -p0 < faac-1.26.patch
Compilar o faac, gerando as libs no diretório /tmp/proj/lib
cd faac
sh bootstrap
./configure --prefix=/tmp/proj/lib --enable-static --disable-shared
make LDFLAGS="-no-undefined"
make install
- amr_nb
-----------
É necessário o unzip e o wget para instalação desse codec, assim como acesso a Internet.
Download do código fonte para a pasta /tmp/proj/codecs:
http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.0.tar.bz2
Descompactar e mover para a pasta ffmpeg:
tar -jxvf amrnb-7.0.0.0.tar.bz2
mv amrnb-7.0.0.0 ../ffmpeg
Compilar o amr_nb, gerando as libs no diretório /tmp/proj/lib
cd amrnb-7.0.0.0
./configure --prefix=/tmp/proj/lib --enable-static --disable-shared
make
make install
- amr_wb
-----------
É necessário o unzip e o wget para instalação desse codec, assim como acesso a Internet.
Download do código fonte para a pasta /tmp/proj/codecs:
wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.2.tar.bz2
Descompactar e mover para a pasta ffmpeg:
tar -jxvf amrwb-7.0.0.2.tar.bz2
mv amrwb-7.0.0.2 ../ffmpeg
Compilar o amr_wb, gerando as libs no diretório /tmp/proj/lib
cd amrwb-7.0.0.2
./configure --prefix=/tmp/proj/lib --enable-static --disable-shared
make
make install
Recompilar FFmpeg usando codecs já compilados Para recompilar o ffmpeg, deve-se indicar os codecs que serão adicionados no ./configure e também o caminho dos includes e libs dos codecs:
./configure --enable-libmp3lame --enable-libfaad --enable-gpl --enable-libfaac --enable-gpl --enable-libamr-nb --enable-nonfree --enable-libamr-wb --enable-nonfree -extra-ldflags=-L/tmp/proj/lib/lib --extra-cflags=-I/tmp/proj/lib/include
make
make install
Desse forma geramos uma nova versão do ffmpeg com suporte a audio mp3, aac e amr.
Para maiores detalhes consulte:
http://arrozcru.no-ip.org/ffmpeg_wiki/tiki-index.php?page=HomePagePara detalhes de como recompilar o ffmpeg especificamente para o ubuntu linux, esse endereço oferece uma descrição detalhada:
https://wiki.ubuntu.com/ffmpeg