-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 🙂
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:
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” )
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 🙂
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.
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.
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 ).
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 )
————————————————————————————————————
Usuá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 ————————————————————————————————————
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.
Usuá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 )
Usuá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:
Basta 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 )
Entre 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
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
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.
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.
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…
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:
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.
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 snapshot–03%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
• 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.