Como crio um vídeo em timelapse a partir de uma coleção de fotografias no Linux?

19

Quero criar um timelapse a partir de uma coleção de fotos, no Ubuntu. Eu gostaria de fazer vídeos em HD e, idealmente, adicionar uma trilha sonora.

Joseph_Thala
fonte
Eu não vi isso. Posso excluir esta pergunta e postar minha resposta lá. Tudo bem?
Frederico Schardong
Eu nem tenho certeza se este é o melhor site de stackexchange para isso. Eu só quero compartilhar o que fiz.
Frederico Schardong
Há uma pergunta semelhante no askubuntu.com . As respostas são abordadas principalmente aqui no momento da redação, mas isso pode mudar no futuro, é claro.
Anarcat 30/07/19

Respostas:

11

Ffmpeg fará isso. Se você tiver imagens img001.jpg, img002.jpg, img003.jpg, ..., na linha de comando, faça:

ffmpeg -i img*.jpg output.mpeg

Existem mais opções fornecidas nas ffmpeg --helppáginas de manual ou na web. Isso permite o controle sobre a taxa de quadros e o formato de saída.

Unapiedra
fonte
Usar isso gera um erro para mim, pois considera os últimos .jpgarquivos como o arquivo de saída. Eu entendo File 'DSCF6134.JPG' already exists. Overwrite ? [y/N]- não é tão bom. Minha solução foi gerar uma lista de arquivos \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txte carregá-la ffmpeg -f concat -i files.txt output.mpeg.
Anarcat 30/07/19
Com outras versões do ffmpeg, a seguinte versão funciona sem tentar substituir as imagens:ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
Patrick R.
9

Primeiro, renomeamos todos os arquivos * .JPG com base na data de criação. Às vezes, as câmeras alteram o nome do arquivo ou apenas solicitá-las não é o que queremos. No entanto, renomeá-los pela data de criação sempre funciona:

jhead -n%Y%m%d-%H%M%S *.JPG

Depois disso, colocamos esta lista em um arquivo:

ls -1tr | grep -v files.txt > files.txt

E então use mencoderpara criar um AVIvídeo usando 20 qps. Observe que isso gerará um arquivo de vídeo enorme, geralmente do mesmo tamanho de todas as imagens somadas.

mencoder -nosound -noskip -oac copy -ovc copy -o output.avi -mf fps=20 'mf://@files.txt'

Normalmente, tiro fotos em timelapse com a resolução mais baixa da minha câmera (5 MP), que possui uma taxa de aspec de 4: 3. Para gerar um vídeo 1080p adequado, a imagem é recalculada primeiro para 1920 pixels de largura e depois cortada para 1080 de altura. Dessa forma, não estou alterando o conteúdo das fotos, apenas cortando:

ffmpeg -i output.avi -y -sameq -vf scale=1920:1440,crop=1920:1080 output-final.avi

A razão pela qual eu uso o mencoder para juntar as fotos é porque eu peguei o segmentation faultffmpeg.

Frederico Schardong
fonte
Para o segfault, seria útil conhecer sua versão do ffmpeg.
Unapiedra
Se, como eu, você filmou em 3: 2 (minhas fotos da D750 são 6016x4016) e precisa em 16: 9 (para vídeo em 4K) 3840x2160, você pode usar o FFMPEG para Pillerbox o vídeo e preencher linhas de bonde pretas nas laterais com este comando - ffmpeg -i output.avi -qscale 0 -vf "scale = 3840: 2160: force_original_aspect_ratio = diminuir, pad = 3840: 2160: (ow-iw) / 2: (oh-ih) / 2" output-final.avi - Vídeo será maior, mas sem perda de qualidade como este é downscaling
Rob
sob seu ffmpegcomando, a -sameqopção agora é substituída por-qscale 0
transang
3

O Blender é uma boa solução se você estiver lidando com timelapse de movimento (hyperlapse) ou imagens instáveis. Possui recursos de rastreamento de movimento, para que você possa escolher um ponto fixo a ser rastreado ao longo do tempo. Você também pode corrigir problemas de rotação.

Reed G. Law
fonte
0

Você pode usar o mencoder. As opções são bastante explícitas:

  • liste todos os seus arquivos de imagens.

Se todos estiverem no diretório atual com nomes ordenados e você desejar a lista no arquivo /tmp/files.txt:

ls -1 *jpg > /tmp/files.txt

  • Use o mencoder com a opção apropriada.

Se você deseja que o arquivo de saída seja /tmp/test.avi com 30fps:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4 -o /tmp/test.avi -mf type=jpeg:fps=30 mf://@/tmp/files.txt

Manu H
fonte
0

O Kdenlive também pode gerar timelapses usando o Add Slideshow Clipmenu, conforme explicado neste tutorial .

De acordo com o mesmo site , o Openshot tem uma funcionalidade semelhante, mas não a recomenda, porque é "muito buggy". Ainda assim, se é o seu editor de vídeo preferido, você ficará feliz em saber que pode arrastar e soltar uma sequência de arquivos nomeados corretamente (001.jpg a NNN.jpg) em uma janela Openshot para importá-los também como um intervalo de tempo.

anarcat
fonte
Esse guia é de 2014. O OpenShot provou muito nos últimos anos, agora é muito mais confiável.
Vclaw