
Ich versuche, Frames aus einemvariable BildrateVideo alle 5 Sekunden und erhalte die genauen Zeitstempel jedes extrahierten Frames. Das ist, was ich bisher habe:
-i inputfile -vstats_file vstats.log -vsync 2 -vcodec png -r 0.2 -f image2pipe -
Und das ist, was ich bekomme:
frame= 1 q= 0.0 f_size= 136261 s_size= 133kB **time= 5.000** br= 218.0kbits/s avg_br= 218.0kbits/s type= I
frame= 2 q= 0.0 f_size= 139382 s_size= 269kB **time= 10.000** br= 223.0kbits/s avg_br= 220.5kbits/s type= I
frame= 3 q= 0.0 f_size= 141631 s_size= 407kB **time= 15.000** br= 226.6kbits/s avg_br= 222.5kbits/s type= I
Ich brauche den genauen Zeitstempel des Frames, der für die Extraktion verwendet wurde, damit ich das Video später anhand der generierten Miniaturansichten präzise schneiden kann.
Gibt es außerdem eine Möglichkeit, vstats auf stdout statt in einer Datei zu drucken?
Antwort1
ich bin nicht sicher, was Sie versucht haben, aber wenn es für Sie funktioniert, ist es ok ...
Wie auch immer, zum Überspringen von Frames hätte ich verwendetWÄHLENVideofilter (stellen Sie sicher, dass libavfilter aktiviert ist). Für Frames-Infos hätte ich verwendetZEIGE INFOVideofilter.
Ihr Befehl sollte etwa wie folgt lauten:
ffmpeg -i inputfile -vf '[in]select=not(mod(n\,150))[s1];[s1]showinfo[out]' -vcodec mpeg2video outputfile
(wobei 150 Frames 5 Sek. x 30 fps sind)