Arquivo da tag: 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

Mplayer: Projeto baseado no FFmpeg

Mplayer: http://www.mplayerhq.hu
Mplayer: http://www.mplayerhq.hu

Mplayer é um player de vídeo código aberto, derivado do ffmpeg,  que roda em vários sistemas operacionais. Suporta diversos codecs como MPEG/VOB, AVI, ASF/WMA/WMV, QT/MOV/MP4 entre outros. Com ele você pode assitir DVDs, SVCD, DivX, WMV e vídeos H.264.

O suporte para placas de vídeos é bem amplo. Funciona com a maioria dos drivers hoje disponíveis. Existem também um suporte a legendas e uma ferramente bastante útil, que veremos depois chamada Mencoder, que funciona de maneira similar ao FFmpeg.

Abaixo segue a lista de formatos de entrada compatíveis:

(S)VCD (Super Video CD)
DVD, incluindo DVD protegido
MPEG-1/2 (ES/PS/PES/VOB)
RIFF AVI file format
ASF/WMV/WMA format
QT/MOV/MP4 format
RealAudio/RealVideo format
Ogg/OGM files
Matroska
NUT
NSV (Nullsoft Streaming Video)
VIVO format
FLI format
NuppelVideo format
yuv4mpeg format
FILM (.cpk) format
RoQ format
PVA format
streaming via HTTP/FTP, RTP/RTSP, MMS/MMST, MPST, SDP
Captura de TV

Codecs de vídeo suportados:

MPEG-1 (VCD) and MPEG-2 (SVCD/DVD/DVB) video
MPEG-4 ASP incluindo todas as variantes do DivX
MPEG-4 AVC H.264
Windows Media Video 7/8 (WMV1/2)
Windows Media Video 9 (WMV3)
RealVideo 1.0, 2.0 (G2)
RealVideo 3.0 (RP8), 4.0 (RP9)
Sorenson v1/v3 (SVQ1/SVQ3), Cinepak, RPZA and other QuickTime codecs
DV video
3ivx
Intel Indeo3 (3.1, 3.2)
Intel Indeo 4.1 and 5.0 (using x86 DLL or XAnim codecs)
VIVO 1.0, 2.0, I263 and other H.263(+) variants (using x86 DLL)
MJPEG, AVID, VCR2, ASV2 and other hardware formats
FLI/FLC
HuffYUV

Codecs de áudio suportados:

MPEG layer 1, 2, and 3 (MP3) audio
AC3/A52 (Dolby Digital)
AAC (MPEG-4 audio)
WMA (DivX Audio) v1, v2
WMA 9 (WMAv3), Voxware audio
RealAudio: COOK, SIPRO, ATRAC3 (using Real libraries)
RealAudio: DNET and older codecs
QuickTime: Qclp, Q-Design QDMC/QDM2, MACE 3/6 (using QT libraries), ALAC
Ogg Vorbis audio
alaw/ulaw, (ms)gsm, pcm, *adpcm e outros formatos simples de audio

Confira a lista atualizada de Codecs suportados pelo Mplayer em:
http://www.mplayerhq.hu/DOCS/codecs-status.html

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

ubuntu

Instalando em Linux ( No exemplo, Ubuntu )

sudo aptitude install mplayer

Depois disso basta utilizar o mplayer com os parametros desejados.

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

logo_windowsInstalando em Windows XP

Página de Download:
http://www.mplayerhq.hu/design7/dload.html

Link direto: MPlayer 1.0rc2 Windows
http://www.mplayerhq.hu/MPlayer/releases/win32/MPlayer-mingw32-1.0rc2.zip

Baixe também os codecs:
http://www.mplayerhq.hu/MPlayer/releases/codecs/windows-essential-20071007.zip

Instalação:
Extraia o Mplayer na área de trabalho ( mais acessível ), em seguida, todo os codecs baixados devem estar extraidos dentro da pasta codecs do Mplayer, que você acabou de extrair.
Certifique-se que todos os codecs estarão corretamente copiados dentro da pasta, ou seja, sem nenhuma subpasta.

Após isso basta utilizar o mplayer com os parametros desejados.
Para mais informações de como passar os paramentros do mplayer, veja o tópico anterior:
Windows XP vs FFmpeg e Mplayer

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

Nosso próximo assunto será como utilizar o mplayer ou ffplay para reproduzir vídeos.

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