Arquivo da categoria: FFmpeg

Timelapse: Acelerando seus vídeos usando o FFmpeg

FFmpeg: http://www.ffmpeg.org/

Para quem tem um vídeo de 9 horas de duração e gostaria de fazer um vídeo acelerado resumindo o video original, segue a solução usando ffmpeg:

ffmpeg -i video-grande.mp4 -vf setpts=0.05*PTS -an video-rapido.mp4

Agora, entenda a linha:

-vf é a opção para habilitar o “Video Filter”. Para o parametro setpts você deve passar a taxa de aceleração. Para fazer o “timelapse”, o ffmpeg irá descartar uma série de frames, e com isso é possível gerar um vídeo “acelerado”.

No exemplo que usei acima, um video de 20 minutos é acelerado para um de apenas 1 minuto. Portanto o calculo: 1/20=0.05

Para acelerar um vídeo de 9 horas para 3 minutos você teria que calcular da seguinte forma:
3/(9*60)=0.00555, então o parametro ficaria: “-vf setpts=0.00555*PTS”

Editado em 04/dez/2013:
Tive que adicionar o parametro “-an” para remover o audio do arquivo, pois depois do timelapse o video fica curtinho, mas o audio fica normal. Então você tem um video timelapse de 1 minuto e um audio de 40 minutos, então o parametro -an remove o audio do video final 🙂

Espero ter ajudado com essa pequena dica 🙂

Share

FFmpeg: Convertendo um video em um gif animado

FFmpeg: http://www.ffmpeg.org/

Há alguns dias atrás, me perguntaram se tinha como converter trechos de vídeos para um arquivo .gif, para ser usado em lugares que só aceitam imagens, como foruns, msn e etc…

Abaixo segue um exemplo simples que faz isso, usando FFmpeg:

ffmpeg -i teste.avi -pix_fmt rgb24 -f gif teste.gif

Detalhes:

  • -i = especifica o arquivo de entrada (teste.avi)
  • -pix_fmt = especifica o formato dos pixels (rgb24, formato suportado pelo gif  )
  • -f = força a saida para .gif
  • teste.gif é o arquivo de saída do comando

Se você precisa de uma solução mais específica, abaixo segue alguns outros comandos e as explicações dos parâmetros:

GIF com tamanho final específico e com loop:

ffmpeg -i teste.avi -pix_fmt rgb24 -r 10.0 -loop_output 0 -f gif -s 120x120 teste.gif

Detalhes:

  • -r = especifica o frame rate do gif
  • -loop_output = especifica quantas vezes o gif vai entrar em loop (zero para infinito)
  • -s = especifica o tamanho do gif em pixels

GIF com inicio definido pelo tempo e final limitado por frames:

ffmpeg -i widescreen.avi -pix_fmt rgb24 -r 10.0 -loop_output 0 -vframes 100 -ss 00:00:02 -f gif teste.gif

Detalhes:

  • -ss = especifica a posição inicial do video para gravação (formato: hh:mm:ss)
  • -vframes = limita a quantidade de frames que serão gravados a partir do video original
  • No exemplo, o gif será formado apenas pelos 100 primeiros frames depois da posição 2 segundos

GIF com inicio definido pelo tempo e final limitado pelo tempo:

ffmpeg -i widescreen.avi -pix_fmt rgb24 -r 10.0 -loop_output 0 -ss 00:00:02 -t 00:00:04 -f gif teste.gif

Detalhes:

  • -ss = especifica a posição inicial do video para gravação (formato: hh:mm:ss)
  • -t = especifica a posição final de gravação do video (formato: hh:mm:ss)
  • No exemplo, o gif será criado a partir do segundo 2 até o segundo 4 do vídeo.

Você também pode experimente a combinação dos parâmetros, até encontrar o comando que lhe sirva melhor… 😉

Share

FFmpeg: Batch para conversão de vídeos para iPhone [Windows]

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

Já tem um tempo que estou tentando decidir o que fazer com um computador velho lá de casa. Resolvi instalar Windows nele, e fazer algumas experiências (:D)… de todo tipo, inclusive instalar servidor de games, VNC, Torrent, e tudo mais… Configurei meu roteador para deixar esse PC completamente exposto, assim posso brincar também com algumas regras de firewall e fazer o que quiser…

Como esse meu “PC cobaia” está ligado 24h lá em casa, resolvi não desperdiçar seu “poder de processamento” e fiz um script em Batch (.bat do windows) para converter vários filmes/vídeos que estou querendo colocar no meu iPhone.

Segue o “programa” de enconding para H264:

cd C:\Documents and Settings\Rafael\Desktop\ffmpeg-r16537-gpl-static-win32
for %%i in (“H:\videos\*.rmvb”) do
(
ffmpeg -i “%%i” -vcodec libx264 -acodec libfaac -deinterlace -sameq “C:\videos-iphone\%%~ni.mov”

)

Salve todo o código acima num arquivo .bat (Pelo bloco de notas mesmo !)
Você pode baixar o FFmpeg acessando:  https://rafaelbiriba.com/ffmpeg-r16537-gpl-static-win32.zip
Leia também: https://rafaelbiriba.com/2009/02/13/windows-xp-vs-ffmpeg-e-mplayer.html

Bom, continuando…
O Script pega meus videos com extensão .rmvb de dentro da pasta H:\videos e salva os novos arquivos na pasta videos-iphone que fica na unidade C:\.
Note que o comando %%~ni faz com que o arquivo seja salvo com o mesmo nome do original, só que com a extensão .mov.

O profile de encoding para iphone (linha de comando do ffmpeg) que estou utilizando, deixa o video final com a qualidade quase que igual ao vídeo original, o que deixa a codificação bem lenta. Esse script  que tem sido bastante útil pois tenho muitos arquivos de vídeo (muitos mesmo) e quero codifica-los um depois do outro automaticamente (enquanto a máquina não morrer de stress 🙂 ).

Espero que essa informação seja útil para mais alguém… Provavelmente enquanto estou escrevendo este post, o script está rodando lá em casa 🙂

Abraços a todos 😉

Share

FFmpeg: converta vídeos para iPhone

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

 

Eu utilizo essa linha de comando quase sempre, para converter algum filme e colocar no meu iPhone… Também serve para iPod Touch 🙂

Na hora que eu preciso dela, eu nunca a encontro. Então resolvi publicar aqui, para servir como consulta:

ffmpeg -i video.mpg -vcodec libx264 -acodec libfaac -deinterlace -sameq video_saida.mov

Alguns outros parâmetros úteis para uma conversão mais específica:
* bitrate do vídeo  (-b 300 = Exemplo),
* bitrate do áudio (-ab 32 = Exemplo),
* dimensão do vídeo (-s 200×300 = Exemplo).

OBS: Comando testado e executado no Linux. Para rodar o comando em windows, veja aqui.

[…] Espero ter ajudado. […]

Share

FFmpeg: Conversão de mp4 para wmv

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

Mês passado, tive que fazer uma conversão deste tipo. Eu possuia um vídeo em mp4 e precisava converter para wmv, para que o mesmo fosse executado no windows utilizando o codec nativo, sem utilizar nenhum codec adicional para isso.

O Arquivo .MP4:
Stream #0.0(und): Video: h264, yuv420p, 480×360 [PAR 0:1 DAR 0:1], 29.97 tb(r)
Stream #0.1(und): Audio: mpeg4aac, 44100 Hz, stereo

Ao final de alguns testes, consegui converter para o seguinte arquivo .wmv:
Stream #0.0: Video: wmv1, yuv420p, 480×360 [PAR 0:1 DAR 0:1], 29.92 tb(r)
Stream #0.1: Audio: wmav2, 44100 Hz, stereo, 64 kb/s

Abaixo segue a linha de comando:
ffmpeg -i video_entrada.mp4 -vcodec wmv1 -acodec wmav2 -deinterlace -sameq video_saida.wmv

Utilizei o codec de vídeo WMV1 e o codec de áudio WMVA2, seguidos pelo deinterlace ( desentrelaçamento do vídeo ) e o sameq ( mesma qualidade de vídeo do original ).

——————————————————-
Instalação do FFmpeg:
FFmpeg: Solução ideal para Áudio e Vídeo

——————————————————

Procedimento de Uso:

ubuntu

Usuários Linux tem sempre mais facilidade, nesse tipo de procedimento.

Basta abrir o Terminal e digitar:

ffmpeg -i video_entrada.mp4 -vcodec wmv1 -acodec wmav2 -deinterlace -sameq video_saida.wmv

Onde meu arquivo se chama video_entrada.mp4 e se encontra na área de trabalho.
( Levando em consideração que ao abrir o terminal você vai estar dentro da pasta home do usuário local )

————————————————————————————————————

logo_windowsUsuários Windows levam mais tempo para poder executar o comando.
Entre em INICIAR > EXECUTAR e digite cmd > OK ( Para abrir o Terminal do Windows )
Acesse a pasta digitando:
cd Desktop/pasta_do_ffmpeg/
em seguida:
ffmpeg.exe -i “../video_entrada.mp4” -vcodec wmv1 -acodec wmav2 -deinterlace -sameq “../video_saida.wmv”

Onde meu arquivo se chama video_entrada.mp4 e se encontra na área de trabalho.
( Utilizamos ../ para sair da pasta do ffmpeg e acessar o filme.avi a partir da área de trabalho. )

————————————————————————————————————
Leitura recomendada:
Windows VS FFmpeg e Mplayer
————————————————————————————————————

Share

FFmpeg / Mplayer: Reproduzindo Vídeos

Alguns dias atrás eu apresentei o FFmpeg e também como extrair imagens de um vídeo, mas somente agora me alertaram, que não demonstrei como reproduzir vídeos utilizando a ferramenta. Então vou exemplificar a reprodução utilizando tanto o FFmpeg como o Mplayer.

Para quem é usuário Linux, já deve conhecer o Mplayer (  Mplayer Movie Player ) um dos melhores reprodutores para linux, muito usado em sua versão com interface gráfica.
Para quem é usuário Windows, deve conhecer um Pacote de codec chamado K-Lite Mega Codec Pack, onde vem o Media Player Classic, famoso por reproduzir todos os tipos de vídeo. O pacote FFmpeg funciona também de maneira bem similar, só que com opções mais avançadas como a conversão de vídeos, por exemplo, utilizando codecs variados.

Utilizando o FFmpeg:

Para assistir seus vídeos com o FFmpeg, utilizamos o componente FFplay.

ubuntuUsuários Linux tem sempre mais facilidade, nesse tipo de procedimento.

Basta abrir o Terminal e digitar:
ffplay “Desktop/filme.avi”

Onde meu arquivo se chama filme.avi e se encontra na área de trabalho.
( Levando em consideração que ao abrir o terminal você vai estar dentro da pasta home do usuário local )

logo_windowsUsuários Windows levam mais tempo para poder executar o comando.
Entre em INICIAR > EXECUTAR e digite cmd > OK ( Para abrir o Terminal do Windows )
Acesse a pasta digitando:
cd Desktop/pasta_do_ffmpeg/
em seguida:
ffplay.exe “../filme.avi”

Onde meu arquivo se chama filme.avi e se encontra na área de trabalho.
( Utilizamos ../ para sair da pasta do ffmpeg e acessar o filme.avi a partir da área de trabalho. )
Para maiores informações visite o POST: Windows XP vs FFmpeg e Mplayer

Utilizando o Mplayer:

ubuntuBasta abrir o Terminal e digitar:
mplayer “Desktop/filme.avi”

Onde meu arquivo se chama filme.avi e se encontra na área de trabalho.
( Levando em consideração que ao abrir o terminal você vai estar dentro da pasta home do usuário local )

logo_windowsEntre em INICIAR > EXECUTAR e digite cmd > OK ( Para abrir o Terminal do Windows )
Acesse a pasta digitando:
cd Desktop/pasta_do_mplayer/
em seguida:
mplayer.exe “../filme.avi”
Onde meu arquivo se chama filme.avi e se encontra na área de trabalho.

( Utilizamos ../ para sair da pasta do mplayer e acessar o filme.avi a partir da área de trabalho. )
Para maiores informações visite o POST: Windows XP vs FFmpeg e Mplayer

Share

Windows XP vs FFmpeg e Mplayer

logo_windows

Vamos lá… Mais uma vez ajudando nossos amigos usuários Windows !
Para aqueles que não leram a máteria sobre  Windows XP vs Linux Ubuntu podem acessar clicando aqui.

Mas ainda há aqueles que preferem o windows, não sei porque se tudo nele é mais complicado, mas vamos lá !

Existe uma certa dificuldade de usar o FFmpeg em ambiente Windows. No linux, basta digitar na linha de comando ffmpeg “mais os parametros” ou até mplayer “mais os parametros“, infelizmente Windows é tão bom, que vai nos  dar um pouco mais de trabalho ! O motivo disso ? Simples… Porque o FFmpeg e o Mplayer ( derivado do ffmpeg ) forão desenvolvidos dentro do Linux. Como o código é aberto, é possível achar algumas versões compiladas para Windows.

Vamos agora por a mão na massa !

Para quem não leu a matéria FFmpeg: Solução ideal para Áudio e Vídeo, o FFmpeg pode ser obtido pelo link: https://rafaelbiriba.com/ffmpeg-r16537-gpl-static-win32.zip

Para ficar mais acessível, extraia o arquivo .zip na área de trabalho, depois abra o bloco de notas ( Iniciar > Executar > Digite cmd > OK )

Com o terminal aberto, devemos agora entrar no diretório do ffmpeg.

Acesse a pasta digitando:
cd Desktop/pasta_do_ffmpeg/

Agora com o diretório do FFmpeg aberto pasta digitar:
ffmpeg.exe mais os parametros desejados

Com o Mplayer será bem parecido, basta extrair na área de trabalho ( mais acessível ), entrar na pasta do Mplayer no terminal e digitar mplayer.exe mais os paramentros.

Só gostaria de ressaltar, e reafirmar a facilidade desta operação quando realizada em Linux. Já vou adiantando que nem todos os Codecs tanto de vídeo como áudio, não estão disponíveis para a maioria das compilações Windows. Hoje mesmo, tive um super-problema para rodar o codec de vídeo libdv no Mplayer numa máquina Windows, e a unica solução que eu consegui achar foi: não usar o codec libdv. Logicamente arrumei uma outra saida com outro codec utilizando ffmpeg e o codec dvvideo. Porém existe muitos outros que não estão disponíveis.

Meu conselho: Eu já dei.. use Linux… Para quem se recusa de qualquer forma, também já disse que é possível utilizar rodando de um CD, também é possível instala-lo num pendrive e até mesmo rodar junto com o Windows ( Dual Boot ). Opções é que não faltam… Agora cabe a você avaliar qual vai ser mais útil para você trabalhar e usar…

Share

FFmpeg: Extraindo imagens de um vídeo ( Snapshot ) – Parte II

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

Recebi uma dúvida bem plausível, sobre extrair imagens de um vídeo. Com os comandos fornecidos em meu ultimo POST, é possível atrasar a captura da imagem, para começar a extrair a partir de 10 segundos por exemplo, depois do vídeo ter iniciado, como mostra o comando a seguir:
ffmpeg -itsoffset -10 -i foo.avi -r 1 -s 800×600 -f image2 snapshot-%03d.jpeg

A dúvida seria exatamente essa:
“Se possuirmos um vídeo de 2 horas de duração, e precisarmos extrair somente uma imagem da posição 1 hora, 30 minutos e 20 segundos, como seria feito ?”

Simples:

Para isso utilizaremos o parametro -vframes, comando utilizado para limitar o numero de frames que vai ser capturado. No nosso caso será 1 frame. O outro comando, bastante similar ao -itsoffset, seria o -ss, serve para atribuir uma posição de inicio para capturarmos o nosso frame. Essa posição deve ser indicada como hh:mm:ss. Sendo hora : minutos : segundos da posição desejada. Abaixo segue a solução para nosso problema:

ffmpeg -vframes 1 -ss 01:30:20 -i foo.avi -r 1 -s 800×600 -f image2 snapshot-%03d.jpeg

Para certificarmos que iremos extrair exatamente o frame que desejamos o valor do vframes pode ser alterado para capturar alguns frames seguintes, por segurança.

Veja o restante do tópico: Extraindo imagens de um vídeo – parte I, pelo link:
https://rafaelbiriba.com/?p=53

Share

FFmpeg: Extraindo imagens de um vídeo ( Snapshot )

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

Utilizando o seguinte comando:

ffmpeg -i foo.avi -r 1 -s 800×600 -f image2 snapshot%03d.jpeg

Onde:

foo.avi > Vídeo de entrada, podendo ser .avi, .mpeg, .mov, ou qualquer outra extensão suportada pelo FFmpeg.
-r 1 > frame rate ( 1 frame por segundo )
– s 800×600 > Dimensão desejada da imagem final. Caso o valor seja maior que o vídeo de entrada, será acrescentado bordas pretas na imagem.
-f image2 > Força o formato de imagem de saída para imagem. Deve ser seguido pelo nome do arquivo desejado.jpeg
snapshot03%d.jpeg > Snapshot- é o nome do arquivo desejado. 03%d é a numeração de 3 digitos iniciando em zero. Sendo assim 04%d para 4 digitos e assim por diante, seguido pela extenção .jpeg , ou .png, .bmp ou até mesmo .tiff


Opções Adicionais:

• Sabendo que as snapshots são extraídas por segundo, então ajustando o parametro -r é possível definir de quantos em quantos frames deve-se extrair uma imagem.

• Acrescentando o parametro: -itsoffset -4 as imagens começam a ser extraídas 4 segundos depois do inicio do vídeo. Exemplo utilizando um delay de 10 segundos:
ffmpeg -itsoffset -10 -i foo.avi -r 1 -s 800×600 -f image2 snapshot-%03d.jpeg

• Parametro -s ( tamanho do frame ):
Ao invés de especificar o tamanho, é possível utilizar uma das abreviações a seguir:
sqcif = 128×96
qcif = 176×144
cif = 352×288
4cif = 704×576
qqvga = 160×120
qvga = 320×240
vga = 640×480
svga = 800×600
xga = 1024×768
uxga = 1600×1200
qxga = 2048×1536
sxga = 1280×1024
qsxga = 2560×2048
hsxga  = 5120×4096
wvga = 852×480
wxga = 1366×768
wsxga = 1600×1024
wuxga = 1920×1200
woxga = 2560×1600
wqsxga = 3200×2048
wquxga = 3840×2400
whsxga = 6400×4096
whuxga = 7680×4800
cga = 320×200
ega = 640×350
hd480 = 852×480
hd720 = 1280×720
hd1080 = 1920×1080

Exemplo:
ffmpeg -i foo.avi -r 1 -s hd1080 -f image2 snapshot-%03d.jpeg

• Parametros para CROP ( corte de imagem )
Para “cropar” um vídeo, o parametro de crop deve estar localizado antes do parametro -s ( tamanho do frame )
-croptop 100 = Define o corte no topo em 100 pixels
-cropbottom 250 = Define o corte no rodapé de 250 pixels
-cropleft 30 = Define o corte da lateral esquerda de 30 pixels
-cropright 25 = Define o corte da lateral direita de 25 pixels
* Valores em pixels ilustrativos, devendo ser usados conforme sua necessidade. Não é necessário utilizar todos os parametros para fazer um crop.
Exemplo:
ffmpeg -i foo.avi -croptop 250 -cropright 25 -r 1 -s hd1080 -f image2 snapshot-%03d.jpeg
Onde é feito o crop do topo e da lateral direita.

Espero ter ajudado a todos… =)

Share

FFmpeg: Formatos de CODECs disponíveis

FFmpeg
FFmpeg: http://www.ffmpeg.org/

No FFmpeg os codecs de áudio e vídeo são selecionados por: “-acodec codec”  e “-vcodec codec” respectivamente.

Através do comando: ffmpeg -formats , é possível listar os formatos de arquivos de entrada e saída, e também os codecs suportados.

Abaixo segue algumas das opçoes comuns:

Nome do codec  de áudio Descrição
mp3lame encode to VBR, ABR or CBR MP3 with LAME
faac FAAC AAC audio encoder
toolame MPEG Audio Layer 2 encoder
twolame MPEG Audio Layer 2 encoder based on tooLAME
pcm uncompressed PCM audio
copy sem compreensão, somente copia os frames
Nome do codec de vídeo Descrição
flv Flash Video
xvid Xvid, MPEG-4 Advanced Simple Profile (ASP) codec
x264 x264, MPEG-4 Advanced Video Coding (AVC), AKA H.264 codec
nuv nuppel video, used by some realtime applications
raw uncompressed video frames
copy não recodifica, somente copia os frames
mov QuickTime Video
dv Digital Video

Também existe uma formam mais simples de selecionar o codec, utilizando no lugar do -vcodec, o parametro: “-target type
Onde no lugar de type, podemos substituir por:
(“vcd”, “svcd”, “dvd”, “dv”, “dv50”, “dv25″,”pal-vcd”, “ntsc-svcd”, … )
Sendo assim, os parametros de bitrate, codecs, buffer sizes serão automaticamente ajustados.

Na próxima publicação, aprenderemos a utilizar a ferramenta, convertendo vídeos, removendo o audio, criando snapshot, etc…

Share