O que eu estou fazendo:
Ainda estou trabalhando no meu script de apresentação de slides. Ou seja, eu uso demuxer de concat do ffmpeg (files.txt) para fornecer ffmpeg com um monte de .jpg
arquivos para uma apresentação de slides.
No passado eu queria que todas as imagens fossem mostradas por 3 segundos cada, então usei (usei mal?) A flag de framerate do ffmpeg -r 1/3
para alcançar a dita duração, que funcionou perfeitamente e muito rápido (aproximadamente 10 segundos para todas as 600 imagens).
O que eu quero fazer agora:
Agora, eu queria que o slideshow fosse mais dinâmico, variando a duração (mais longo para os mais interessantes e assim por diante, você sabe). Então, decidi abandonar o flag framerate e definir o duration 3
direito no arquivo concat. Claro, para cada arquivo com o número correto de segundos. O que funciona - mais ou menos.
Meu único problema é: agora leva muito tempo para o ffmpeg executar esse script. Não só por um pouco, mas demora cerca de 30 vezes mais tempo. Mesmo que eu já use -c:v libx264 -preset ultrafast
.
Então, não é mais prático de usar. Eu sinto falta de algo ou existe um terceiro método?
Editar:
Ffmpeg só notei cai este aviso: More than 1000 frames duplicated
. O que não pode ser o caso, quando uma imagem estática é mostrada por no máximo 5 segundos a 25 fps (valor padrão).
Atenciosamente!
fonte
Respostas:
Quando você usa a
duration
diretiva em um arquivo demuxer de concat, o que você está configurando é o deslocamento de registro de data e hora aplicado ao próximo arquivo, relativo ao registro de data e hora inicial calculado para o arquivo atual. Para que isso funcione, a entrada-r
não pode ser usada. O que, por sua vez, significa que cada imagem recebe a taxa de quadros padrão de 25 fps. Neste momento, isso não pode ser alterado. No entanto, você pode reduzir a taxa de quadros. Como você não tem segundos fracionários, pode reduzir para 1 fps.Eu omiti todas as opções de codificação. Use o ffmpeg 4.0 ou posterior.
fonte