clarkemw / script.moonlight-embedded-launcher

Launcher for moonlight-embedded on LibreELEC Raspberry Pi systems
MIT License
21 stars 6 forks source link

Question: OSMC support #11

Open kurac338 opened 2 years ago

kurac338 commented 2 years ago

Hi, is there any plan to support OSMC distro?

It is very similar to LibreELEC, except that there is no Addons->Services->Docker. But we can install docker-ce manually using apt package manager.

Also one key difference is that the GUI process is called 'mediacenter' instead of 'kodi' (your reference, osmc reference)

Of the top of my head, I believe everything else should be compatible. I would be willing to test the OSMC version. P.S. good work, keep it up :+1:

kurac338 commented 2 years ago

Ok, so I did some testing today with the v1.0 launcher on the latest Matrix OSMC distro. I needed to do the following to get somewhere: 1) Install docker-ce, avahi-utils 2) In addon.xml edit references of xbmc.kodi (use value 3.0.0, Python 3) and remove docker addon service attribute (non existent on OSMC) 3) Wrap 3 attributes into str() conversion in your Python scripts since they break on Python 3 with "expected string got object". One was inside of the if condition for "_stop_oldcontainers()". Another in the avahi response evaluation of nvstream.tcp and the last one in gamelist[gameIdx] evaulation of selected game. Sorry I did not memorize class references. Hope this was descriptive enough. 4) Replace references of "service kodi (stop|start)" with "service mediacenter (stop|start)".

Then I was able to select the desired game and it would initialize the container. But shortly afterwards the container would exit and the "kodi" service (GUI) would reappear. Unfortunately I was not able to fetch the container logs before its crash.

If I run your container manually and pass the "stream" command, it successfully connects to my PC and starts streaming, but I could not see that on the TV since it was still displaying the kodi GUI.

I hope I was able to contribute at least a little. I would love to see this addon, since Kodi Matrix broke the "Luna Moonlight" launcher I was previously using. And that addon was too complex & time consuming for me to debug.

clarkemw commented 2 years ago

Hello, Thanks for working through the mods required to make this work on OSMC. I would be open to supporting OSMC if we can figure out how to get it fully operational. I went through some similar steps in an attempt to port this plugin from LibreELEC 9 to LibreELEC 10 but I got stuck with similar behavior to what you are describing. The streaming session launches on the Windows machine but nothing gets displayed on the Kodi device. Can you try the following and let me know what you get?

  1. Manually stop Kodi with systemctl stop mediacenter
  2. Manually launch the container with stream -verbose as the input arguments. Hopefully it will display something on the screen but if it doesn't can you describe any error messages you get in the terminal? My attempts to do this with LibreELEC 10 seem to run without errors but I don't get any display.
kurac338 commented 2 years ago

I did some thinking yesterday. Kodi 20 (Matrix) versions have issues with video playback in general, since there were some major changes to the video stack. They have removed support for the MAMAL player, which enabled hardware decoding for various formats, and if I'm not mistaken moonlight-embedded depends on it, hence no video.

clarkemw commented 2 years ago

Interesting we might be broken until moonlight-embedded adds support for the new video stack. I'm not at all familiar with the inner workings of that code. In the meantime you might have some luck using this plugin instead: https://github.com/veldenb/plugin.program.moonlight-qt

It was inspired by an earlier version of my plugin but uses moonlight-qt. It's a bit more heavyweight than the embedded version but you should be OK with a Pi 4 or similar. They take a unique approach and build moonlight-qt inside the Docker container, extract the binaries to the baseline system and discard the Docker container to run natively. I'm guessing you will need to make similar changes to get it working on OSMC.