MagicMirror² v2.14.0 is available! For more information about this release, check out this topic.

Ghost Overlay / OMXPlayerTransparency

  • Hey all,

    I’m trying to find a better solution for a halloween “ghost overlay”. My current setup is activated by modifying the MMM-PIR-Sensor node_helper to exec(“omxplayer /Videos/Ghost.m4v” --alpha 100") when the screen is activated. This works… BUT… obviously dims the other modules since the video is on top. Any thoughts on how to better show a full-screen M4V without losing module brightness? Any successes with transparent backgrounds overlaid ON-TOP of videos?

    Video of current setup attached.

    Thanks ahead of time.

  • Sorry it took so long to post the image. This is what I’m trying to do; however, the Black background of the black/white “Ghost” video, dims all of the modules even at alpha 100.

    Any help would be appreciated,

    Larger Video

  • Idk if the player supports video with alpha, but you should try to use a video including alpha channel.
    It can be hard to find so i created a test-video that you can try in the most common codecs that can handle alpha-channel:
    Cineform /w Alpha:

    DynxHD /w Alpha:

    Proress4444 including Alpha (I think this one wont work, but worth a shot):

    If it works and you need to isolate a black video and you are not sitting on any video-editing video just let me know and i can look at it.

  • @Nystro0m No luck so far. I appreciate you taking the time with the test videos. Looks like OMXPlayer’s layer and alpha functionality can’t recognize an actual alpha layer. I think OMXPlayer treats alpha as a generic term for the player’s overall transparency. I’ll do a little more digging. In the meantime, I’ve dropped the transparency to about 80/255 (31%-ish), and it’s a good enough balance between “ghostly” and keeping the modules functional.

  • @Reotch2 How to make this module and Ghost Video where is come from? Thanks for answer.

  • Please give some more detail on how you put this together! I have tried to do it for quite a while but the video is always choppy and does not look good. And what hardware are you using, I assumed my Raspberry Pi was just too slow for video…
    And can you share the Ghost video or let me know where you got it?

  • @Reotch2 Have you tried to make the position of the module behind the modules, or play it as a background? So the other modules is on top?
    In that case you dont need any alpha.
    Position the module with OMXPlayer:

    Also this module may help with that, if you could trigger the module with PIR:

  • @nobita @jasondreher So… I’m not what they call a “coder”… haha. I wish I knew how to write javascript, but the best I can do is re-purpose everyone else’s modules. Put simply, I looked into using an I-Frame, or MMM-Podcast, but had trouble referencing a local video file. After having NO success adding a video player module, I decided to run a transparent full-screen video on–top of the magic mirror page, which actually worked better than I hoped. Although the black portions of the video dim the modules slightly, the way the white portions interact with the modules beneath it adds a certain cool-factor.

    After some trial and error… I did the following:

    1. Bought the “Ghostly Apparitions” DVD at a local thrift shop. Amazon link
    2. Combined the highest resolution vertical scenes into a single m4v.
    3. Edited the node_player.js for MMM-PIR-Sensor to include omxplayer. This ensures that when the screen is activated, the video is played with the appropriate flags.
      exec("/opt/vc/bin/tvservice --preferred && chvt 6 && chvt 7", null); exec(“omxplayer ~/Videos/Ghost.m4v --alpha 80”)
    4. Alternatively, you can just modify the start script to continuously loop the ghost video of your choosing.

    If you need any further details, feel free to ask. But again, I’m a tinkerer… and I’m sure there are 1000 better ways to do this, but this works for me.


  • @Nystro0m I’ll definitely give this a shot. I’m using a local file and previously had issues because of JS sandboxing. Not sure how I missed this module, this may be what I’ve been looking for. I’ll report back if it works.

  • This post is deleted!

Log in to reply