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.

13voto

Art Clarke Punkte 2487

Kann ein Bruder einen Applaus bekommen für Xuggler ?

5voto

Michael Berry Punkte 66127

Meiner Meinung nach, VLCJ ist der Weg nach vorn für diese Art von Dingen. Ich liebe Xuggler für die Kodierung / Transkodierung Arbeit, aber leider ist es einfach so kompliziert, einfache Wiedergabe zu tun und lösen alle Synchronisationsprobleme und dergleichen - und es fühlt sich sehr viel wie das Rad neu zu erfinden dabei.

Das einzige Problem mit VLCJ ist, dass ich, um es zuverlässig mit mehreren Playern zu betreiben, auf andere Player ausweichen musste. Der Rahmen war nicht die einfachste Sache in der Welt, um an Ort und Stelle zu bekommen, aber wenn es da ist es funktioniert wunderbar. Ich führe derzeit 3 prozessfremde Player in meiner Anwendung nebeneinander aus, ohne dass es irgendwelche Probleme gibt.

Ein weiterer Vorbehalt ist, dass der eingebettete Media Player nicht mit einer Swing-Komponente funktioniert, sondern nur mit einer schwergewichtigen Leinwand - aber das hat sich für mich nicht als Problem erwiesen. Wenn es tut, dann können Sie den direkten Media Player verwenden, um ein gepuffertes Bild zu erhalten und anzuzeigen, dass auf was auch immer Sie wählen, aber es wird in Ihrer CPU ein bisschen mehr essen (wenn auch nicht mehr als andere Spieler, die diesen Ansatz nehmen.)

3voto

jsight Punkte 27087

JavaFX hat eine Reihe funktionierender Video- und Audiocodecs eingebaut. Es ist wahrscheinlich die Lösung mit der breitesten Unterstützung im Moment.

3voto

paul Punkte 5088

Ich benutze jffmpeg auf die gleiche Weise wie Sie FOBS, es funktioniert ziemlich gut, obwohl ich sie nicht verglichen habe.

Ich würde auch gerne einen einfachen Weg sehen, um mit nativen Codecs die Art und Weise, dass JavaFX tut Schnittstelle, aber es scheint nicht zu sein, echte Integration zwischen JavaFX und Java.

Es wurde auch daran gearbeitet, die VLC-Bibliothek libvlc in Java zu integrieren. Ich habe es noch nicht ausprobiert und wäre an einer Rückmeldung von jemandem interessiert, der es getan hat.

3voto

Oso Punkte 508

Ich habe Xuggler noch nicht ausprobiert (was mich interessiert), aber ich habe eine gute Zeit mit VLCJ . Der einzige Nachteil, den ich darin sehe, ist, dass Sie VLC vor Ihrer Anwendung installiert haben müssen.

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