2010-01-11 4 views
24

Ich brauche einfache Video-Wiedergabe in Java.Video-Wiedergabe in Java (JMF, Fobs4JMF, Xuggler, FMJ)

Hier sind meine Anforderungen:

  • PRODUCTION QUALITY

  • öffnen und zu dekodieren Videodateien, deren Video- und Audio-Codecs können von mir gewählt werden. I.E Ich kann Codecs mit gutem Verhalten auswählen.

  • der Lage sein, Spiel, Pause, seekToFrame OR seekToTime und Stopp Wiedergabe. Im Wesentlichen möchte ich in der Lage sein, Segmente einer einzelnen Videodatei auf nichtlineare Weise abzuspielen. Zum Beispiel möchte ich das Segment 20,3 Sek. Bis 25,6 Sek. Spielen, 10 Sekunden lang pausieren und dann das Segment 340,3 Sek. Bis 350,5 Sek. Abspielen.

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

  • Das Video muss in einer Swing JComponent angezeigt werden.

  • Must Open Source in einem kommerziellen Produkt verwenden können (IE LGPL oder Comercial ist gut)


Meine Forschung mich zu folgenden Lösungen geführt werden, ohne dass:

Ich habe einen schnellen Prototyp implementiert und dies scheint zu tun, was ich brauche. Ich kann ein Videosegment spielen mit:

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

Während Fobs4JMF scheint zu funktionieren, ich fühle die Qualität des Codes ist schlecht und das Projekt ist nicht mehr aktiv. Kennt jemand irgendwelche Produkte, die Fobs4JMF benutzen?


  • eine Flash-Anwendung schreiben, die ein Video spielt und JFlashPlayer verwendet es in Anwendung meines Java Swing

Im Gegensatz zu Java, Flash ist brillant Video zu spielen zu bringen. Ich könnte eine kleine Flash-Anwendung mit den Methoden schreiben:

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

Dann ist es in Java bringen JFlashPlayer verwendet, die Flash-Funktionen aus Java aufrufen können.

Was ich an dieser Lösung mag, ist, dass die Videowiedergabe in Flash solide sein sollte. Hat jemand JFlashPlayer verwendet, um Videos in Java abzuspielen?


  • einen einfachen Mediaplayer auf der Oberseite Xuggler schreiben

Xuggler ist ein FFMpeg Wrapper für Java, die ein ziemlich aktiv und qualitativ hochwertiges Projekt zu sein scheint. Das Implementieren der einfachen Videowiedergabe, die in den Anforderungen beschrieben wird, ist jedoch nicht trivial (insbesondere nach Suchen), aber einige der Arbeiten wurden im MediaTools MediaViewer ausgeführt, der die Grundlage für die Erstellung ist.


  • Verwenden FMJ

Ich habe versucht, FMJ Arbeit zu bekommen, haben aber keinen Erfolg bisher hatte.


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

Antwort

11

Kann ein Bruder einen Ruf für Xuggler bekommen?

+0

Ich brauche viel Hilfe bei xuggle, wie kann ich zwei Videos hinzufügen, um ein Video in xuggle zu erstellen? Ich versuche Google, aber es hilft nicht viel ... –

+2

Wo auf der Erde ist der eigentliche Download-Link für Xuggler ?! – aaronsnoswell

+0

Xuggler kann keyframe für mp3 oder m4a nicht suchen. Das ist der FFMPEG-Header fehlt Problem. – taymedee

2

JavaFX verfügt über eine Reihe von funktionierenden Video- und Audio-Codecs. Es ist wahrscheinlich die Lösung mit der derzeit breitesten Unterstützung.

+0

Hi jsight und danke für deine Antwort. Ich weiß, dass JavaFX Video unterstützt, aber leider musste ich es ablehnen, da es schwierig ist, JavaFX-Komponenten in eine Java Swing-Anwendung zu importieren. Es gibt Möglichkeiten, aber es sind nicht unterstützte Hacks. – ksullivan

+0

Siehe auch: http: //dsc.sun.com/lernen/javaoneonline/2008/pdf/TS-6509.pdf und http://www.google.com/url?sa=t&source=web&ct=res&cd=3&ved=0CBEQFjAC&url=http%3A%2F%2Flobobrowser.wordpress. com% 2F2008% 2F12% 2F29% 2Fjavafx-Video-in-einem-Schwung-Anwendung-technisch-machbar% 2F & ei = -DhLS97jCsKztgf87cDkDQ & usg = AFQjCNHU942l5cD-Wwe-fn7gSiW8BwFP7Q & sig2 = 0RkjWw98VIKfs1egM4gN7g – jsight

+0

Danke für diese Links. Es scheint, dass zusätzlich zu der nicht offiziellen Unterstützung für JavaFX in Java, Verteilungsprobleme (besonders in Bezug auf die Video-Codecs) – ksullivan

2

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

Ich würde auch gerne eine einfache Möglichkeit sehen, mit nativen Codecs wie JavaFX zu interagieren, aber es scheint keine echte Integration zwischen JavaFX und Java zu geben.

Es wurde auch versucht, die VLC-Bibliothek libvlc nach Java zu bringen. Ich habe es noch nicht probiert und wäre daran interessiert, von jedem wieder zu hören, der es getan hat.

+0

schätze das ist jetzt über ein Jahr alt, aber wenn du immer noch interessiert bist, sehe meine Antwort! – berry120

+0

danke, ja, es ist immer noch ein offenes Thema für mich und ich werde das untersuchen. – paul

2

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

+2

Sie nicht - Sie können libvlc mit Ihrer App verteilen, was ich tue. – berry120

+0

Versuchen Sie nicht, Unterstützung für vlcj, aber der Typ ist ein stechender Schwanz. –

4

In meinen Gedanken ist VLCJ der Weg nach vorne für diese Art von Sache. Ich liebe Xuggler für die Encoding/Transcoding-Arbeit, aber leider ist es einfach so kompliziert, einfache Wiedergabe zu machen und alle Synchronisationsprobleme und ähnliches zu lösen - und es fühlt sich sehr an, das Rad neu zu erfinden.

Die einzige Sache mit VLCJ ist, dass, um es zuverlässig mit mehreren Spielern arbeiten zu können, ich auf Spieler außerhalb des Prozesses zurückgreifen musste. Das Framework war nicht die einfachste Sache der Welt, aber wenn es da ist, funktioniert es wunderbar. Ich habe derzeit 3 ​​Spieler ohne Probleme in meiner App nebeneinander. Der andere Nachteil ist, dass der eingebettete Mediaplayer nicht mit einer Swing-Komponente funktionieren wird, nur mit einer schweren Leinwand - aber das hat sich für mich überhaupt nicht als Problem erwiesen. Wenn dies der Fall ist, können Sie den direkten Media Player verwenden, um ein gepuffertes Bild zu erhalten und anzuzeigen, was auch immer Sie wählen, aber es wird etwas mehr in Ihre CPU hineinfrieren (wenn auch nicht mehr als andere Spieler, die diesen Ansatz verwenden).