quinta-feira, 26 de março de 2015

Raspberry Pi: Compilando o ffmpeg

Estava utilizando o avconv (Que pretende ser o substituto do ffmpeg em algumas distros Linux) para converter alguns arquivos de vídeo e áudio, até que precisei usar o avserver e não encontrava material decente na internet de como utiliza-lo, além de uma mensagem dizendo:
WARNING: avserver is unmaintained, largely broken and in need of a complete rewrite. It probably won't work for you. Use at your own risk
Mediante isso resolvi compilar o ffmpeg manualmente pois o ffmpeg que acompanha o Raspbian funciona, mas informa que devo usar o avconv em seu lugar.

Para minha surpresa, após compilar o ffmpeg o mesmo chega a ser 2x ou mais rápido que o avconv rodando no mesmo hardware.

Antes de começar vou postar as 2 fontes que utilizei que dão o passo a passo de como compilar o ffmpeg no Raspberry. Fonte 1 e Fonte 2

Originalmente eu iria utilizar o passo a passo da fonte 2 mas alguns links estão quebrados então utilizei a fonte 1. MAS, a fonte 2 foi necessária pois eu preciso do suporte ao alsa (Advanced Linux Sound Architecture) e a fonte 1 não adiciona esse suporte.

Seguindo os meus passos você também terá o suporte ao filtro drawtext do ffmpeg pois em ambas as fontes acima esse filtro não é adicionado e no meu caso eu também preciso deles.

Se você olhar a fonte 1, perceberá que aqui é basicamente um copiar/colar dele com apenas alguns adicionais do suporte ao alsa e do filtro drawtext.

Mãos a obra.



Removendo o ffmpeg e algumas libraries para recompila-las manualmente
sudo apt-get remove --purge libmp3lame-dev libtool libssl-dev libaacplus-* libx264 libvpx librtmp ffmpeg
Download das dependências
sudo apt-get install libmp3lame-dev; sudo apt-get install autoconf; sudo apt-get install libtool; sudo apt-get install checkinstall; sudo apt-get install libssl-dev
Criando uma pasta para guardar todos os arquivos
cd ~
mkdir ffsource
cd ffsource
Baixando e compilando o LibaacPlus
cd ~/ffsource
wget http://tipok.org.ua/downloads/media/aacplus/libaacplus/libaacplus-2.0.2.tar.gz

tar -xzf libaacplus-2.0.2.tar.gz
cd libaacplus-2.0.2
./autogen.sh --with-parameter-expansion-string-replace-capable-shell=/bin/bash --host=arm-unknown-linux-gnueabi --enable-static
make
sudo make install
Baixando e compilando o Libx264
cd ~/ffsource
git clone git://git.videolan.org/x264
cd x264
./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl
make
sudo make install
Baixando e compilando o LibVPX
cd ~/ffsource
git clone http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure
make
sudo checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no     --deldoc=yes --fstrans=no --default
Baixando e compilando o LibRTMP
cd ~/ffsource
git clone git://git.ffmpeg.org/rtmpdump
cd rtmpdump
make SYS=posix
sudo checkinstall --pkgname=rtmpdump --pkgversion="2:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default
Baixando e compilando o ALSA
cd ~/ffsource
wget http://mirrors.zerg.biz/alsa/lib/alsa-lib-1.0.25.tar.bz2
tar xjf alsa-lib-1.0.25.tar.bz2
cd alsa-lib-1.0.25/
./configure --host=arm-unknown-linux-gnueabi --prefix=/my/path/were/i/keep/built/arm/stuff
make
make install
Instalando as bibliotecas necessárias para o filtro drawtext
sudo apt-get install libfreetype6-dev libfontconfig1-dev
Baixando e compilando o ffmpeg
sudo ldconfig
cd ~/
ffsource
git clone --depth 1 git://git.videolan.org/ffmpeg
cd ffmpeg
./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --enable-libaacplus --enable-librtmp --enable-libmp3lame --enable-libfreetype --enable-libfontconfig
make
sudo make install
Pronto. :)

Agora você tem o ffmpeg com suporte aos principais codecs, ao alsa e ao filtro drawtext.

Essa página vai ser útil para mim caso eu necessite compila-lo novamente e espero que seja útil também para você.

Abraços.

Nenhum comentário:

Postar um comentário