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 autoconf libtool checkinstall libssl-dev
Criando uma pasta para guardar todos os arquivos
cd ~ mkdir ffsource cd ffsource
Baixando e compilando o LibaacPlus
cd ~/ffsourcewget 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 ~/ffsourcegit clone git://git.videolan.org/x264cd x264./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl make sudo make install
Baixando e compilando o LibVPX
cd ~/ffsourcegit 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=posixsudo 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.