Media Framework oder Alternative gesucht!

TheFusion

Mitglied
Hallo liebes Forum 🙂

Ich suche seit mehreren Tagen intensiv nach einem halbwegs vernünftigen Java Medien Framework.
Ich hab alles gelesen was Google ausspuckt und hab bis jetzt schon JMF und vlcj ausprobiert, aber das ist alles nicht so das wahre 🙁

Ich hab schon verstanden, dass das mit Java nicht so leicht ist aber es muss doch eine Möglichkeit geben, da ich ja nicht soo große Anforderungen habe:

  • Unterstützung für gängige Videoformate
  • Playerfunktionen wie Start, Stop, Pause UND ein Frame vor/zurück springen
  • Einbindung in ein JPanel oder Ähnliches und Steuerung über Buttons

Folgende Lösungen disqualifizieren sich vorläufig:

  • vlcj: scheinbar keine Funktion um ein Frame zurückzuspringen, auch sonst sehr eingeschränkt
  • JMF + Fobs: Alt, nutzt immer den Standartplayer, hab keine Möglichkeit für andere Steuerung gefunden
  • dsj (DirectShow): keine kommerzielle Nutzung
  • Xuggler: viel zu kompliziert 🙁
  • JMC/JavaFX: hab ich keine Erfahrung mit

Habt ihr bessere Vorschläge oder könnt ihr mich was die Frameworks oben angeht eines besseren belehren? Vllt ganz andere Ansätze?

Mfg TheFusion 🙂
 
Gstreamer-java..... Hatte ich nie Probleme mit 😉 Ob man da frameweise springen kann, weiß ich nicht, aber sllte mit deren Pipelines machbar sein, denke ich.

Aber zu VLCj: Ich finde diese Lib eigentlich recht umfangreich. Ich würde diese Lösung nicht zu vorschnell abtun. Frag doch mal bei deren Mailinglisten ob das geht... Ansich sollte es gehen, basiert ja auf der VLC lib.

Frohes Neues!
 
Dir auch ein frohes neues Jahr 😉

Ich werde mir gstreamer dann mal ansehen, untertützt das denn alle Formate?

[edit] hab grad hier mal geguckt, klingt ganz gut 🙂

Mit vlcj war ich zuerst auch ganz zufrieden, aber als ich sah, dass die MediaPlayer-Klasse zwar eine nextFrame() Methode hat, die dann zu erwartende previousFrame() oder zumindest goToFrame(int pos) oder sowas fehlt, kam mir das ganze etwas unvollständig vor 🙂
 
Zuletzt bearbeitet:
Mit vlcj war ich zuerst auch ganz zufrieden, aber als ich sah, dass die MediaPlayer-Klasse zwar eine nextFrame() Methode hat, die dann zu erwartende previousFrame() oder zumindest goToFrame(int pos) oder sowas fehlt, kam mir das ganze etwas unvollständig vor 🙂

Hm, das klingt allerdings so, als ob du schon an der richtigen Stelle gesucht hast und das untermauert leider deine Befürchtung, dass es sowas dort nicht gibt...

Ich schau gleich auch mal rein, vlt finde ich ja was 😉

PS: GStreamer untersützt auch allle Formate (so ziemlich zumindest). Es baut auf FFMpeg auf und ist Standard bei allen Linuxplattformen.




EDIT:

Sooo, mal reingeschaut:
Könnte:

void setTime(long time);

nicht ausreichend sein ? Immerhin kennt man ja die Frames per Second und die momentane Zeit. Daraus sollte sich der Zeitpunkt des letzten Frame doch berechnen lassen! Damit müsstest du ja an jeden Zeitpunkt kommen!

Hm, vlt könnte dies zu evt. Performanceproblemen führen... Ich würde hier vorschlagen: Einfach ausporobieren!
 
Zuletzt bearbeitet:
Danke, das teste ich mal, ich hab schon ein Testprogramm wo ich das schnell einfügen kann ^^

Vllt ist das auch ausreichend:

Java:
setPosition(float position)

in Verbindung mit

Java:
getPosition()

ich probiers mal aus 🙂
 
soo, ich wollte jetzt mal gstreamer testen mit diesem Beispiel: VideoPlayerTutorial
ich hab die gstreamer-java-1.5.jar und die jna-3.2.4.jar in den buildpath eingefügt aber ich bekomme diesen Fehler:

Code:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load library gstreamer-0.10
	at org.gstreamer.lowlevel.GNative.loadWin32Library(GNative.java:83)
	at org.gstreamer.lowlevel.GNative.loadLibrary(GNative.java:43)
	at org.gstreamer.lowlevel.GstNative.load(GstNative.java:42)
	at org.gstreamer.lowlevel.GstNative.load(GstNative.java:39)
	at org.gstreamer.Gst.<clinit>(Gst.java:59)
	at gstreamer.test.VideoPlayer.main(VideoPlayer.java:23)

was muss ich mit welchen .dll's machen bzw. wo und wie setze ich den Pfad dahin?

Danke im Vorraus 🙂
 
Nun ihc muss zugeben, dass das etwas Frickelei ist. Ich weiß garnicht mehr, wie das bei VLCj war... Bei GS-j musst du dir ein natives GS Build besorgen. Bei Linux ist das normalerweise vorinstalliert bzw sehr leicht installierbar. Unter Windows würde ich die OSS Builds OSS Builds empfehlen.

Diese musst du dann iwo hinkopieren, am Besten zum testen in dein Projektordner. Danach musst du noch deiner Jna Umgebung mitteilen, wo die DLLs zu finden sind.

DAs geht als JVM Startparameter:

-Djna.library.path=pfadZurLib

Danach SOLLTE es klappen. Falls es nicht klappt, so würde ich sowieso erstmal primär die Lösung mit setTime() bei VLCj probieren 😉
 
ok, und welche werden gebraucht? Die unter

C:\Program Files (x86)\OSSBuild\GStreamer\v0.10.6\bin

oder unter

C:\Program Files (x86)\OSSBuild\GStreamer\v0.10.6\lib\gstreamer-0.10 ???:L
 

Neue Themen


Zurück
Oben