2016-06-03 7 views
1

Sie würden denken, dies wäre so eine einfache Operation, aber es gibt nichts in der Dokumentation darüber, wie Sie die Anzahl der Bilder in einem Videoclip erhalten. Der einzige Weg, an den ich denken kann ist, iter_frames() zu verwenden und die Frames nur einzeln zu zählen, aber aus irgendeinem Grund dauert es fast eine ganze Sekunde, um 15 Frames Video zu durchlaufen, auch wenn ich keine Aktion an ihnen durchführe .Anzahl der Bilder in Clip mit MoviePie erhalten

+0

Müssen Sie es 'moviepy' Sie verwenden oder wird die Arbeit OpenCV? –

+1

Ich möchte wirklich nicht ein ganzes Paket für eine einfache Funktion importieren, die sein sollte, und ist wahrscheinlich ein Teil von diesem bereits. – Maurdekye

+1

Im [moviepiece quell code] (https://github.com/Zulko/moviepy/blob/master/moviepy/Clip.py) können Sie sehen, wie 'iter_frames()' implementiert wird - die Linie von Interesse ist diese : 'für t in np.bereich (0, self.duration, 1.0/fps):'. Also, es wird einfach jedes Bild zum Zeitpunkt "t" angezeigt. Sie müssen also nur die Anzahl der Bilder aus der Dauer und der Bildrate ableiten. Scheint irgendwie albern, aber. Vor allem, weil es Videos mit variabler Bildrate gibt. –

Antwort

5

Wie sich herausstellt, speichert movepy nicht einzelne Rahmendaten, also speichert es nicht die genaue Anzahl der Bilder. Hier ist der beste Weg, ich eine Annäherung bekommen gefunden:

frames = int(clip.fps * clip.duration) 
3

ziemlich schnell für mich, diesen Code verwenden:

clip = VideoFileClip('test.mp4') 
n_frames = sum(1 for x in clip.iter_frames()) 
print n_frames 
+0

Aber was, wenn ich wissen wollte, welche Clipnummer angezeigt wird. Ich versuche zu markieren, wie sie angezeigt werden. – kevbuntu

Verwandte Themen