Posso capturar uma série de imagens nomeadas de acordo com seu timestamp?

0

Estou capturando com sucesso uma captura de tela a cada 15 segundos com o comando abaixo, mas preciso correlacionar as imagens de onde no vídeo a captura de tela é.

O% d me dá um número inteiro, mas existe uma variável, filtro ou outra forma semelhante para incluir ou de alguma forma capturar o timestamp da imagem no nome do arquivo de saída?

c:\ffmpeg\bin>ffmpeg -i c:\files\video.mp4 -vf fps=1/15 c:\images\image_%d.png";

A saída atual é:

c:\images\image1.png
c:\images\image2.png
c:\images\image3.png
...
c:\images\image999.png

A saída desejada é algo como:

c:\images\image_00-00-00.png    // Capture at start of video
c:\images\image_00-00-15.png    // Capture at 00:00:15
c:\images\image_00-00-30.png    // Capture at 00:00:30
c:\images\image_00-00-45.png    // Capture at 00:00:45
c:\images\image_00-01-00.png    // Capture at 00:01:00
...
c:\images\image_01-25-15.png    // Last capture
    
por GDP 28.08.2015 / 21:10

1 resposta

1

Como algumas pessoas escreveram, provavelmente não há opção para o comando ffmpeg , que pode fazer o que você deseja. Na máquina Linux eu sugiro que você use o seguinte script

#!/bin/bash
interval=15 # interval between images in seconds

for ((i=0; i<$1; ++i)); do
timestamp=$(date -d @$((-3600+${i}*${interval})) +%H-%M-%S)
mv image${i}.png image_${timestamp}.png
done

exit 0

você pode chamá-lo no diretório com imagens como

$ script_name NNN

onde NNN é o número total de imagens (suponho que você comece a numerar com 0 em vez de 1, não é difícil).

Como você pode ver, eu confio no comando do linux date , que é capaz de converter segundos em horas.

Já que você parece estar na máquina Windows, existem algumas opções, como você pode usar esse script.

  1. Reescreva-o no arquivo de lote do Windows. Há um tópico aqui , que discute como usar o comando semelhante a date no Windows.

  2. Instale o cygwin e execute o script acima na linha de comando do cygwin

  3. Use uma linha de campanha autônoma para executar o script acima.

por 17.09.2015 / 18:09