# Media Framework oder Alternative gesucht!



## TheFusion (1. Jan 2012)

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


----------



## Kr0e (1. Jan 2012)

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!


----------



## TheFusion (1. Jan 2012)

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


----------



## Kr0e (1. Jan 2012)

TheFusion hat gesagt.:


> 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!


----------



## TheFusion (1. Jan 2012)

Danke, das teste ich mal, ich hab schon ein Testprogramm wo ich das schnell einfügen kann ^^

Vllt ist das auch ausreichend:  


```
setPosition(float position)
```

in Verbindung mit


```
getPosition()
```

ich probiers mal aus


----------



## Kr0e (1. Jan 2012)

Viel Erfolg


----------



## TheFusion (1. Jan 2012)

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:


```
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


----------



## Kr0e (1. Jan 2012)

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


----------



## TheFusion (1. Jan 2012)

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


----------



## TheFusion (4. Jan 2012)

Bin jetzt doch bei Vlcj geblieben und bin ganz zufrieden


----------

