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


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.


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

0

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


Isso soa um pouco trabalhoso se precisarmos de imagens para, por exemplo, cada quadro na cena.
Kusalananda
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.