Crie uma imagem a cada XX segundos do vídeo

Crie uma imagem a cada XX segundos do vídeo

Captura de tela:FilmStrip

tenteiffmpeg -i video.mkv -vf fps=1 out%d.png

Mas está gerando imagens uma por uma. Preciso de todas as miniaturas em uma imagem. como na imagem acima.

Responder1

insira a descrição da imagem aqui

ffmpeg -i input -filter_complex \
"select='not(mod(n,30))',scale=120:-1,tile=layout=3x2" \
-vframes 1 -q:v 2 output.jpg
  • selecioneum quadro a cada 30 segundos
  • escalacada quadro para um tamanho menor (como alternativa, você pode dimensionar após o bloco)
  • telhacada quadro em uma imagem. O tamanho da grade padrão é 6x5, então pode ser necessário ajustá-lo layoutdependendo de quantas imagens deseja exibir.

O processo pode levar algum tempo dependendo da duração e formato da entrada.

Responder2

você pode usar algo como

ffmpeg -i video.mkv -filter:v "select=not(mod(n\,10)),setpts=N/((25)*TB)" -qscale:v 2 frame%03d.jpg
  • os selectcontroles de quais quadros você está capturando (neste caso, um em cada 10)
  • controla setpsa taxa de quadros e depende da sua fonte - 25para vídeo PAL ou 30000/1001NTSC
  • qscalecontrola a qualidade (escala de quantização) dos quadros de saída de 2 (melhor) a 31 (pior)

acabei de notar sua edição acima, se isso fornecer os quadros que você deseja usar, deve servir como ponto de partida

você precisará juntar as imagens em um único ativo usando uma ferramenta comoImagemMagick

montage -background "transparent" -depth 8 -type TrueColorMatte frame??.jpg \
    -geometry 50x50 -tile 10x10 -matte -transparent "transparent" \
    -type TrueColorMatte -depth 8 allframes.jpg

informação relacionada