sábado, 12 de julho de 2014

Compilando o FFmpeg no CentOS 6.x

Este é uma tradução do guia Compile FFmpeg on CentOS 6.x que utilizo nos meus ambientes para fazer conversão de vídeos. É um guia muito útil que disponibiliza uma compilação bem completa do FFmpeg com alguns encoders e decoders. Eu sempre o utilizo este guia como referencia para atualizar minhas instalações. Espero que seja útil para você.

Para este post eu utilizei uma instalação mínima do CentOS 6.5. Iremos fazer a instalação do FFmpeg local com algumas extensões de encoders. As instruções devem funcionar em versões mais recentes das distribuições do Red Hat Enterpreise Linux (RHEL) e Fedora.

Dependencias


Instalando as dependencias

# yum install autoconf automake gcc gcc-c++ git libtool make nasm pkgconfig zlib-devel
Crie um diretório para armazenar os códigos fontes
mkdir ~/ffmpeg_sources

Compilando e Instalando

Yasm

O Yasm é o compilador assembler utilizado pelo encoder x264 e o FFmpeg
cd ~/ffmpeg_sources
curl -O http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean
export "PATH=$PATH:$HOME/bin"

libx264

H.264 video encoder.
FFmpeg precisar ser configurado com as opções --enable-gpl --enable-libx264 e --extra-libs=-ldl.
cd ~/ffmpeg_sources
git clone --depth 1 git://git.videolan.org/x264
cd x264
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean

libfdk_aac

AAC audio encoder.
FFmpeg precisa ser configurado com as opções --enable-libfdk_aac ( e --enable-nonfree se for utilizado a opção --enable-gpl )
cd ~/ffmpeg_sources
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

libmp3lame

MP3 audio encoder.
FFmpeg precisa ser configurado com a opção --enable-libmp3lame.
cd ~/ffmpeg_sources
curl -L -O http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install
make distclean

libopus

Opus audio decoder e encoder.
FFmpeg precisa ser configurado com a opção --enable-libopus.
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
tar xzvf opus-1.1.tar.gz
cd opus-1.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

libogg

Biblioteca Ogg bitstream. Requerido pelas bibliotecas libtheora e libvorbis.
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.gz
tar xzvf libogg-1.3.1.tar.gz
cd libogg-1.3.1
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

libvorbis

Vorbis audio encoder. Depende de libogg.
FFmpeg precisa ser configurado com a opção --enable-libvorbis.
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz
tar xzvf libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean

libvpx

VP8/VP9 video encoder.
FFmpeg precisa ser configurado com as opções --enable-libvpx.
cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples
make
make install
make clean

FFmpeg

cd ~/ffmpeg_sources
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
export PKG_CONFIG_PATH
./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
make
make install
make distclean
hash -r
A compilação está pronta e o ffmpeg com os binários ffprobe, ffserver, lame e x264 devem agora estar prontos para uso. O resto do guia mostra como atualizar ou remover o FFmpeg.
Nota: Mantenha o diretório ffmpeg_sources e todo o seu conteúdo se você pretende atualizar ou desinstalar como mostrado abaixo.

Variáveis de Sistema

Como a instalação é local em uma pasta na HOME do usuário é importante configurarmos algumas variáveis de ambiente para que a utilização seja transparente quando você estiver convertendo seus vídeos. Adicione as seguintes linhas ao seu arquivo ~/.bashrc
PATH=$HOME/bin:$PATH
LD_LIBRARY_PATH=$HOME/ffmpeg_build/lib:$LD_LIBRARY_PATH
MANPATH=$HOME/ffmpeg_build/share/man:$MANPATH
export PATH LD_LIBRARY_PATH MANPATH

Bibliotecas adicionais

Outras bibliotecas de codec que você talvez queira utilizar. Estas precisam ser instaladas antes de compilar o ffmpeg.

libfreetype

Biblioteca de renderização de fontes. Necessária para o filtro de vídeo drawtext.
FFmpeg precisa ser configurado com a opção --enable-libfreetype.
# yum install freetype-devel

libspeex

Speex audio decoder e encoder.
FFmpeg precisa ser configurado com a opção --enable-libspeex.
# yum install speex-devel

libtheora

Theora video encoder. Necessita de libogg.
FFmpeg precisa ser configurado com a opção --enable-libtheora
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
tar xzvf libtheora-1.1.1.tar.gz
cd libtheora-1.1.1
./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-examples --disable-shared --disable-sdltest --disable-vorbistest
make
make install
make distclean

Atualizando

O desenvolvimento do FFmpeg é ativo e pode ser necessário fazer um update ocasional para habilitar novas funcionalidades e correção de bugs.
Primeiro, remova os arquivos antigos e então atualizamos as dependências.
rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,yasm,ytasm}
# yum install autoconf automake gcc gcc-c++ git libtool make nasm pkgconfig zlib-devel

Atualizando x264

cd ~/ffmpeg_sources/x264
make distclean
git pull
Então rode o script ./configure, make, e make install como descrito na instalação do x264.

Atualizando libfdk_aac

cd ~/ffmpeg_sources/libfdk_aac
make distclean
git pull
E execute o processo ./configure, make e make install como descrito na instalação do libfdk_aac.

Atualizando o libvpx

cd ~/ffmpeg_sources/libvpx
make clean
git pull
E execute o processo ./configure, make e make install como descrito na instalação do libvpx.

Atualizando o FFmpeg

cd ~/ffmpeg_sources/ffmpeg
make distclean
git pull
E execute o processo ./configure, make e make install como descrito na instalação do FFmpeg.

Removendo as alterações seguidas neste guia.

rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,yasm,ytasm}
# yum erase autoconf automake gcc gcc-c++ git libtool make nasm pkgconfig zlib-devel
hash -r
Post original: https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
Postar um comentário