FFmpeg rilevamento della scena e sceneggiatura


1

Questa è una domanda di follow-up dalla mia precedente domanda pubblicata QUI . Quindi, fondamentalmente usando FFmpeg, sto cercando di rilevare le scene dopo aver scelto una buona scenecutsoglia e afferrare un singolo fotogramma rappresentativo da ogni scena.

In questo momento, il comando di rilevamento scene di seguito che abbiamo già, salva le scene rilevate su disco, che purtroppo richiede molto tempo:

ffmpeg -y -i myVideo.mp4 -vf yadif \
       -c:v libx264 -profile:v high -preset:v fast \
       -x264opts min-keyint=15:keyint=1000:scenecut=20 -b:v 2000k \
       -c:a aac -b:a 128k \
       -f segment -segment_format mp4 -segment_time 0.01 -segment_format_options movflags=faststart \
       /home/1/output%05d.mp4

Il mio obiettivo finale è identificare le scene e salvare solo un singolo fotogramma da quella scena come immagine (diciamo fotogramma centrale di quella scena) invece di codificare e salvare i video dell'intera scena. C'è un modo veloce per raggiungere questo obiettivo?



@Gyan Molto utile. Ma ffmpeg -i video.mp4 -vsync 0 -vf select='gt(scene\,0.4)' -f image2 img-%04d.pngnon funziona per me e mi mostra un errore:Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
Tina J

1
È necessario eseguire cmd dal primo collegamento e quindi preparare il file di testo come mostrato nel secondo collegamento.
Gyan,

Grazie @Gyan. Supponendo che ho bisogno solo del primo fotogramma della scena, quale sarebbe un comando a corsa singola (non due comandi)?
Tina J,

Risposte:


1

Questo dovrebbe funzionare per ottenere il primo fotogramma dello scatto.

ffmpeg -i video.mp4 -filter:v "select=gt(scene\,0.5)" -vsync vfr output/frame%d.jpg 
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.