Linux: come estrarre i frame da un video? (Lossless)


4

Ho letto alcune risposte e articoli sull'utilizzo di programmi come VLC, MPlayer, ffmpegecc., ma nessuno dei metodi che ho visto sono "senza perdita". Non catturano ogni singolo fotogramma. Voglio estrarre ogni fotogramma da un video come un'immagine (qualità al 100%, non voglio perdere alcun dettaglio), quindi si potrebbe teoricamente prendere quelle immagini e ricreare il file video senza essere in grado di distinguere l'originale (esclusa la mancanza di audio, ovviamente).

Punti bonus se posso specificare un orario di inizio e di fine per prendere i frame, quindi non devo ritagliare il file video in anticipo.


Per poter rispondere a questo alcune informazioni sul tuo ffmpeg versione e il file di input è richiesto. Si prega di mostrare l'output completo della console di ffmpeg -i input.
llogan

Risposte:


7

È possibile estrarre i frame come PNG, un formato di compressione delle immagini senza perdita di dati. Ad esempio, per estrarre i fotogrammi dal segno da 5 mn al segno da 10 mn:

ffmpeg -ss 05:00 -i <input> -t 05:00 filename%05d.png

2

Esistono diversi strumenti che dovrebbero essere in grado di estrarre tutti i frame da un filmato:

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

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

Questo può anche esportare BMP, che richiede molto meno tempo di elaborazione rispetto a PNG o JPG.

C'è anche uno script di bash chiamato mov2frame.sh che cerca di automatizzare il processo di estrazione di FFMPEG.

Mplayer
mplayer -ao null -vo png input.file

o un'altra opzione:

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

VLC Apparentemente questo lettore multimediale può esportare set di immagini usando i suoi filtri, ma sembra problematico a meno che non sia il tuo unico utilizzo o se hai una versione portatile.

  1. Creare una cartella per archiviare i frame e copiare il percorso. Per gli utenti Mac OSX / Linux, questo deve essere il percorso completo (no ~).

  2. Fai clic su Strumenti / Preferenze in VLC.

  3. Sotto "mostra impostazioni", fai clic su "tutto".

  4. Sotto "Video", seleziona "Filtri". Seleziona "Filtro video scena".

  5. Espandi "Filtri" e seleziona "Filtro scena",

  6. Incolla il percorso da prima in "prefisso del percorso della directory".

  7. Scegli la frazione di frame da codificare nella casella "rapporto di registrazione". 1/12 con output ogni 12, 1/1 li esporterà tutti

  8. Fai clic su "Salva".

  9. Fai clic su Media / Apri video e trova il tuo video. Pazientemente lascia suonare tutto.

  10. Fai clic su Strumenti / Preferenze. Sotto "mostra impostazioni", fai clic su "tutto". Sotto "video", seleziona "filtri". Deseleziona "Filtro video scena". Fai clic su "Salva". Questo è così che VLC non genererà miniature la prossima volta che riprodurrà un video. collegamento

Sembra inoltre che ci siano alcuni potenziali problemi con le autorizzazioni di amministratore durante l'esecuzione del primo programma:

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).

Anche VLC si comporta molto meglio quando si estrae in BMP anziché in PNG

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.