terça-feira, 15 de julho de 2014

Script para remover vinhetas de vídeos utilizando FFmpeg

Olá pessoal. Hoje vou mostrar um script para remover vinhetas de vídeos. Para vídeos de seriado onde todo episódio tem uma vinheta no inicio do vídeo e outra no final além de ser um pouco cansativo assistir essas vinhetas em todos os episódios se você remove-las o seu vídeo final irá ocupar menos espaço em disco. Eu fiz esse processo nos episódios do Naruto Shippuuden que minha filha de 10 anos está acompanhando e eu não aguentava mais assistir a mesma vinheta a cada episódio novo que ela assistia, então resolvi cortar as vinhetas e garantir mais ação e diversão para mim e para a criança = ).

Marcando o Vídeo

Começamos marcando o vídeo que queremos com os intervalos de tempo onde aparecem as vinhetas que queremos cortar. Criamos um arquivo cuts.txt. Esse arquivo contém o formato

vídeo;-ss inicio_part1 -to fim_part1;-ss inicio_part2 -to fim_part2
linha a linha como mostrado no exemplo abaixo:

cat cuts.txt
narutoPROJECT_-_Shippuuden_197_new.mp4;-ss 0:00:00 -to 0:01:52;-ss 0:03:22 -to 0:21:05
narutoPROJECT_-_Shippuuden_198_new.mp4;-ss 0:00:00 -to 0:03:44;-ss 0:05:14 -to 0:21:05
narutoPROJECT_-_Shippuuden_199_new.mp4;-ss 0:00:00 -to 0:05:46;-ss 0:07:16 -to 0:20:05
narutoPROJECT_-_Shippuuden_200_new.mp4;-ss 0:00:00 -to 0:08:37;-ss 0:10:08 -to 0:21:05
narutoPROJECT_-_Shippuuden_201_new.mp4;-ss 0:00:00 -to 1:04:00;-ss 0:02:35 -to 0:21:05
narutoPROJECT_-_Shippuuden_202_new.mp4;-ss 0:00:00 -to 4:35:00;-ss 0:06:05 -to 0:21:05
narutoPROJECT_-_Shippuuden_203_new.mp4;-ss 0:00:00 -to 6:16:00;-ss 0:07:48 -to 0:21:05
narutoPROJECT_-_Shippuuden_204_new.mp4;-ss 0:00:00 -to 4:36:00;-ss 0:06:05 -to 0:21:05
narutoPROJECT_-_Shippuuden_205_new.mp4;-ss 0:00:00 -to 6:10:00;-ss 0:07:39 -to 0:21:05
narutoPROJECT_-_Shippuuden_206_new.mp4;-ss 0:00:00 -to 2:25:00;-ss 0:03:56 -to 0:21:05
narutoPROJECT_-_Shippuuden_207_new.mp4;-ss 0:00:00 -to 2:47:00;-ss 0:04:18 -to 0:21:05
narutoPROJECT_-_Shippuuden_208_new.mp4;-ss 0:00:00 -to 2:17:00;-ss 0:03:47 -to 0:21:05
narutoPROJECT_-_Shippuuden_209_new.mp4;-ss 0:00:00 -to 2:51:00;-ss 0:04:22 -to 0:20:05
narutoPROJECT_-_Shippuuden_210_new.mp4;-ss 0:00:00 -to 0:00:48;-ss 0:02:18 -to 0:21:05
narutoPROJECT_-_Shippuuden_211_new.mp4;-ss 0:01:30 -to 0:02:17;-ss 0:02:18 -to 0:21:05
narutoPROJECT_-_Shippuuden_212_new.mp4;-ss 0:00:00 -to 0:03:20;-ss 0:04:50 -to 0:20:05
narutoPROJECT_-_Shippuuden_213_new.mp4;-ss 0:01:30 -to 0:02:17;-ss 0:02:18 -to 0:21:05
narutoPROJECT_-_Shippuuden_214_new.mp4;-ss 0:00:00 -to 0:07:18;-ss 0:08:48 -to 0:21:05
narutoPROJECT_-_Shippuuden_215_new.mp4;-ss 0:00:00 -to 0:03:07;-ss 0:04:37 -to 0:21:05
narutoPROJECT_-_Shippuuden_216_new.mp4;-ss 0:01:30 -to 0:02:17;-ss 0:02:18 -to 0:21:05
narutoPROJECT_-_Shippuuden_217_new.mp4;-ss 0:00:00 -to 0:03:32;-ss 0:05:02 -to 0:21:05
narutoPROJECT_-_Shippuuden_218_new.mp4;-ss 0:00:00 -to 0:02:18;-ss 0:03:48 -to 0:21:05
narutoPROJECT_-_Shippuuden_219_new.mp4;-ss 0:00:00 -to 0:02:12;-ss 0:03:42 -to 0:21:05
narutoPROJECT_-_Shippuuden_220_new.mp4;-ss 0:00:00 -to 0:04:31;-ss 0:06:01 -to 0:21:05
narutoPROJECT_-_Shippuuden_221_new.mp4;-ss 0:00:00 -to 0:00:37;-ss 0:02:07 -to 0:21:05

O script irá utilizar o arquivo acima para cortar cada vídeo em duas partes que serão unidas no processo final do script. Se o seu vídeo possuir apenas uma vinheta e não duas como os meus, você ainda sim poderá corta-lo em duas partes descartando uma parte menor do vídeo.

O script

Com os vídeos devidamente marcados para fazer o corte, utilizamos o seguinte script em python.

#!/usr/bin/python
import os

def runcmd(cmd):
  os.popen(cmd)
  #print cmd

def main():
  cmd = """
  ffmpeg -y -i "%s" %s "%s"
  """

  f = open('cut.txt','r')
  lns = f.readlines()
  f.close()

  for l in lns:
    cols=l.replace('\n','').split(';')
    file = cols[0]
    cut1 = cols[1]
    cut2 = cols[2]

    #cut_file = "file '%s'" % 

    cmd_new = cmd % ( file, cut1, file.replace('.mp4','_part1.mp4'))
    runcmd(cmd_new)
    cmd_new = cmd % ( file, cut2, file.replace('.mp4','_part2.mp4'))
    runcmd(cmd_new)

    cutlist = """\
file './%s'
file './%s'
""" % (file.replace('.mp4','_part1.mp4'), file.replace('.mp4','_part2.mp4'))

    f = open('mylist.txt','w')
    f.write(cutlist)
    f.close()

    cmd_new = """ffmpeg -y -f concat -i "%s" -c copy "%s" """ % ('mylist.txt', file.replace('.mp4','_cut.mp4'))

    runcmd(cmd_new)

if __name__ == "__main__":
  main()

Coloque o script junto com o arquivo cuts.txt no mesmo diretório onde estão os vídeos e rode o script na linha de comando.

python cut.py

Voilá! No final da execução do script você terá 3 novos arquivos para cada linha do arquivo cuts.txt. O arquivo final com as vinhetas cortadas é o arquivo final _cut e você poderá apagar os arquivos _part1 e _part2 que foram utilizados para criar o arquivo final.

sábado, 12 de julho de 2014

Tela do CentOS com resolução alta no console do Hyper-V

Eu utilizo o Hyper-V para rodar algumas máquinas virtuais tanto no trabalho quanto em casa. Em casa eu utilizo para fazer laboratórios e como o PC aqui roda Windows 8 que já vem com o Hyper-V para habilitar eu acho mais fácil e mais prático para executar os meus labs.

O problema é que quando eu inicio a máquina virtual Linux CentOS 6.5 por exemplo a tela fica maior do que a tela do meu desktop causando um certo desconforto para fazer operações simples no terminal da máquina virtual.

Para resolver esse problema você pode abaixar a resolução do módulo framebuffer do hyper-v instalado no sistema operacional

grubby --update-kernel=ALL --args="video=hyperv_fb:640x480"  

Reinicie a máquina virtual e você verá que a tela fica num tamanho menor. Para operações onde eu preciso de mais espaço de tela eu acesso a máquina Linux remotamente por ssh ou VNC.

rcpbind não inicia no CentOS 6.x

Este probleminha idiota me levou algumas horas para descobrir o que estava acontecendo. Após várias pesquisas na internet não consgui achar uma solução para o problema, então resolvi depurar o script de inicialização do rpcbind no CentOS 6.x e veja o que eu descobri.

O problema

Ao tentar montar um diretório do meu servidor NFS o meu servidor ficava travado no boot, eu precisava entrar com CTRL+C para passar para o prompt de login.

Percebi que o serviço rpcbind não estava iniciado

#ps auxww | grep rpcbind
root      2794  0.0  0.0 103244   860 pts/1    R+   22:38   0:00 grep rpcbind

Ao tentar reiniciar o serviço rpcbind recebi uma mensagem de falha na reinicialização do serviço.

service rpcbind restart
Stopping rpcbind:                                          [FAILED]

Percebi que ao tentar enviar o comando de start para o serviço nenhuma mensagem era apresentada.

service rpcbind start

Com o rpcbind fora do ar eu não conseguia montar o diretório do meu servidor NFS.

A solução

Verificando o script de inicialização percebi que o script estava saindo com erro 6 ao checar se a variável NETWORKING=yes que é configurada no arquivo /etc/sysconfig/network.

service rpcbind start
echo $?
6

Podemos verificar essa condição no script de inicialização rpcbind.

cat /etc/init.d/rpcbind
...
start() {
 # Check that networking is up.
 [ "$NETWORKING" = "yes" ] || exit 6
...

Agora verificando o meu arquivo de configuração network.

cat /etc/sysconfig/network
HOSTNAME=LNX01
GATEWAY=x.x.x.x

tcham tcham tcham! Ai está o problema, o meu arquivo network não continha essa linha de configuração então o script sai com erro 6 sem iniciar o serviço.

Colocando a linha de configuração no arquivo /etc/sysconfig/network o meu arquivo ficou assim.

cat /etc/sysconfig/network
HOSTNAME=LNX01
GATEWAY=x.x.x.x
NETWORKING=yes

Agora quando tento iniciar o serviço rpcbind whala! Tudo funcionando...

service rpcbind start
Starting rpcbind:                                          [  OK  ]

E agora eu consigo montar o diretório no meu servidor NFS sem problemas. Se você encontrou esse erro, espero que esse post te sirva de consolo! Abs.

Extraindo legendas embutidas de vídeos utilizando FFmpeg

Este post mostra como extrair legendas embutidas em vídeos para o formato SRT utilizando o FFmpeg.

Verificando os Encoders

Precisamos de um encoder para extrair a legenda do vídeo. Utilizamos o comando ffmpeg -codecs para verificar os encoders de legenda disponíveis.

ffmpeg -codecs | grep -e '^...S...'
...
 ..S... = Subtitle codec
 DES... ass                  ASS (Advanced SSA) subtitle
 DES... dvb_subtitle         DVB subtitles (decoders: dvbsub ) (encoders: dvbsub )
 ..S... dvb_teletext         DVB teletext
 DES... dvd_subtitle         DVD subtitles (decoders: dvdsub ) (encoders: dvdsub )
 ..S... eia_608              EIA-608 closed captions
 D.S... hdmv_pgs_subtitle    HDMV Presentation Graphic Stream subtitles (decoders: pgssub )
 D.S... jacosub              JACOsub subtitle
 D.S... microdvd             MicroDVD subtitle
 DES... mov_text             MOV text
 D.S... mpl2                 MPL2 subtitle
 D.S... pjs                  PJS (Phoenix Japanimation Society) subtitle
 D.S... realtext             RealText subtitle
 D.S... sami                 SAMI subtitle
 DES... srt                  SubRip subtitle with embedded timing
 DES... ssa                  SSA (SubStation Alpha) subtitle
 DES... subrip               SubRip subtitle
 D.S... subviewer            SubViewer subtitle
 D.S... subviewer1           SubViewer v1 subtitle
 D.S... text                 raw UTF-8 text
 D.S... vplayer              VPlayer subtitle
 D.S... webvtt               WebVTT subtitle
 DES... xsub                 XSUB

O resultado acima mostra que o ffmpeg tem o filtro SRT com encoder e o decoder.

Analisando o vídeo

Antes de extrairmos a legenda embutida no vídeo precisamos analisas os streams do vídeo com o comando ffmpeg.

ffmpeg -i video.mkv
...
Input #0, matroska,webm, from 'video.mkv':
  Metadata:
    encoder         : libebml v1.0.0 + libmatroska v1.0.0
    creation_time   : 2012-04-05 12:36:01
  Duration: 00:23:09.60, start: 0.000000, bitrate: 1906 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 23.81 fps, 23.81 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp (default)
    Stream #0:2: Subtitle: ssa (default)
...

No resultado acima temos 1 stream de vídeo, 1 stream de audio e 1 stream de legenda (subtitle). Anotamos então os identificados do stream na forma 0.0, 0.1 e 0.2

Extraindo a legenda

ffmpeg -i video.mkv -vn -an -codec:s:0.2 srt video.srt

Onde

  • -i video.mkv: seleciona o vídeo
  • -vn: desabilita o stream de vídeo
  • -an: desabilita o stream de audio
  • -codec:s:0.2 srt: seleciona o stream de legenda (subtitle) com o filtro srt
  • video.srt: é o arquivo de legenda que será gerado

Pronto, você deve ter agora um arquivo video.srt contendo a legenda do seu vídeo

Compilando libass com FFmpeg no CentOS 6.x

Neste post iremos ver como compilar a biblioteca para renderização de legendas libass ( ASS/SSA Advanced Substation Alpha/Substation Alpha ) para ser utilizada com o FFmpeg. Para este post eu utilizei a distribuição CentOS 6.x

Este post é uma continuação do post Compilando o FFmpeg no CentOS 6.x. O esquema de diretórios e compilação são os mesmos, se tiver dúvidas ao seguir esse guia certifique-se de ler o post anterior

Dependencias


Para compilar o libass precisaremos instalar os pacotes necessários, vejamos:

autoconf 2.64 ou superior

O pacote autoconf 2.64 ou superior é necessário para a compilação do fribidi logo abaixo.
cd ~/ffmpeg_sources
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.xz
cd autoconf-2.68
./configure
make
# make install

fribidi

O GNU FriBidi é uma implamentação do Unicode Bidirectional Algorithm (bidi) necessário para a compilação do libass
cd ˜/ffmpeg_sources
git clone git://anongit.freedesktop.org/fribidi/fribidi
cd fribidi
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

fontconfig

O pacote fontconfig é necessário para a compilação da biblioteca libass.
# yum install fontconfig fontconfig-devel

libass

cd ~/ffmpeg_sources
git clone https://github.com/libass/libass.git
cd libass
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install

FFmpeg

Agora que temos o libass com todas as dependencias resolvidas, iremos habilitar o libass no FFmpeg
cd ~/ffmpeg_sources
cd ffmpeg
./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 --enable-libass
make
make install

Utilizando o FFmpeg

Como a compilação do ffmpeg é local e privada quando chamar-mos o ffmpeg não será possível localizar a biblioteca libass nos caminhos do sistema. Para utilizar o ffmpeg com libass ativado precisaremos apontar a variável de ambiente LD_LIBRARY_PATH para o diretório onde o libass foi compilado. Adicione as seguintes linhas ao seu arquivo .bashrc
LD_LIBRARY_PATH=$HOME/ffmpeg_build/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
Assim o seu shell saberá onde as bibliotecas libass foi instalada.
Ao chamar o ffmpeg na sua linha de comando deverá aparecer a opção --enable-libass no resultado do comando
ffmpeg version git-2014-07-12-66558fe Copyright (c) 2000-2014 the FFmpeg developers
  built on Jul 12 2014 19:30:58 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
  configuration: --prefix=/home/rafael.baena/ffmpeg_build --extra-cflags=-I/home/rafael.baena/ffmpeg_build/include --extra-ldflags=-L/home/rafael.baena/ffmpeg_build/lib --bindir=/home/rafael.baena/bin --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libass

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