2016-11-29 1 views
-1

Ich suche nach einer Möglichkeit, einen bestimmten Frame aus einem Video in Java zu erhalten. Zum Beispiel get frame #198 from movie.mp4. Ich brauche es nicht MP4-spezifisch, solange die Lösung auf einem gemeinsamen Videodateityp funktioniert. Ich habe Bibliotheken dafür gesehen, wie Xuggle und JCodec, aber da sie älter sind, gibt es Probleme mit der Unterstützung; Das JCodec-JAR enthält nicht einmal eine der Klassen, die zum Speichern eines Frames erforderlich sind. JCodec unterstützt nicht, ohne die JAR zu modifizieren, die Unterstützung eines einzelnen Frames aus einer Datei. Andere Bibliotheken benötigen Schleifen, um zu einem bestimmten Frame zu gelangen. Ich möchte nur einen Methodenaufruf haben, der einen bestimmten Frame zurückgibt.Wie bekomme ich einen bestimmten Frame von einem Video in Java

+0

@Berger Die Lösung für diese Frage verwendet ein JCodec-Beispiel, das veralteten Code enthält und die andere Antwort auf diese Frage ruft nicht einen bestimmten Rahmen ab – SVN600

Antwort

0

Mit OpenCV können Sie dies über die Klasse 'OpenCVFrameGrabber' tun.

Die hier dokumentiert: http://bytedeco.org/javacv/apidocs/org/bytedeco/javacv/OpenCVFrameGrabber.html

Sie können entweder über die Datei durchlaufen, oder wenn Sie dies vermeiden wollen, wie Sie angeben, können Sie den Rahmen gesetzt, der die Erfassung bei Verwendung des ‚setFrameNumber‘ Methode auftreten sollte die Klasse.

Eine Sache, auf die man achten sollte - die openCV-Fame-Nummer-Einstellung wird Berichten zufolge nur zum nächsten Iframe gehen, wenn das Video auf diese Weise codiert ist. Ich habe das nicht getestet, kann aber nicht bestätigen, aber eine Möglichkeit, dieses Problem zu umgehen, besteht darin, eine Position vor, aber nahe dem gewünschten Frame zu suchen und dann für die letzten paar Frames zu iterieren, um die gewünschten Positionen zu erhalten und dann den Framegrabber zu verwenden.

+0

openCV ... um einen Rahmen zu bekommen ... ok – gpasch

Verwandte Themen