2011-03-09 8 views

cevap

15

Bu tam bir çözüm değil, ancak size doğru yol boyunca işaret eder. Video girişindeki kare sayısını almak için ffprobe -show_streams IN.AVI kullanın. Daha sonra LAST_FRAME_INDEX kare sayısı daha az bir olan

ffmpeg -i IN.AVI -vf "select='eq(n,LAST_FRAME_INDEX)'" -vframes 1 LAST_FRAME.PNG 

, son kare çıktısı (kare sıfır endeksli vardır).

+0

teşekkürler. Bana gerçekten yardım etti. Komutlarınızı hiçbir değişiklik yapmadan kopyaladım. –

+3

Bu talimatların dışında bir kabuk betiği yaptım. https://gist.github.com/NelsonMinar/b00693feecc3b6673e36 – Nelson

+0

Bu, tüm kareleri deşifre edemez mi, arama yaparken bir grup videoyu atlamak için anahtar kareleri kullanabilecek misiniz? – Guig

1

Sözünü daha önce görmediğim bir şey, dosya dupes içeriyorsa beklenen kare sayımının kapalı olabileceğidir. Çerçeveleri sayma yönteminiz görüntü çıkarma komutunuzun boş gelmesine neden oluyorsa, bu onu kopyalayan şey olabilir.

Bu soruna geçici bir çözüm bulmak için kısa bir komut dosyası geliştirdim. Bu here yayınlanmıştır.

2

Nelson'un çözümünü işe yaramadı. Bu benim için çalıştı. (Bağlantı shellscript-bobbogo burada kaybolur olduğu her ihtimale karşı) https://gist.github.com/samelie/32ecbdd99e07b9d8806f

DÜZENLEME:

#!/bin/bash 

fn="$1" 
of=`echo $1 | sed s/mp4/jpg/` 

lf=`ffprobe -show_streams "$fn" 2> /dev/null | grep nb_frames | head -1 | cut -d \= -f 2` 
rm -f "$of" 
let "lf = $lf - 1" 
ffmpeg -i $fn -vf select=\'eq\(n,$lf\) -vframes 1 $of 
İlgili konular