sexta-feira, 13 de novembro de 2009

Recompilando o ffmpeg no Ubuntu 9.10

EDIT: (26 de maio de 2010) Veja aqui como compilar o ffmpeg com vp8

No Ubuntu 8.10 para ter suporte a x264, bastava adicionar o repositório do medibuntu. Mas no Ubuntu 9.04, o ffmpeg já não tinha suporte a x264 e aac.
Para solucionar o problema, recompilei o ffmpeg no Ubuntu 9.04.

Com a chegada do Ubuntu 9.10, tive de recompilar novamente o ffmpeg. Mas acontece que a nova versão do ffmpeg sofreu algumas alterações. Por exemplo : o --enable-libamr-wb mudou para --enable-libopencore-amrwb. E o pacote libamr-wb-dev mudou de nome para libopencore-amrwb-dev. (esse pacote é necessário para ter suporte a ficheiros 3gp que são usados em alguns celulares).

Então vamos começar:

Crie uma pasta temporária ffmpeg-install por exemplo.
Agora abra o console dentro da pasta e execute os seguinte comandos:

sudo apt-get purge ffmpeg x264 libx264-dev
sudo apt-get update

Agora vamos instalar as dependências:

sudo apt-get install build-essential subversion checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libtheora-dev libxvidcore4-dev libsdl1.2-dev libvorbis-dev libopencore-amrwb-dev libopencore-amrnb-dev git-core libx11-dev libxfixes-dev zlib1g-dev

Baixando a última versão do o x264:

git clone git://git.videolan.org/x264.git

Agora entramos na pasta x264:

cd x264

Depois:

./configure

make

NOTA: no configure use o --enable-pic para compilar com suporte a 64bit.

./configure --enable-pic

Não Utilize essa opção caso o seu processador não seja 64bit.

Agora com a ajuda do checkinstall, vamos criar e instalar o nosso pacote deb :)

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

E pronto. Já temos o x264, agora vamos ao ffmpeg.

Na mesma consola use o seguinte comando para voltarmos a pasta ffmpeg-install:

cd ..

Agora "baixamos" o ffmpeg:

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

E depois:

cd ffmpeg
./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-avfilter --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvorbis --enable-x11grab --enable-version3
make

NOTA: use a opção --arch=x86_64 no configure se quiser optimizar para processadores 64bit

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "5:0.svn`date +%Y%m%d`-12ubuntu3" --default

Repare que no comando do checkinstall tive de mudar o numero da versão de 4:0.svn para 5:0.svn, senão você acaba de compilar o ffmpeg e gestor de pacotes de seguida "reclama" que tem uma "nova" versão no repositório :P

E pronto! Já temos a última versão do ffmpeg com x264, aac e amr.

NOTA: O checkinstall criou um pacote deb dentro da pasta ffmpeg. Você pode usar o pacote deb para instalar em outras máquinas. :)

9 comentários :

Sérgio disse...

Olá,

estou tendo o seguinte erro depois q executo o ultimo comando:

**** Instalação falhou. Abortando a criação do pacote.

Restaurando, a partir das cópias de segurança, os arquivos sobrescritos...OK

Limpando.../usr/bin/checkinstall: linha 300: [: número excessivo de argumentos
OK

Tchau.

Vc sabe o pode ser isso?

Tuxmind disse...

Aqui funcionou sem problemas...

O erro foi no comando do checkinstall? certo?
O erro apareceu ao instalar o x264 ou o ffmpeg?

Aguardo resposta :)

Um braço

Sérgio disse...

O erro foi no checkinstall do ffmpeg... o do x264 rodou direitinho...

Abraço

Tuxmind disse...

Acho que já sei qual a origem do problema...
falta instalar os seguintes pacotes:

libx11-dev libxfixes-dev zlib1g-dev

Aqui na minha máquina não tive problemas porque já tinha esses pacotes instalados. Provavelmente instalei quando compilei o ffmpeg para o Ubuntu 9.04. E como atualizei para o 9.10 os pacotes já estavam instalados.

Já corrigi esse erro no tutorial.

Repita novamente todos os passos.
E em principio o problema estará resolvido.

Um abraço, e obrigado pelo feedback :)

Sérgio disse...

dessa vez quase deu certo... instalei os pacotes que vc disse e instalação foi bem mais longe mas deu esse erro, de novo na instalação do ffmpeg:

make: *** Sem regra para processar o alvo `/home/sergioaugusto/Área', necessário por `version.h'. Pare.

**** Instalação falhou. Abortando a criação do pacote.

Restaurando, a partir das cópias de segurança, os arquivos sobrescritos...OK

Limpando.../usr/bin/checkinstall: linha 300: [: número excessivo de argumentos
OK

Tchau.

A pasta onde estão os arquivos (ffmpeg-install) está na Área de Trabalho.

Tuxmind disse...

Crie a pasta ffmpeg-install dentro da pasta do user /home/sergioaugusto.

A pasta "Área de trabalho" costuma ser problemática com scripts porque contém espaços, e um acento.

Outra coisa que pode esta a correr mal é o facto de instalar sempre a última versão.
Como o SVN está sempre em actualização, as vezes pode ocorrer um erro durante a instalação. Aguarde algum tempo (talvez uma ou duas horas depende) para que o pessoal do ffmpeg corrija pequenos erros que está na ultima versão no SVN.

Um abraço

Sérgio disse...

vlw pela ajuda cara... agora o pacote foi criado e instalado direitinho... só que ainda não deu certo... continuo sem áudio nos videos 3gp e mp4...

Carlos disse...

olá tuxmind, estou com problema no seguinte local:

carlos@carlos-desktop:~/ffmpeg-install/x264$ sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

sudo: checkinstall: command not found

carlos@carlos-desktop:~/ffmpeg-install/x264$

a pasta esta em home/carlos/ffmpeg-install

o que fiz errado?
grato pela atenção.

Tuxmind disse...

@Carlos Obrigado pela visita :)

Você tem os repositórios universe e multiverse activos?
E o Ubuntu 9.10? Certo?
O checkinstall está no repositório universe. Parece que você não tem este repositório activado. Por isso o checkinstall não foi instalado, e dá esse erro.

Se você tiver o idioma pt-PT
Vá até sistema > administração > Fontes de Aplicações

Em pt-BR:
Sistema > Administração > Canais de Software

Marque todos os repositórios (Canais de software)

Vá até ao console e:
sudo apt-get update

Agora você terá que repetir o tutorial novamente. :)