# JMC



## algorismi (18. Nov 2009)

Hallo Leute,

hat jemand schon mit JMC (Java Media Components) Erfahrung sammeln können?
Hat jemand schon versucht in Java was damit zu machen, denn eigentlich wird JMC für JavaFX geliefert.

Falls jemand ein Tutorial hat würde ich mich sehr freuen, denn per google habe ich nur für die Version 1.1 finden können, aber bis jetzt leider keins für der Version 1.2.

Also wenn jemand ein Tutorial für die Version 1.2 hat, dann her damit......bitte natürlich


----------



## Kr0e (19. Nov 2009)

Hallo, ja hier ! Hab Erfahrung mit JMC!

Hi, JMC 1.2 ist etwas anders aber ähnlich leicht!

Ich schicke dir ein Link aus einem anderen Forum wo ich einen ähnlichen Beitrag geshcrieben hab, hab da auch ein kleines Tut geschrieben 

FoxNet

Viel Spaß !

JMC ist ein sehr mächtiges Werkzeug! Sollte März 2010 mit JDK 7 erscheinen 

Gruß Chris

PS: Man braucht nicht immer ein Tutorial  Hab mir durch anschauen und durchlesen der Klassennamen den Aufbau iwie zusammen gedichtet


----------



## algorismi (22. Nov 2009)

Hi Kr0e,
vielen dank für deinen Link.

Eine kleine Frage noch, mit dem JMC kann man nur Dateien abspielen, die lokal auf dem Rechner sind,
oder auch Dateien, die auf einem entfernten Rechner liegen.
und wie sieht es mit livestreams oder nur Video on Demand?

Gruß
Algorismi


----------



## Kr0e (22. Nov 2009)

Nunja, JavaFX und somit auch JMC sind relativ neue produkte... Live streams halte ich für schwierig (Also glaube nicht, dass es ne schöne Variante gibt bisher...) Da sind die guten alten C++ Bibliotheken Java immer noch einen gewaltigen Schritt vorraus 
Aber es wird langsam... Java 7 dürfte ne Menge verbessern... Die ganzen Sachen die man bei Java 6 noch so sehr vermisst... Apropro, Multimedia war immer schon ein absolutes Problemkind bei Java... Es freut mich zu sehen, dass Java nun endlich nciht mehr auf "Hausgemachte Codecs" setzt (Was ansich auch absoluter Schwachsinn ist). Mal im ernst, nix gegen Sun, aber die können keinen separaten Codec entwicklen, der vergleichbar mit FFMPEG oder GStreamer oder gar Core ist... Allein die Vorstellug war utopisch! Immerhin sind diese Codecs Produkt aus jahrelanger Arbeit und Erfahrung! Eine alternative gabs mal zwischendurch mit fobs4jmf, war aber vollkommen nutztlos! Audio/Video Synchronität ging nach ca. 2 minuten verloren... (Nicht zu gebrauchen)

Gruß,

Chris


----------



## algorismi (23. Nov 2009)

Soweit ich aber gelesen habe, soll JavaFX 1.2 jetzt auch RTSP unterstützen, dieser RTSP support ist doch für Livestream gedacht, oder?
Aber ehrlich gesagt habe ich es auch ausprobiert, aber leider kein Erfolg gehabt, bekomme immer eine Exception, dass das RTSP-Prtokoll unbekannt wäre.


----------



## Kr0e (25. Nov 2009)

Hi, ja das bekomme ich auch  So wie ich das jetzt gesehen hab, unterstützt JMC/JMF das rtsp nicht als Protokoll bei der URL...
Ich glaube bald schon, dass es ein rtsp fähiger ftp/http server sein muss! Auf der FMJ Seite gibt nämlich Testdateien... Der Link ist eine http Adresse... Und dennoch kann ich diese Datei behandeln wie eine DAtei auf der Festplatte... Wird also kompliziert werden einen eigenen Server damit zu basteln.... Mich hat auch interesiert was in dem Header steht, der von JMC verschickt wird...

Hab das ganz simpel mal gemacht:

Hab nen ServerSocket auf Port 80 lauschen lassen und dann ne Verbindung entgegen genommen und alles was rein kommt mit println ausgegeben. Dann hab ich einen JMC Player auf diese URL("http://localhost/test.avi") gesetzt. Der Header war ein Mix aus beiden Protokollen....


Sowohl http befehler standen drin (Nämlich z.b. get) aber auch die rtsp befehle (nämlich play mit vielen parametern dazu) standen drin... 

Hatte schon überlegt den apache mina webserver zu nehmen und zu modifizieren, sollte ja teechnisch möglich sein... Problem is dann noch die Datenübertragung... ich hab ehrlich gesagt keinen Plan was dann geschickt werden muss... Einfach die Datei selber ? Oder erstmal in irgendein Format bringen und dann schicken ? Würde mich damit gerne tiefer beschäftigen, aber es gibt einfach keien Literatur über JMC (Offiziell noch garnicht released...)

Es gibt das zwar für JMF, aber ich habe ebenfalls keine Ahnung, ob das bei JMC genauso funktioniert...

Es wurde in deinem andere Thread zu VLC Bindings geraten... Halte ich auch für eine Lösung, aber meines Wissens steht das Projekt still... Und es steht komplett unter GPL... Wäre für mich persönlich schon nichts, da man ein Programm (Bei dem die Lizenzen noch nicht klar sind) dann nicht auf etwas bauen sollte, was hinterher dann nur GPL als Endlizenz zulässtt..

Gruß Chris


----------



## algorismi (25. Nov 2009)

Ja stimmt, VLC Bindings steht still, leider.

Habe aber noch eine andere alternative gefunden, videos unter java darszustellen und auch per rtsp stream zu empfangen.
Diese alternative ist zwar nicht open-source (aber für nicht kommerzielle verwendung kostenlos).
es ist eine directShow wrapper library für java, diese heißt: dsj

hier der Link: DirectShow Java Wrapper: humatic - dsj


----------



## tuxedo (27. Nov 2009)

DSJ hab ich auch schon benutzt. Ist aber nur auf Windows ausgelegt. 

Alternativ kann man den Windows Media Player, bzw. dessen ActiveX Control via SWT-OleClientSite in Java Code einbinden und steuern (oder eben auch jedes andere ActiveX Control, z.B. das von VLC).

Bin sogar noch einen Schritt weiter gegangen und hab nen eigenen DirectShow Wrapper als ActiveX Control gebaut, welches dann alles rendern kann was die in Windows registrierten Filter (FFDShow etc.) hergeben  Darf den Wrapper allerdings nicht verteilen. Da hat mein Arbeitgeber was dagegen :-(

- Alex


----------



## algorismi (27. Nov 2009)

tuxedo hat gesagt.:


> DSJ hab ich auch schon benutzt. Ist aber nur auf Windows ausgelegt.



Ich habe mir nun eine Kleine Applikation mit DSJ geschrieben, die Video über RTSP emfangen und abspielen soll.

Wenn ich als Pfad sowas habe: rtsp://192.168.56.1/test.mpg dann wird das video ohne probleme abgespielt.

Wenn ich aber sowas als Pfad habe: rtsp://localhost/live dann bekomme ich eine Exception:


```
java.io.IOException: invalid / unexpected return from server: RTSP/1.0 404 Not Found
Server: DSS/5.5.5 (Build/489.16; Platform/Win32; Release/Darwin; state/beta; )
Cseq: 2
Connection: Close


	at de.humatic.dsj.src.RTSPSource.a(SourceFile:2004)
	at de.humatic.dsj.src.RTSPSource.c(SourceFile:1440)
	at de.humatic.dsj.src.RTSPSource.a(SourceFile:446)
	at de.humatic.dsj.src.RTSPSource.a(SourceFile:281)
	at de.humatic.dsj.src.RTSPSource.<init>(SourceFile:189)
	at SimpleStreamClient.createGraph(SimpleStreamClient.java:34)
	at SimpleStreamClient.actionPerformed(SimpleStreamClient.java:130)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```

kannst du mir da vielleicht weiterhelfen?

Gruß
Algorismi


----------



## tuxedo (27. Nov 2009)

algorismi hat gesagt.:


> kannst du mir da vielleicht weiterhelfen?



Sorry, nein. *überfragtbin*

Wieso frägst du nicht den DSJ Autor? Hatte damals auch hier und da kleinere Probleme. Meine Fragen wurde aber immer recht schnell beantwortet...

- Alex


----------



## algorismi (27. Nov 2009)

tuxedo hat gesagt.:


> Wieso frägst du nicht den DSJ Autor?



Das ist eine sehr gute Idee


----------



## algorismi (27. Nov 2009)

Hi tuxedo,

hätte noch eine Frage an dich. Als du damals DSj benutzt hast, hast du auch Videos per RTSP angezeigt?
Wenn ja lautete deine rtsp-adresse so ähnlich:  rtsp://192.168.56.1/test.mpg also mit einer konkreten datei oder war das eher ein livestream mit so einer ähnlichen adresse: rtsp://localhost/live ???


----------

