Eu tenho um pequeno arquivo de vídeo que o ffprobe descreve como: -
Input #0, avi, from 'sample.avi':
Metadata:
encoder : Lavf55.12.100
Duration: 00:00:35.00, start: 0.000000, bitrate: 546 kb/s
Stream #0:0: Video: msmpeg4v3 (MP43 / 0x3334504D), yuv420p, 320x240,
506 kb/s, 200 fps, 200 tbr, 200 tbn, 200 tbc
Como o vídeo é de 35 segundos. longo, e com taxa de quadros de 200 fps, espero que haja (35 x 200) = 7000 quadros no vídeo.
Se eu usar o ffmpeg para realmente extrair imagens de quadros do vídeo, eu realmente obtenho 6999 imagens (próximo o suficiente, suponho). O comando que eu uso para isso é: -
c:\> ffmpeg -i sample.avi -f image2 -c:v png Img%%04d.png
Nota: o '%%' é necessário quando o comando é executado a partir da CLI do WinXP
No entanto, usando o comando: -
c:\> ffprobe -select_streams v -show_frames sample.avi > frames.lis
e contando quantos itens [FRAME] estão em frames.lis fornece uma contagem de frames de 1023 frames e não 7000.
Alguma explicação?
Aqui está um link para um arquivo muito semelhante que se comporta da mesma maneira (~ 7MB):
http://www.filedropper.com/sample_65
Clique com o botão esquerdo na imagem "Download This File" na página.
Estou usando o build Win32 17APR2014 estático do ffmpeg 'ffprobe' no WinXP-SP3.
Se houver outra maneira de fazer isso, estou basicamente tentando criar uma tabela de "número de quadros" versus "tempo" para uma série de arquivos de vídeo para uso em outro aplicativo.
Obrigado.