Como extrair imagens do arquivo de vídeo?

Respostas:

18

Tente com ffmpeg

ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg

Você pode ler a documentação aqui

YoMismo
fonte
1
seu link parece estar quebrado
Nolwennig
@Nolwennig. Corrigida, não tão específica quanto a anterior, mas pelo menos é a documentação oficial e dificilmente pode ser quebrada.
YoMismo
3
-r 1é para o número de imagens por segundo. Então, por 60ips, ou 24, é -r 24. E para limitar o extrato, é -ss [start] -t [duration].
Sandburg
Obrigado, funciona bem no Xubuntu
Indacochea Wachín
2

Acabei de baixar a versão mais recente do VLC para Windows 32 - 2.1.2 Rincewind e funciona bem para isso.

Passos:

1 - Clique em Ferramentas> Preferências e clique no botão de opção Todos

2 - Role para baixo e clique no sinal + ao lado de Vídeo para expandir

3 - Role para baixo e clique em Filtro de cena e preencha as informações do prefixo Caminho do diretório (onde você deseja salvar os quadros). Não clique em Salvar.

4 - Role para cima e clique na palavra Vídeo em Filtros

5 - Clique na caixa de seleção para filtro de vídeo de cena e clique em Salvar.

6 - Abra e execute um vídeo e ele salvará .png

7 - Para parar de salvar os quadros, volte para a etapa 5 e desmarque o filtro de vídeo da cena. Fácil realmente quando você sabe onde encontrar as configurações.

Florence Taylor
fonte
0

Espero que esta ajuda

#!/bin/bash
source_dir="."
output_dir="."
input_file_types=(avi wmv flv mkv mpg mp4)
output_file_type="jpg"

convert() {
        echo "" | ffmpeg -ss $ss -y -i "$in_file" -an -f image2 -vframes 1 "$output_dir/$out_file"
}

for input_file_types in "${input_file_types[@]}"
do

        find "$source_dir" -name "*.$input_file_types" -print0 | while IFS= read -r -d $'\0' in_file
        do
                echo "Processing…"
                echo ">Input  "$in_file
                # Replace the file type
                out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_types/\1$output_file_type/g")
            echo ">Output "$out_file

# get video duration
#    fulltime=`ffmpeg -i "$in_file" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//`;
#    hour=`echo $fulltime | cut -d ':' -f 1`;
#    minute=`echo $fulltime | cut -d ':' -f 2`;
#    second=`echo $fulltime | cut -d ':' -f 3 | cut -d '.' -f 1`;

#    seconds=`expr 3600 \* $hour + 60 \* $minute + $second`;
#    ss=`expr $seconds / 2`; # from the middle of video



    ss=`expr 10`; # from the 10sec of video



    # Convert the file
                convert "$in_file" "$out_file"

                if [ $? != 0 ]
                then
                    echo "$in_file had problems" >> ffmpeg-errors.log
                fi

                echo ">Finished "$out_file "\n\n"
        done
done
Tom
fonte
0

No VLC, você pode clicar com o botão direito do mouse em Video, Take Snapshot

user375835
fonte
Isso soa um pouco trabalhoso se precisarmos de imagens para, por exemplo, cada quadro na cena.
Kusalananda