Veja o show de slides em vídeo a partir de imagens - FFmpeg
Se o seu vídeo não mostrar os quadros corretamente Se você encontrar problemas, como a primeira imagem é ignorada ou apenas é exibida para um quadro, use o filtro de vídeo fps em vez de -r para a taxa de quadros de saída
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
Como alternativa, o filtro de vídeo em formato pode ser adicionado à cadeia de filtros para substituir -pix_fmt yuv420p como "fps = 25, format = yuv420p" . A vantagem desse método é que você pode controlar qual filtro entra primeiro
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
Eu testei abaixo dos parâmetros, funcionou para mim
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4
os parâmetros abaixo também funcionaram, mas sempre ignoram a primeira imagem
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4
fazendo um vídeo a partir de imagens colocadas em pastas diferentes
Primeiro, adicione caminhos de imagem ao imagepaths.txt como abaixo.
# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate
file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'
Amostra de uso da seguinte forma;
"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"
-safe 0 parâmetro evita o nome do arquivo não seguro erro de
Links Relacionados
FFmpeg fazendo um vídeo a partir de imagens colocadas em pastas diferentes
FFMPEG Um guia intermediário / sequência de imagens
Concatenar - FFmpeg
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
,, parecia funcionar, mas no final resultou em um vídeo que era ilegível para qualquer jogador (no Ubuntu). VNC disse: "átomo moov não encontrado". Tentando remediar isso comqt-faststart
o erro "último átomo no arquivo não era um átomo de moov"-pattern_type glob
Essa ótima opção facilita a seleção das imagens em muitos casos.
Vídeo de apresentação de slides com uma imagem por segundo
Adicione um pouco de música, corte quando o áudio presumivelmente mais longo quando as imagens terminarem:
Aqui estão duas demos no YouTube:
Seja um hippie e use o formato de vídeo livre de patente Theora :
Suas imagens devem, obviamente, ser classificadas em ordem alfabética, geralmente como:
e assim por diante.
Eu também garantiria primeiro que todas as imagens a serem usadas tenham a mesma proporção, possivelmente cortando-as com
imagemagick
ou nomacs de antemão, para que o ffmpeg não precise tomar decisões difíceis. Em particular, a largura deve ser divisível por 2; caso contrário, a conversão falha com: "largura não divisível por 2".Vídeo em velocidade normal com uma imagem por quadro a 30 FPS
Aqui está o que parece:
GIF gerado com: /ubuntu/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Adicione um pouco de áudio a ele:
Resultado: https://www.youtube.com/watch?v=HG7c7lldhM4
Estes são os meios de teste que eu usei:
Imagens geradas com: Como usar o GLUT / OpenGL para renderizar em um arquivo?
É legal observar o quanto o vídeo compacta a sequência de imagens muito melhor do que o ZIP, pois é capaz de comprimir quadros através de algoritmos especializados:
opengl-rotating-triangle.mp4
: 340Kopengl-rotating-triangle.zip
: 7.3MConverta um arquivo de música em um vídeo com uma imagem fixa para upload do YouTube
Respondida em: /superuser/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572
Configuração de estudo de caso de apresentação de slides totalmente realista passo a passo
Há um pouco mais para criar apresentações de slides do que executar um único comando ffmpeg, então aqui vai um exemplo detalhado mais interessante, inspirado nessa linha do tempo .
Obtenha a mídia de entrada:
Agora, examinamos rapidamente todos os tamanhos de imagem para decidir sobre a proporção final:
quais saídas:
portanto, a proporção clássica de 480p (640x480 == 4/3) parece apropriada.
Faça uma conversão com redimensionamento mínimo para uniformizar as larguras (o TODO é automatizado para qualquer largura, aqui eu apenas observei manualmente a
identify
saída e reduzi a largura e a altura em um):Isso produz resultados terríveis, porque, como visto em:
O ffmpeg apenas pega o tamanho da primeira imagem, 556x494, e depois converte todas as outras para esse tamanho exato, quebrando a proporção.
Agora vamos converter as imagens para a proporção 480p de destino automaticamente cortando conforme o ImageMagick: como cortar minimamente uma imagem em uma determinada proporção?
Então, agora, a proporção é boa, mas inevitavelmente é preciso fazer alguns cortes, o que meio que corta partes interessantes das imagens.
A outra opção é preencher com fundo preto para ter a mesma proporção mostrada em: Redimensionar para caber em uma caixa e definir fundo para preto na parte "vazia"
De um modo geral, idealmente, você poderá selecionar imagens com proporções iguais ou semelhantes para evitar esses problemas em primeiro lugar.
Sobre as opções da CLI
Observe no entanto que, apesar do nome,
-glob
isso não é tão geral quanto os padrões do shell Glob, por exemplo:-i '*'
falha: https://trac.ffmpeg.org/ticket/3620 (aparentemente porque o tipo de arquivo é deduzido da extensão).-r 30
faz o-framerate 1
vídeo 30 FPS para superar bugs em players como o VLC para baixas taxas de quadros: o VLC congela para um vídeo baixo de 1 FPS criado a partir de imagens com ffmpeg Portanto, repete cada quadro 30 vezes para manter o efeito de 1 imagem por segundo desejado.Próximos passos
Você também vai querer:
corte a parte do áudio que você deseja antes de ingressar nele: Cortando os vídeos com base nas horas de início e término usando ffmpeg
TODO: aprenda a cortar e concatenar vários arquivos de áudio no vídeo sem arquivos intermediários, tenho certeza de que é possível:
Testado em
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Bibliografia
fonte
'
nos nomes dos arquivos de entrada e saída. Caso contrário, ele não encontrará os arquivos.ffmpeg-static
não implementa glob. (Pattern type 'glob' was selected but globbing is not supported by this libavformat build
)-pix_fmt
Trailing options were found on the commandline.
erro causadoffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
no Ubuntun 19.10 ffmpeg 4.1.4 agora, qual é a sua versão e o comando exato?Versão simples do Documentos
Funciona especialmente bem para imagens do Google Earth Studio :
fonte
%3d
ou%03d
?cat *.png | ffmpeg -f image2pipe -i - output.mp4
do wiki
fonte