# Javafx 8 und Vlcj



## Patrick89 (15. Jan 2015)

Guten Tag, 

ich habe gelesen, das man Vlcj nicht unter JavaFx zum laufen bringen kann.

Hat jemand Erfahrung in dem Bereich? Kann jemand sagen ob das inzwischen mit JavaFX 8 geht?

Vielen Dank fuer die Antworten!

Gruss
Patrick


----------



## dzim (15. Jan 2015)

Suche "vlcj javafx"

Erster Treffer:
https://github.com/caprica/vlcj-javafx


> vlcj-javafx-demo
> Demo showing how vlcj can be used to render video to a JavaFX 2.x Canvas.
> 
> This uses the vlcj direct rendering media player component. It can not hope to perform as well as the native heavyweight rendering using an AWT Canvas, but nevertheless smooth full HD playback is possible.
> ...



Was also ist zu erwarten? Dass es etwas schlechter läuft, als unter AWT, aber bei guten PCs wohl genügen wird.

*ABER*: Er bringt es auf das *JavaFX 2.x Canvas*. Seit JavaFX 2 gibt es das Interopt um JavaFX in Swing oder SWT einzubinden. Und seit JavaFX 8 geht zumindest für Swing auch der umgekehrte Weg...
Ich entwickle selbst nicht mit Swing, aber wenn ich es richtig verstehe, könntest du damit vlcj in eine Swing-Komponente einbinden, die wiederum von JavaFX gehostet wird.
Vielleicht ein ziemlich komplizierter S.C.H.E.I.S.S. für so eine Kleinigkeit, aber ich denke, dass du auf diese Weise von beiden Welten profitieren könntest: vlcj funzt gut unter Swing/AWT, JavaFX ermöglicht optisch ansprechende UIs.


----------



## Patrick89 (16. Jan 2015)

Ja genau so habe ich das auch verstanden wo ich nochmal gestern Abend gegoogelt habe 

Ich werde es mal ausprobieren nachher, ob es geht und wie die Perfomance ist. Hoffe mal nicht allzu Rechenintensiv.
Werde dann mal berichten.

Es muss ein Framework geben das beides hat die Vorteile von AWT/Swing und von FX..... Die Nachteile koennen sie auch weglassen


----------



## dzim (16. Jan 2015)

Naja das Problem ist ja einfach nur, das VLCJ (noch?) nicht angepasst wurde. Wenn die das auf die Media-Player API von FX anpassen würden... Ein Traum würde wahr werden... Ein schönes VLC :-D (nicht das VLC jetzt so hässlich wäre oder mich die GUI stören würde, aber es ist halt eher eine funktionale als hübsche GUI)


----------



## Patrick89 (16. Jan 2015)

Ja das sehe ich genauso!!!! Das waere echt klasse.

Wie gesagt werde ich mal ausprobieren ob ich das in FX zum laufen bringe etc. Habe das noch nie gemacht und kann daher auch nicht sagen wie das von statten geht. Aber Mut zur Tat und fleiss wird belohnt


----------



## Patrick89 (19. Jan 2015)

Also ich habe am Wochenende mal getestet.

Ich habe sowohl die SwingNode als auch das JFXPanel ausprobiert und ich muss sagen beide sachen haben Ihrern Reiz...
Mit der SwingNode habe ich es nicht hinbekommen, da wurde das Canvas nicht dargestellt, warum auch immer aber ich habe gelesen das noch nicht alles mit der SwingNode moeglich ist... Wahrscheinlich habe ich da wohl was getroffen was nicht geht. 

Bei der SwingNode hat man eine FX App und bindet dann die Swing Komponennten ein.

Dann habe ich das JFXPanel ausprobiert und ich muss sagen das alles geht was ich will, der Canvas geht die Kommunikation zwischen den Threads geht wunderbar und das Video wird auch fluessig abgespielt 

Bei dieser Variante die es seit FX 2.x gibt, Hat man eine Swing Anwendung und erstellt sich dann ein JFXPanel (Das die gleichen Eigenschaften haben soll wie ein normal JPanel) und added es in ein anderes Panel oder Frame etc... 
Im FXPanel erstellt man eine Scene und kann dann wie gewohnt mit fx arbeiten.
Das ist sehr praktisch, wenn man FX und Swing kombinieren will.

Das nervige ist halt die Syncronisation der beiden Threads, aber es geht eigentlich .
Bei sieht es jetzt so aus: Ich habe ein JFrame darin ein JPanel  darin mein VLC Player (Canvas), dann das FXPanel wo Buttons und Label's und und und drinne sind zu testen erstmal 

Es gib ein paar gute Tut's die vollkommen ausreichen um damit zu arbeiten.
Fakt ist, wer ein bisschen Swing und ein bisschen FX kann der wird keine Probleme haben damit was auf die Beine zu stellen.


----------



## dzim (19. Jan 2015)

Wenn dich die Synchronisation der Threads nervt, nutze SWT und das entsprechende Interopt. SWT und JavaFX laufen auf dem Selben UI-Thread.


----------



## Patrick89 (20. Jan 2015)

Gut zu wissen, danke dir. Ich werde nachher mal schauen wie das geht!


----------

