Linux: Como extrair quadros de um vídeo? (sem perdas)

2

Li algumas respostas e artigos sobre o uso de programas como VLC , MPlayer , ffmpeg , etc., mas nenhum dos métodos que vi é "sem perdas". Eles não capturam todos os quadros. Eu quero extrair cada quadro de um vídeo como uma imagem (qualidade 100%, não quero perder nenhum detalhe), então, teoricamente, poderíamos tirar essas imagens e recriar o arquivo de vídeo sem poder diferenciar o original (excluindo a falta de áudio, é claro).

Pontos de bônus se eu puder especificar um horário de início e término para pegar quadros, então não preciso cortar o arquivo de vídeo antecipadamente.

    
por Trae 10.10.2015 / 20:06

2 respostas

5

Você pode extrair os quadros como PNG, um formato de compactação de imagem sem perdas. Por exemplo, para extrair quadros da marca de 5 min para a marca de 10 min:

ffmpeg -ss 05:00 -i <input> -t 05:00 filename%05d.png
    
por 11.10.2015 / 22:08
2

Existem várias ferramentas que podem extrair todos os quadros de um arquivo de filme:

avconv em avconv -i file.avi -f image2 Out%00d.jpg

ffmpeg em ffmpeg -i input.file thumb%04d.png -hide_banner

Isso também pode exportar BMP, o que demanda muito menos tempo de processamento do que o PNG ou JPG.

Existe também um script chamado mov2frame.sh que tenta automatizar o processo de extração do FFMPEG.

Mplayer em mplayer -ao null -vo png input.file

ou outra opção:

mplayer -nosound -vo png:z=9 my_file.mp4

VLC Este media player aparentemente pode exportar conjuntos de imagens usando seus filtros, mas parece problemático, a menos que seja seu único uso ou que você tenha uma versão portátil.

  1. Create a folder to store your frames and copy the path to it. For Mac OSX/Linux users, this must be the full path (no ~).

  2. Click Tools / Preferences in VLC.

  3. Under “show settings”, click “all”.

  4. Under “Video”, select “Filters”. Tick “Scene video filter”.

  5. Expand “Filters” and select “Scene filter”,

  6. Paste the path from earlier into “directory path prefix”.

  7. Choose the fraction of frames to encode in the “recording ratio” box. 1/12 with output every 12, 1/1 will export them all

  8. Click “save”.

  9. Click Media / Open Video and find your video. Patiently let the whole thing play.

  10. Click Tools / Preferences. Under “show settings”, click “all”. Under “video”, select “filters”. Uncheck “Scene video filter”. Click “save”. This is so that VLC won’t generate thumbnails the next time you play a video. link

Também parece haver algum problema potencial com as permissões de administrador na primeira execução do programa:

sudo vlc [sudo] password for mint16: VLC is not supposed to be run as root. Sorry. If you need to use real-time priorities and/or privileged TCP ports you can use vlc-wrapper (make sure it is Set-UID root and cannot be run by non-trusted users first).

O VLC também funciona muito melhor ao extrair para BMP em vez de PNG

    
por 23.11.2016 / 20:12