25 Stimmen

Videowiedergabe in Java ( JMF, Fobs4JMF, Xuggler, FMJ )

Ich brauche eine einfache Videowiedergabe in Java.

Hier sind meine Anforderungen:

  • PRODUKTIONSQUALITÄT

  • Öffnen und Dekodieren von Videodateien, deren Video- und Audiocodecs von mir ausgewählt werden können. D.h. ich kann gut funktionierende Codecs auswählen.

  • Sie können spielen , Pause , seekToFrame OR seekToTime y stoppen Playback. Im Wesentlichen möchte ich in der Lage sein, Segmente einer einzelnen Videodatei auf nicht lineare Weise abzuspielen. Ich möchte zum Beispiel das Segment 20,3 Sekunden bis 25,6 Sekunden abspielen, eine Pause von 10 Sekunden einlegen und dann das Segment 340,3 Sekunden bis 350,5 Sekunden abspielen, usw.

  • Während der Wiedergabe müssen Video und Audio synchronisiert sein.

  • Das Video muss in einer Swing JComponent angezeigt werden.

  • Muss in einem kommerziellen Produkt verwendet werden können, ohne dass es Open Source sein muss (z.B. LGPL oder Comercial ist gut)


Meine Nachforschungen haben mich zu den folgenden Lösungen geführt:

Ich habe einen schnellen Prototyp implementiert, und dieser scheint zu tun, was ich brauche. Ich kann ein Segment des Videos mit spielen:

player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();

Fobs4JMF scheint zwar zu funktionieren, aber ich habe das Gefühl, dass die Qualität des Codes schlecht ist und das Projekt nicht mehr aktiv ist. Kennt jemand Produkte, die Fobs4JMF verwenden?


  • Schreiben Sie eine Flash-Anwendung, die ein Video abspielt, und verwenden Sie JFlashPlayer, um es in meine Java Swing-Anwendung zu bringen.

Im Gegensatz zu Java ist Flash hervorragend für die Wiedergabe von Videos geeignet. Ich könnte eine kleine Flash-Anwendung mit den Methoden schreiben:

open(String videoFile),
play(),
pause(),
seek(int duration),
stop()

Dann bringen Sie es in Java mit JFlashPlayer, der Flash-Funktionen von Java aus aufrufen kann.

Was mir an dieser Lösung gefällt, ist, dass die Videowiedergabe in Flash sehr stabil sein sollte. Hat jemand JFlashPlayer zur Wiedergabe von Videos in Java verwendet?


  • Schreiben eines einfachen Media Players auf Xuggler

Xuggler ist ein FFMpeg-Wrapper für Java, der ein recht aktives und hochwertiges Projekt zu sein scheint. Allerdings ist die Implementierung der in den Anforderungen beschriebenen einfachen Videowiedergabe nicht trivial (insbesondere Seeking), aber ein Teil der Arbeit wurde bereits im MediaTools MediaViewer geleistet, der die Basis wäre, auf der man aufbauen könnte.


  • FMJ verwenden

Ich habe versucht, FMJ zum Laufen zu bringen, hatte aber bisher keinen Erfolg.


Ich würde mich über Ihre Meinung zu meinem Problem freuen.

0voto

john16384 Punkte 7220

Ich empfehle die Verwendung von MPV . Sie können es in Kombination mit JavaFX ganz einfach verwenden, siehe dies Beispiel .

Kurz gesagt, Sie verwenden ein wenig JNA-Magie, um die nativen MPV-Bibliotheken direkt zu verwenden, und lassen dann das Video auf einer JavaFX-Bühne anzeigen. Wenn Sie eine Child-Stage verwenden, können Sie sogar JavaFX-Steuerelemente über das Video legen (mit voller Transparenzunterstützung).

VLC (mit VLCJ) kann auf ähnliche Weise verwendet werden, aber ich finde, dass die MPV-Lösung besser funktioniert (schnellere Such- und Startzeiten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X