I'm working on a project who involve JavaFX and Omxplayer. On Windows, where I develop, my code works.

I set my stage to

stage.initStyle(StageStyle.TRANSPARENT);
stage.setOpacity(0.5);

On Windows, there is no problem, I can see behind the stage my other window. But on the Raspberry Pi with JavaFXPort (Gluon), I try the same .jar and opacity and Transparent seem to not work.

I don't use the X11, only in framebuffer.

If I start the Omxplayer before (or after) the JavaFX .jar, I can't see it.

JavaFX is in fullscreen mode on framebuffer, but on Windows it's on 800x600 (like I defined for test purposes).

This is the command I use to launch my .jar

/opt/jdk1.8.0_161/bin/java  -Djava.ext.dirs=/root/armv6hf-sdk- corrected/armv6hf-sdk/rt/lib/ext/ -Dcom.sun.javafx.experimental.embedded.3d=true -Dprism.verbose=true -   Dmonocle.screen.fb=/dev/fb0 -Dprism.forceGPU=true -Dprism.order=es2,sw,j2d    -Dsun.java2d.opengl=true -Xms300m -Xmx400m -jar 
/root/PlayerOmx.jar

And for Omxplayer, it's simple :

omxplayer --win "1920 1080 0 0" /root/movie.mp4 --loop

I already tried with -Dcom.sun.javafx.transparentFramebuffer

Can you help me please ?

up vote 0 down vote accepted

If you need to run multiple applications, do not use the framebuffer. Or at least, do not use the framebuffer unless you have something multiplexing the applications for you, because the framebuffer itself will not do it.

https://unix.stackexchange.com/q/98389/25985

One purpose of an open tiered GUI software stack is you can choose to start lower down, but then you may run into problems that are solved by higher layers and have to solve them yourself. In this case, that is probably not worthwhile.

On Windows, you do not have this choice, so you cannot run into this problem. So you are developing your code in a multi-client GUI environment, but you are not deploying it in one.

Note that you do not have to use a desktop environment (DE) like PIXEL (the default in Raspbian) or a window manager (WM) in order to benefit from X server's management of multiple clients.

https://unix.stackexchange.com/a/93210/25985

Just plain X is used to run single applications kiosks, etc. There are no menus, no window borders, no taskbars, no nothing except a mouse cursor unless you add them in. If you do not want mouse functionality, it should not be hard to disable that too.

  • Ok, thanks for the info. It's what I guessed, one framebuffer for one view. Anyway, how Omxplayer can be windowed ? It use the framebuffer too and we can play in window mode (set size). Can we do the same in JavaFX or it will be always in Full screen mode ? – Julien Planchet May 17 at 12:51
  • You'd probably have to dig into the oxmplayer source to find out. I doubt Java has any library for this, you could search around ("java linux framebuffer" turns up a few things, I don't know if any of them are appropriate to your needs). But I really don't see what advantage you gain from using the framebuffer; you'd be much better off using X. – goldilocks May 18 at 11:38
  • Yes, it use gst-omx to play videos :) – Julien Planchet May 29 at 6:42

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.