INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1] 2   Go Down

Author Topic: Docker Images for MC29  (Read 9677 times)

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Docker Images for MC29
« on: March 10, 2022, 05:05:22 pm »

First docker images for MC29.  :)

https://hub.docker.com/r/shiomax/jrivermc29

Make sure to backup your library first, as usual major version changes will not bring your stuff over automatically.
Logged

merman-corrode-portage

  • Recent member
  • *
  • Posts: 31
Re: Docker Images for MC29
« Reply #1 on: March 11, 2022, 04:58:39 pm »

Thanks heaps max, one of the most used containers on my system
Logged

Scobie

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 715
  • Looking Busy
Re: Docker Images for MC29
« Reply #2 on: March 11, 2022, 06:09:18 pm »

Many thanks Max, appreciated as always.

Side note anyone using QNAP Container station, the latest update breaks container images that are using bridged networking. Ticket has been logged.
Logged

HaWi

  • Citizen of the Universe
  • *****
  • Posts: 905
Re: Docker Images for MC29
« Reply #3 on: March 12, 2022, 10:14:07 am »

First docker images for MC29.  :)

https://hub.docker.com/r/shiomax/jrivermc29

Make sure to backup your library first, as usual major version changes will not bring your stuff over automatically.
Thanks Max,
Works like a charm on my Synology docker
Logged
rPi5/8GB, Debian 12 Bookworm on SSD | JRMark (32.0.36 64 bit): 2699
MacBookPro (2013), 2.6 GHz Quad-Core Intel Core i7, MacOS 11.7.17 | JRMark (32.0.36 64 bit): 3830
Mac Studio M2 Max, 64GB, 1TB SSD, macOS Sonoma 14.4.1 | JRMark (32.0.36 64 bit): 9468
Docker Container (shiomax) DS1819+ | JRMark (32.0.36 64 bit): 1430
JRemote 3.43
MO 4Media 1.5.7 | Marantz SR7007 (RSL 5.1) HDMI to MacBookPro

Afrosheen

  • Regular Member
  • Galactic Citizen
  • ****
  • Posts: 312
Re: Docker Images for MC29
« Reply #4 on: April 12, 2022, 01:53:32 pm »

I'm currently still using MC28, but I'm wondering if there's any consideration at being able to enable Last.fm from within the app?  It's the last thing remaining that I wish to regain.  I'm not sure if there's a backchannel way of doing it. 

Thanks as always for the continued support! 
Logged

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 71303
  • Where did I put my teeth?
Re: Docker Images for MC29
« Reply #5 on: April 12, 2022, 03:37:58 pm »

I thought Last.FM was working.  Try setting up login and password again.  It's in Options > Services.
Logged

Afrosheen

  • Regular Member
  • Galactic Citizen
  • ****
  • Posts: 312
Re: Docker Images for MC29
« Reply #6 on: April 25, 2022, 04:14:31 pm »

Thanks Jim, but unfortunately that route currently is unavailable for the dockerized version of MC. Here's a screenshot of what I see; clicking on "connect to Last.fm account" does nothing. 

Logged

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #7 on: April 26, 2022, 06:04:02 am »

Does it log anything in jriver or docker logs when you click the button?

Gonna have to check too, never used it.
Logged

Afrosheen

  • Regular Member
  • Galactic Citizen
  • ****
  • Posts: 312
Re: Docker Images for MC29
« Reply #8 on: April 27, 2022, 01:36:12 am »

Where would I find the log if I installed it via docker-compose? `
Logged

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #9 on: April 27, 2022, 04:01:42 am »

`docker ps` find the container you want logs for. Then `docker logs -f <name or id>` to show and follow the logs.
Logged

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #10 on: April 29, 2022, 03:08:38 pm »

Clicking on manage Last.fm account opens a browser window. There is no browser installed in the docker image. But even installing one does not help.

How does JRiver open the browser? Is it a gnome integration thing? There are no useful logs as far as I can see.
Logged

bob

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 13487
Re: Docker Images for MC29
« Reply #11 on: April 29, 2022, 04:06:35 pm »

Clicking on manage Last.fm account opens a browser window. There is no browser installed in the docker image. But even installing one does not help.

How does JRiver open the browser? Is it a gnome integration thing? There are no useful logs as far as I can see.
The external browser is opened via xdg-open part of the xdg-utils package (https://www.freedesktop.org/wiki/Software/xdg-utils/)
Also, to prevent blocking you should also install exo-utils.

On Id's we use firefox-esr.

xdg-utils underlies most of the desktop specific integration commands.

Your installation of MC should have required this.



Logged

Scobie

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 715
  • Looking Busy
Re: Docker Images for MC29
« Reply #12 on: April 29, 2022, 07:41:29 pm »

I'm running your Docker image and things such as YouTube and Google Images under Streaming launch the browser.
Logged

bob

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 13487
Re: Docker Images for MC29
« Reply #13 on: April 29, 2022, 08:09:42 pm »

I'm running your Docker image and things such as YouTube and Google Images under Streaming launch the browser.
If you are running a current build, those will open internally.
Some things like last.fm still look for an external browser.
Logged

Scobie

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 715
  • Looking Busy
Re: Docker Images for MC29
« Reply #14 on: April 29, 2022, 08:22:50 pm »

Ah ok, thanks Bob.
Logged

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #15 on: April 30, 2022, 08:17:49 am »

If you are running a current build, those will open internally.
Some things like last.fm still look for an external browser.

So, last.fm login will use the internal browser at some point too?

xdg-utils was already installed after installing firefox running this command it opens google in firefox
Code: [Select]
env HOME=/config s6-setuidgid $USER_ID:$GROUP_ID xdg-open https://www.google.at

MC in the container is running with that user/group and home set. So it should not need all that other stuff.

Still does not work though. MC logs this when pressing the button

Code: [Select]
55403550: 139639333480384: Reader: CLinuxINetReader::OpenRange: Start
55403550: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Opening URL, Position 0
55403550: 139639333480384: Reader: CLinuxINetReader::Close: Start
55403550: 139639333480384: Reader: CLinuxINetReader::Close: This 55996efe2f60, CleanClose 0
55403550: 139639333480384: Reader: CLinuxINetReader::Close: Finish (0 ms)
55403725: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Elapsed MS 168.3381, initial number of headers = 8, number of loops = 0
55403726: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Open Succeeded. Elapsed MS 169.3668, number of headers = 8, number of loops = 0
55403726: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Content-Length = 114, Content-Range = , Content-type = text/xml; charset=UTF-8, Content-encoding =
55403726: 139639333480384: Reader: CLinuxINetReader::OpenRange: Finish (175 ms)
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403726: 139639333480384: Reader: CLinuxINetReader::GetLength: Start
55403726: 139639333480384: Reader: CLinuxINetReader::GetLength: Current Length 114
55403726: 139639333480384: Reader: CLinuxINetReader::GetLength: Finish (0 ms)
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403726: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403727: 139639333480384: Reader: CLinuxINetReader::Cancel: Start
55403727: 139639333480384: Reader: CLinuxINetReader::Cancel: Finish (0 ms)
55403727: 139639333480384: Reader: CLinuxINetReader::Close: Start
55403727: 139639333480384: Reader: CLinuxINetReader::Close: This 55996efe2f60, CleanClose 5
55403727: 139639333480384: Reader: CLinuxINetReader::Close: Finish (0 ms)
55403730: 139639333480384: Reader: CLinuxINetReader::OpenRange: Start
55403730: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Opening URL, Position 0
55403730: 139639333480384: Reader: CLinuxINetReader::Close: Start
55403730: 139639333480384: Reader: CLinuxINetReader::Close: This 55996f025870, CleanClose 0
55403730: 139639333480384: Reader: CLinuxINetReader::Close: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Elapsed MS 170.3132, initial number of headers = 8, number of loops = 0
55403901: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Open Succeeded. Elapsed MS 170.3514, number of headers = 8, number of loops = 0
55403901: 139639333480384: Reader: CLinuxINetReader::OpenRange:  Content-Length = 151, Content-Range = , Content-type = text/xml; charset=UTF-8, Content-encoding =
55403901: 139639333480384: Reader: CLinuxINetReader::OpenRange: Finish (171 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::GetLength: Start
55403901: 139639333480384: Reader: CLinuxINetReader::GetLength: Current Length 151
55403901: 139639333480384: Reader: CLinuxINetReader::GetLength: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Start
55403901: 139639333480384: Reader: CLinuxINetReader::GetInfo: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::Cancel: Start
55403901: 139639333480384: Reader: CLinuxINetReader::Cancel: Finish (0 ms)
55403901: 139639333480384: Reader: CLinuxINetReader::Close: Start
55403901: 139639333480384: Reader: CLinuxINetReader::Close: This 55996f025870, CleanClose 5
55403901: 139639333480384: Reader: CLinuxINetReader::Close: Finish (0 ms)
Logged

bob

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 13487
Re: Docker Images for MC29
« Reply #16 on: April 30, 2022, 09:43:24 am »

MC doesn't use the internet reader for external browser access.
I don't know if the internal browser will work with this, I'll check.
In the meantime there still must be an issue with your setup, MC just opens the URL using xdg-open.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #17 on: May 01, 2022, 07:35:28 am »

Can this be swapped in to the MC 28 container or does a new one have to be created?
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #18 on: May 23, 2022, 03:07:04 pm »

Can this be swapped in to the MC 28 container or does a new one have to be created?

Not really sure why it does not work. Turning on privileged mode also does not make it work (I know chrome/chromium does use features for sandboxing by default that are not available to containers unless you run it in priviledged mode, or disable sandboxing). But firefox started without any additional flags, just not threw mc. Same thing with chromium (once privileged mode was enabled). While I donŽt know how to make it work youŽll be out of luck either way.

Currently working on a new container image too. Though, not for this reason. I want to get away from the current baseimage to just using debian to allow for more customization (as in having the ability to put jriver specific features into the web gui) and also better arm support. Will be some time until that is ready. No timeline whatsoever. Im not working for JRiver, so it gets worked on whenever I have time and feel like it. Hence developement is somewhat slow.

Images arenŽt really ready, yet. But if youŽre curious all the work is in those three repositories

- https://gitlab.com/shiomax/jrivermc-docker-next - The actual image
- https://gitlab.com/shiomax/jrivermc-docker-gui - A Vue JS Web GUI
- https://gitlab.com/shiomax/jrivermc-docker-api - C# Backend for Authentication and to be able to run code in the container savely instead of just being able to remote control MC

It does build, but there may be bugs here and there and many things are not done. Still need to work on
- Actually building the images automatically on amd64, armhf and arm64, like now but likely gonna need either 3 systems doing it or 3 vms and emulate arm, first wanted to use docker buildx, but it only builds images, it wonŽt run them (you cant even save the images locally that donŽt match your processor architecture). I do not think buildx is very helpful here after having tried it. Just blindly pushing images to a repo and hope for the best isnŽt very useful.
- Some automated testing, probably even more important now as I can no longer rely on the baseimage to work.
- Finish up the gui
- Figure out how to change resolution at runtime. The image is no longer using x11vnc, but tigervnc instead. I found it to be more responsive and supposedly it allows for dynamic resolution updates. But I donŽt know how to do that just yet. The plan is to ditch the environment variables for resolution and make it configureable in the webgui at runtime.
- Probably, need to work on User management some more (creating the user jriver will run as, adding groups, etc.)
- As first jriver integration im gonna do just the activation thing with .mjr files. Since, itŽs a bit complicated right now to get that done. WonŽt plan anything else for now.
- A "stateless mode" would be cool imo. Probably, not very helpful for most people. But the plan is to on startup copy the .jriver folder into /tmp and use that, if stateless mode is enabled. So you can set up a test environment that is effectively immutable (just make your media folders read only). Would be useful for developing stuff like pymcws or anything else really that tries to integrate with jriver. ItŽs not that hard to do and I think it would be nice to have, even though, as I said, most people wonŽt care about it.
- Refresh Tokens that I can store in local storage, currently it stores username and password in process only, so when you refresh the page or navigate to another url in the address bar you are logged out and get redirected to login. And it also sends username, password again whenever your current token expired and you want to do something that needs authentication, so itŽs not great either way.

Note that authentication is now handled by the C# api. I wrote a plugin for websockify to accept the tokens it generates. However, there is no form of authentication for direct VNC connections, but only for the webui and websockify. So, by default it should reject direct VNC connections that do not come from localhost. Something that I also still did not bother testing because well.. look at the list above. Right now it still may accept them, not sure. Either way, it is extremely likely that you wonŽt be able to use direct VNC connections with the new images anymore.

Most likely, when this is somewhat reasonably ready, ill keep the old image(s) in shiomax/jrivermcxx and create another one shiomax/jrivermc-next-xx. Kind of beta release thing. At some point the plan ofc is to replace it. But it will be sometime until then.
Logged

HaWi

  • Citizen of the Universe
  • *****
  • Posts: 905
Re: Docker Images for MC29
« Reply #19 on: May 24, 2022, 09:18:41 am »

Not really sure why it does not work. Turning on privileged mode also does not make it work (I know chrome/chromium does use features for sandboxing by default that are not available to containers unless you run it in priviledged mode, or disable sandboxing). But firefox started without any additional flags, just not threw mc. Same thing with chromium (once privileged mode was enabled). While I donŽt know how to make it work youŽll be out of luck either way.

Currently working on a new container image too. Though, not for this reason. I want to get away from the current baseimage to just using debian to allow for more customization (as in having the ability to put jriver specific features into the web gui) and also better arm support. Will be some time until that is ready. No timeline whatsoever. Im not working for JRiver, so it gets worked on whenever I have time and feel like it. Hence developement is somewhat slow.

Images arenŽt really ready, yet. But if youŽre curious all the work is in those three repositories

- https://gitlab.com/shiomax/jrivermc-docker-next - The actual image
- https://gitlab.com/shiomax/jrivermc-docker-gui - A Vue JS Web GUI
- https://gitlab.com/shiomax/jrivermc-docker-api - C# Backend for Authentication and to be able to run code in the container savely instead of just being able to remote control MC

It does build, but there may be bugs here and there and many things are not done. Still need to work on
- Actually building the images automatically on amd64, armhf and arm64, like now but likely gonna need either 3 systems doing it or 3 vms and emulate arm, first wanted to use docker buildx, but it only builds images, it wonŽt run them (you cant even save the images locally that donŽt match your processor architecture). I do not think buildx is very helpful here after having tried it. Just blindly pushing images to a repo and hope for the best isnŽt very useful.
- Some automated testing, probably even more important now as I can no longer rely on the baseimage to work.
- Finish up the gui
- Figure out how to change resolution at runtime. The image is no longer using x11vnc, but tigervnc instead. I found it to be more responsive and supposedly it allows for dynamic resolution updates. But I donŽt know how to do that just yet. The plan is to ditch the environment variables for resolution and make it configureable in the webgui at runtime.
- Probably, need to work on User management some more (creating the user jriver will run as, adding groups, etc.)
- As first jriver integration im gonna do just the activation thing with .mjr files. Since, itŽs a bit complicated right now to get that done. WonŽt plan anything else for now.
- A "stateless mode" would be cool imo. Probably, not very helpful for most people. But the plan is to on startup copy the .jriver folder into /tmp and use that, if stateless mode is enabled. So you can set up a test environment that is effectively immutable (just make your media folders read only). Would be useful for developing stuff like pymcws or anything else really that tries to integrate with jriver. ItŽs not that hard to do and I think it would be nice to have, even though, as I said, most people wonŽt care about it.
- Refresh Tokens that I can store in local storage, currently it stores username and password in process only, so when you refresh the page or navigate to another url in the address bar you are logged out and get redirected to login. And it also sends username, password again whenever your current token expired and you want to do something that needs authentication, so itŽs not great either way.

Note that authentication is now handled by the C# api. I wrote a plugin for websockify to accept the tokens it generates. However, there is no form of authentication for direct VNC connections, but only for the webui and websockify. So, by default it should reject direct VNC connections that do not come from localhost. Something that I also still did not bother testing because well.. look at the list above. Right now it still may accept them, not sure. Either way, it is extremely likely that you wonŽt be able to use direct VNC connections with the new images anymore.

Most likely, when this is somewhat reasonably ready, ill keep the old image(s) in shiomax/jrivermcxx and create another one shiomax/jrivermc-next-xx. Kind of beta release thing. At some point the plan ofc is to replace it. But it will be sometime until then.
Thank you so much, Max, for continuing to improve our docker MC. I'm surely not the only one who really appreciates this. I wish I had coding skills to help but sadly, I don't  :(.  Buy you a drink anytime, though.
Logged
rPi5/8GB, Debian 12 Bookworm on SSD | JRMark (32.0.36 64 bit): 2699
MacBookPro (2013), 2.6 GHz Quad-Core Intel Core i7, MacOS 11.7.17 | JRMark (32.0.36 64 bit): 3830
Mac Studio M2 Max, 64GB, 1TB SSD, macOS Sonoma 14.4.1 | JRMark (32.0.36 64 bit): 9468
Docker Container (shiomax) DS1819+ | JRMark (32.0.36 64 bit): 1430
JRemote 3.43
MO 4Media 1.5.7 | Marantz SR7007 (RSL 5.1) HDMI to MacBookPro

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 71303
  • Where did I put my teeth?
Re: Docker Images for MC29
« Reply #20 on: May 24, 2022, 11:26:12 am »

Thanks, Max!
Logged

Scobie

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 715
  • Looking Busy
Re: Docker Images for MC29
« Reply #21 on: June 05, 2022, 05:59:03 pm »

Side note anyone using QNAP Container station, the latest update breaks container images that are using bridged networking. Ticket has been logged.

Hi everyone, this has been fixed in the latest update from QNAP, Container Station 2.6.0.483. Took them a while, but better late than never.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #22 on: June 12, 2022, 05:54:30 pm »

Anyone know a way to make the GPU available to the MC docker for hardware encoding?
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #23 on: June 13, 2022, 03:01:18 pm »

Anyone know a way to make the GPU available to the MC docker for hardware encoding?

You already asked this once here
https://yabb.jriver.com/interact/index.php/topic,129803.msg918418.html#msg918418
and
https://yabb.jriver.com/interact/index.php/topic,133035.0.html

The answer is still the same as it was the first time around. There are changes needed in the container image, or you can install the required software yourself and add the group as required. Have you tried that?

Anyways try to create this script, you can call it anything you want such as 10-setup-intel-gpu.sh.

Code: [Select]
#!/usr/bin/with-contenv sh

apt-get update
apt-get install -y intel-media-va-driver vainfo

if [ -f /var/run/s6/container_environment/SUP_GROUP_IDS ]; then
    echo -n "," >> /var/run/s6/container_environment/SUP_GROUP_IDS
fi
echo -n render >> /var/run/s6/container_environment/SUP_GROUP_IDS

Then mount this script to '/etc/cont-init.d/10-setup-intel-gpu.sh'.

In theory this should install the intel gpu driver and add the group required, but I have no way to validate as I do not currently have a system with an intel gpu that i could use for this.

You also have to expose the GPU device to the container similarly how they do it here: https://forum.openmediavault.org/index.php?thread/38696-how-to-activate-intel-quick-sync-in-docker-jellyfin-handbrake/
As in add those two devices

Code: [Select]
/dev/dri/renderD128
/dev/dri/card0

You can validate if it worked with vainfo.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #24 on: June 13, 2022, 06:14:01 pm »

Sorry I asked multiple times.  Thanks for the info (again).
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #25 on: June 13, 2022, 07:21:59 pm »

Sorry I asked multiple times.  Thanks for the info (again).

It's fine, no worries. Try the thing though would be interesting if it works. If it does it's really not that much different than building it into the image would look like. Just that you now have to write and mount the script yourself.
Logged

bob

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 13487
Re: Docker Images for MC29
« Reply #26 on: June 13, 2022, 09:36:48 pm »

If you get that going, I'd like to give it a try.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #27 on: June 14, 2022, 02:42:50 pm »

Unfortunately, I'm not getting very far.  I have a Synology DS220+ which apparently does not have apt-get and you cannot seem to add it.  It might have the drivers already, but I don't know how to check?
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #28 on: June 14, 2022, 06:30:57 pm »

Unfortunately, I'm not getting very far.  I have a Synology DS220+ which apparently does not have apt-get and you cannot seem to add it.  It might have the drivers already, but I don't know how to check?

You donŽt do the apt-get on your synology. Create the script I posted on your synology. Then mount it to the path into the container (similar to how you mounted the music directory, just with a single file now). The intel drivers have to be installed inside the container not on the host. If you mount the script to '/etc/cont-init.d/10-setup-intel-gpu.sh' it will run on startup of the container. I think that is currently the best way you can install new software into the container because that means it will reinstall itself when you update the image.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #29 on: June 15, 2022, 06:39:54 pm »

It looks like the packages install fine with the script but MC fails to start with lines repeated in the logs (see attached screenshot).  It is not giving me much to go on.  I am using the following command line docker creation (... means a bunch of media volumes not shown):

Code: [Select]
sudo docker run --restart always -d --name JRMC29_Accel -v /volume1/docker/MC/config:/config -v /volume1/docker/MC/10-setup-intel-gpu.sh:/etc/cont-init.d/10-setup-intel-gpu.sh ... --device=/dev/dri/renderD128 --device=/dev/dri/card0 -e TZ=America/New_York --net=host --privileged shiomax/jrivermc29:latest


Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #30 on: June 16, 2022, 08:59:05 am »

It looks like the packages install fine with the script but MC fails to start with lines repeated in the logs (see attached screenshot).  It is not giving me much to go on.  I am using the following command line docker creation (... means a bunch of media volumes not shown):

Code: [Select]
sudo docker run --restart always -d --name JRMC29_Accel -v /volume1/docker/MC/config:/config -v /volume1/docker/MC/10-setup-intel-gpu.sh:/etc/cont-init.d/10-setup-intel-gpu.sh ... --device=/dev/dri/renderD128 --device=/dev/dri/card0 -e TZ=America/New_York --net=host --privileged shiomax/jrivermc29:latest

My bad adding the group names does not work those should be the IDs from the host.

Try this script. It adds all the group IDs from devices from /dev/dri. If for some reason it does not detect that you have an intel processor you can add "-e INSTALL_INTEL_GPU_DRIVER=1" and it should install it anyways. By default it tries to figure out if you have an intel CPU and based (if the devices can be found) it will install the driver. It's a bit more along the lines of what I'd be putting into the image (if it works).

Code: [Select]
#!/usr/bin/with-contenv sh

set -e # Exit immediately if a command exits with a non-zero status.
set -u # Treat unset variables as an error.

log() {
    echo "[cont-init.d] $(basename $0): $*"
}

add_device_groups() {
    # Add Groups for devices in /dev/dri/
    # NOTE: The devices can only be added if they belong to a group that is not the root user on the host.
    find /dev/dri/ -type c | while read DRI_DEV
    do
        DRI_GROUP="$(stat -c "%g" "$DRI_DEV")"

        [ "$DRI_GROUP" = "0" ] && { log "Device $DRI_DEV cannot be added, as it's owned by root."; continue; }

        log "Adding group $DRI_GROUP for device $DRI_DEV."

        if [ -f /var/run/s6/container_environment/SUP_GROUP_IDS ]; then
            echo -n "," >> /var/run/s6/container_environment/SUP_GROUP_IDS
        fi
        echo -n "$DRI_GROUP" >> /var/run/s6/container_environment/SUP_GROUP_IDS
    done
}

[ "$INSTALL_INTEL_GPU_DRIVER" = "0" ] && { log "Intel GPU setup is blocked by INSTALL_INTEL_GPU_DRIVER env variable."; exit 0; }

PROCESSOR_NAME=$(cat /proc/cpuinfo | grep "model name" | head -n 1 | cut -d':' -f2 | awk '{$1=$1};1')

if echo "$PROCESSOR_NAME" | grep -qiw "INTEL" || [ "$INSTALL_INTEL_GPU_DRIVER" = "1" ]; then
    log "Setting up Intel GPU driver. Detected processor: $PROCESSOR_NAME"

    [ ! -d "/dev/dri" ] && { log "Directory '/dev/dri' not exposed to container. Cannot setup intel gpu."; exit 0; }
    [ ! -e "/dev/dri/renderD128" ] && { log "Device '/dev/dri/renderD128' not exposed to container. Cannot setup intel gpu."; exit 0; }

    if [ $(dpkg-query -W -f='${Status}' intel-media-va-driver 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
        # Install intel driver
        log "Installing intel-media-va-driver..."
        apt-get update
        apt-get install -y intel-media-va-driver
    else
        log "intel-media-va-driver is already installed."
    fi

    add_device_groups
fi

Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #31 on: June 16, 2022, 07:54:14 pm »

It started up alright after I added the INSTALL_INTEL_GPU_DRIVER=1, but I have some odd permissions issues now on some of my main media directories?  Do I need to run the docker creation command from a system account or something?  I cannot see any differences in permissions with directories that are accessible.
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #32 on: June 16, 2022, 08:30:13 pm »

It started up alright after I added the INSTALL_INTEL_GPU_DRIVER=1, but I have some odd permissions issues now on some of my main media directories?  Do I need to run the docker creation command from a system account or something?  I cannot see any differences in permissions with directories that are accessible.

Did you put USER_ID and GROUP_ID environment variables? You probably already had a docker container before or not? The script should not make any difference in that regard. You can find out which IDs you need to use by running "ls -la" on your host against the directories and then "id <username>" to find out the numeric id. Only USER_ID is usually sufficient if you have all the files owned by the same user. There is no way I can automatically figure that out. The default is 1000 as thats the first user that you end up with if you install >insert any linux distro< pretty much.

The user you run the docker command as really does not matter as the docker deamon runs as root and that's what ultimately creates the container the CLI just talks to that thing.

Because you had to set INSTALL_INTEL_GPU_DRIVER to 1. What did it print as processor name on startup?

Also does it ever print something along these lines "Device $DRI_DEV cannot be added, as it's owned by root." ever?
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #33 on: June 16, 2022, 09:37:54 pm »

Also does it ever print something along these lines "Device $DRI_DEV cannot be added, as it's owned by root." ever?

I got the permissions sorted by using the user id and group from the working container.

But I get these lines in the log:

[cont-init.d] new-intel-setup.sh: Adding group 937 for device /dev/dri/renderD128.
[cont-init.d] new-intel-setup.sh: Device /dev/dri/card0 cannot be added, as it's owned by root.
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

bob

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 13487
Re: Docker Images for MC29
« Reply #34 on: June 17, 2022, 09:43:16 am »

I got the permissions sorted by using the user id and group from the working container.

But I get these lines in the log:

[cont-init.d] new-intel-setup.sh: Adding group 937 for device /dev/dri/renderD128.
[cont-init.d] new-intel-setup.sh: Device /dev/dri/card0 cannot be added, as it's owned by root.
Your user probably needs to be added to the video and render groups.

Code: [Select]
ls -l /dev/dri*
total 0
drwxr-xr-x 2 root root         80 May 12 20:00 by-path
crw-rw---- 1 root video  226,   0 Jun 15 09:34 card0
crw-rw---- 1 root render 226, 128 May 12 20:00 renderD128
Logged

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #35 on: June 17, 2022, 10:50:14 am »

I got the permissions sorted by using the user id and group from the working container.

But I get these lines in the log:

[cont-init.d] new-intel-setup.sh: Adding group 937 for device /dev/dri/renderD128.
[cont-init.d] new-intel-setup.sh: Device /dev/dri/card0 cannot be added, as it's owned by root.

This means /dev/dri/card0 is owned by root:root on your host. Run the following on your host.

Code: [Select]
sudo groupadd video
sudo chown :video /dev/dri/card0

The first command may fail if the group already exists, in which case thats fine just do the chown. The file/device is owned by group video for me and for bob too. Not sure why it isn't for you.

Then restart the container.

Quote from: bob
Your user probably needs to be added to the video and render groups.

That should work too, but should not be necessary. If /dev/dri/card0 is owned by any group at all on the host the script will add that group to the list of group ids that the container will use to start jriver as. So it should not be required for the user to belong to those groups on the host.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #36 on: June 17, 2022, 02:05:56 pm »

This is what I get.  There is not even a render group and I cannot do a groupadd.

Code: [Select]
$ ls -l /dev/dri*
total 0
crw------- 1 root root        226,   0 Jun  7 15:03 card0
crw-rw---- 1 root videodriver 226, 128 Jun  7 15:03 renderD128

Code: [Select]
$ sudo groupadd video
sudo: groupadd: command not found
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #37 on: June 17, 2022, 02:26:26 pm »

This is what I get.  There is not even a render group and I cannot do a groupadd.

Code: [Select]
$ ls -l /dev/dri*
total 0
crw------- 1 root root        226,   0 Jun  7 15:03 card0
crw-rw---- 1 root videodriver 226, 128 Jun  7 15:03 renderD128

Code: [Select]
$ sudo groupadd video
sudo: groupadd: command not found

Looks like synology has their own utilities to manage groups and such.

https://global.download.synology.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_Administration_CLI_Guide.pdf

There is a section 'Managing local groups — synogroup'. Probably synogroup --add video is what you want to add a group? Bit confused by that it also said that the group will get added to a user. Maybe you can do that in the GUI somewhere too.

You can also just do this if you can't figure out how to add another group
Code: [Select]
chown :videodriver /dev/dri/card0

It does not matter what group it is for the container, it just has to belong to some group. Don't touch the group on /dev/dri/renderD128 it might be necessariy to be that group for something else to work.

Although, thinking about it I did not check for duplicate groups... They just happened to be different groups on my system. It might crash on startup if the same group appears twice right now gotta try that.
EDIT: Does not crash, but still gonna prevent it from adding the same group twice anyways.

Here is the revised script. it now no longer should be able to add the same group multiple times.

Code: [Select]
#!/usr/bin/with-contenv sh

set -e # Exit immediately if a command exits with a non-zero status.
set -u # Treat unset variables as an error.

log() {
    echo "[cont-init.d] $(basename $0): $*"
}

add_device_groups() {
    # Add Groups for devices in /dev/dri/
    # NOTE: The devices can only be added if they belong to a group that is not the root user on the host.
    find /dev/dri/ -type c | while read DRI_DEV
    do
        DRI_GROUP="$(stat -c "%g" "$DRI_DEV")"

        [ "$DRI_GROUP" = "0" ] && { log "Device $DRI_DEV cannot be added, as it's owned by root."; continue; }

        if [ -f /var/run/s6/container_environment/SUP_GROUP_IDS ]; then
            if cat /var/run/s6/container_environment/SUP_GROUP_IDS | grep -q "\(^\|,\)$DRI_GROUP\($\|,\)"; then
                log "Group $DRI_GROUP for device $DRI_DEV already exists. Will not add duplicates."
                continue;
            fi

            echo -n "," >> /var/run/s6/container_environment/SUP_GROUP_IDS
        fi

        log "Adding group $DRI_GROUP for device $DRI_DEV."
        echo -n "$DRI_GROUP" >> /var/run/s6/container_environment/SUP_GROUP_IDS
    done
}

[ "$INSTALL_INTEL_GPU_DRIVER" = "0" ] && { log "Intel GPU setup is blocked by INSTALL_INTEL_GPU_DRIVER env variable."; exit 0; }

PROCESSOR_NAME=$(cat /proc/cpuinfo | grep "model name" | head -n 1 | cut -d':' -f2 | awk '{$1=$1};1')

if echo "$PROCESSOR_NAME" | grep -qiw "INTEL" || [ "$INSTALL_INTEL_GPU_DRIVER" = "1" ]; then
    log "Setting up Intel GPU driver. Detected processor: $PROCESSOR_NAME"

    [ ! -d "/dev/dri" ] && { log "Directory '/dev/dri' not exposed to container. Cannot setup intel gpu."; exit 0; }
    [ ! -e "/dev/dri/renderD128" ] && { log "Device '/dev/dri/renderD128' not exposed to container. Cannot setup intel gpu."; exit 0; }

    if [ $(dpkg-query -W -f='${Status}' intel-media-va-driver 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
        # Install intel driver
        log "Installing intel-media-va-driver..."
        apt-get update
        apt-get install -y intel-media-va-driver
    else
        log "intel-media-va-driver is already installed."
    fi

    add_device_groups
fi
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #38 on: June 17, 2022, 03:21:12 pm »

Here is what I have now, but my CPU is still being pegged so Hardware Acceleration is not working.  Do I have to add some permissions to card0?

Code: [Select]
$ ls -l /dev/dri*
total 0
crw------- 1 root videodriver 226,   0 Jun  7 15:03 card0
crw-rw---- 1 root videodriver 226, 128 Jun  7 15:03 renderD128
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #39 on: June 17, 2022, 03:39:00 pm »

Here is what I have now, but my CPU is still being pegged so Hardware Acceleration is not working.  Do I have to add some permissions to card0?

Code: [Select]
$ ls -l /dev/dri*
total 0
crw------- 1 root videodriver 226,   0 Jun  7 15:03 card0
crw-rw---- 1 root videodriver 226, 128 Jun  7 15:03 renderD128

card 0 does not have read/write permissions for groups.

Code: [Select]
sudo chmod 660 /dev/dri/card0

The permissions of both files should look the same after running this command.
You also have to enable hardware acceleration in the MC options.

If it still does not work after that, you could try this image: https://hub.docker.com/r/jlesage/handbrake

It's based on the same baseimage and also has quicksync support. Just to cross check wether it's this image or your setup. There is very little setup instructions on dockerhub when you click on the github link youll see more including how to set that up with intel gpus. (Github link: https://github.com/jlesage/docker-handbrake)

I've also tried with NVIDIA, but so far little luck with that. I can run nvidia-smi and it will list the gpu / driver version / cuda version and everything, but it's not used by MC or gpu stresstest programs. Might be that it's my setup and it would actually work. Fedora is not really supported by the nvidia container toolkit. I just used the centos repos.

A good way to test if the GPU can be used is to log into the container and run glxgears
Code: [Select]
docker exec -it <container name or id> /bin/bash
apt update
apt install mesa-utils
__GL_SYNC_TO_VBLANK=0 vblank_mode=0 glxgears

This should utilize your GPU 100% when it's working. You also end up running it as root this way so permissions on those device files don't matter.
Logged

cncb

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2909
Re: Docker Images for MC29
« Reply #40 on: June 17, 2022, 03:48:50 pm »

Unfortunately, changing the permissions did not make a difference.

I really appreciate your help and patience, but I think I will give up for now.
Logged
-Craig    MO 4Media remote and player:  Android/TV/Auto | iOS | Windows 10/UWP

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #41 on: June 17, 2022, 04:04:08 pm »

Unfortunately, changing the permissions did not make a difference.

I really appreciate your help and patience, but I think I will give up for now.

Yeah, i'll try to make it work for nvidia cards. Well see maybe that fixes that for intel too, but I have my doubts because the setup is quite different.
Logged

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #42 on: June 19, 2022, 09:56:01 am »

So the GPU is useable in the container, but depends on what you are doing and wether or not all the required libraries are installed.
MC still does not use it. I did install jellyfins ffmpeg version for testing purposes as the one that gets installed from the debian repos by default does not include nvenc (not really worth it compiling my own at this point).

When I playback a h264 1080p video on my host directly it uses almost 0% cpu.
When I play the same file within the container CPU utilization is at around 30% (however I do see the MC process popping up in nvidia-smi). It does not use the GPU for decoding.

In the MC logs it also sais that it failed to find GPU 0.

Code: [Select]
1789472: 140125191772096: Playback: CJRVideoRendererCore::PLLog: Probing for vulkan devices:
1789477: 140125191772096: Playback: CJRVideoRendererCore::PLLog:     GPU 0: llvmpipe (LLVM 11.0.1, 256 bits) (software)
1789477: 140125191772096: Playback: CJRVideoRendererCore::PLLog:            uuid: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

How do you determine that there is a GPU available? The detection might just not work for however nvidia-container-toolkit manages to make the GPU available. I copied this random ffmpeg command from the nvidia docs (no idea what it does tbh, but it does utilize the gpu).

Code: [Select]
ffmpeg -y -vsync 0 -c:v h264_cuvid -i /data/movies/Aquaman\ \(2018\).mkv /tmp/output.yuv

When I run this it reports around 30-50% Video Engine Utilization in NVIDIA settings.

I attached the ffmpeg configuration of my host (where its working), the current container (might also be missing something required for intel hardware acceleration not sure at this point), the jellyfin ffmpeg version and logs from playing back a video on the host and the container (with jellyfin ffmpeg).

If you want I can build you the image with jellyfins ffmpeg version and instruction how to setup nvidia gpu for testing this. Im not sure at this point that there is anything I can do because as far as I can tell the GPU is available and useable, but MC will refuse to use it.
Logged

Hendrik

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 10698
Re: Docker Images for MC29
« Reply #43 on: June 19, 2022, 11:17:12 am »

According to your container log, it actually uses NVDEC for decoding, but the video rendering is using a software device - which would probably be rather slow. So it might be missing proper access to either Vulkan or OpenGL.
Logged
~ nevcairiel
~ Author of LAV Filters

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #44 on: June 19, 2022, 01:12:55 pm »

According to your container log, it actually uses NVDEC for decoding, but the video rendering is using a software device - which would probably be rather slow. So it might be missing proper access to either Vulkan or OpenGL.

Oh yeah.... I suppose if I play 1080p at it's original resolution I won't see much decoding action regardless. That VNC can use the GPU is not all that important as long as it can do it over media network. Sure it would be nice for general gui responsiveness, but nobody is realistically gonna watch a movie over VNC.

Seems like thats on the right track then. I tried to stream from it at 480p. Still missing some codecs. The ffmpeg version i have only has these (for h264)

Code: [Select]
VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
 V..... h264_v4l2m2m         V4L2 mem2mem H.264 decoder wrapper (codec h264)
 V....D h264_qsv             H264 video (Intel Quick Sync Video acceleration) (codec h264)
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)

Code: [Select]
0009247: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] Loaded Nvenc version 11.1
0009247: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] Nvenc initialized successfully
0009247: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] The selected preset is deprecated. Use p1 to p7 + -tune or fast/medium/slow.
0009260: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] 1 CUDA capable devices found
0009261: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] [ GPU #0 - < NVIDIA GeForce GTX 1070 > has Compute SM 6.1 ]
0009297: 140479026939648: Sharing Plugins: CUDPSocketReader::Accept: Finish (74 ms)
0009297: 140478364452608: Sharing Plugins: CHTTPListenerWorker::HandleConnection: Start
0009297: 140478364452608: Sharing Plugins: CHTTPListenerWorker::HandleRequest: UDP: 172.17.0.1: : http://127.0.0.1
0009297: 140478364452608: Sharing Plugins: CHTTPListenerWorker::HandleConnection: Finish (0 ms)
0009307: 140479026939648: Sharing Plugins: CUDPSocketReader::Accept: Start
0009307: 140479026939648: Sharing Plugins: CUDPSocketReader::Accept: Description: CListenerBase::CListenerBase [UDP]
0009314: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] supports NVENC
0009314: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] Specified rc mode is deprecated.
0009314: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] Use -rc constqp/cbr/vbr, -tune and -multipass instead.
0009314: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] Lookahead enabled: depth 8, scenecut enabled, B-adapt enabled.
0009316: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] InitializeEncoder failed: invalid param (8): Presets P1 to P7 are not supported with older 2 Pass RC Modes(CBR_HQ, VBR_HQ) and cbr lowdelay.
Enable NV_ENC_RC_PARAMS::multiPass flag for two pass encoding a
0009344: 140479555417856: Encoders: CFFmpegTranscoder::AVLog: [h264_nvenc @ 00007FC3E0137880] Nvenc unloaded
0009344: 140479555417856: Encoders: CFFmpegTranscoder::CreateVideoStream: Opening codec 'h264_nvenc' failed

Do you have a list of codecs that MC will attempt to use? So I can make sure they are all there and not just the once I happened to run across by chance? Or is this a possibly all of them situation and you don't know until its needed?
Logged

Hendrik

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 10698
Re: Docker Images for MC29
« Reply #45 on: June 20, 2022, 01:06:36 am »

It seems like the encoder will need some fixes for newer drivers, I'll get that into the next update.

We support encoding h264 in hardware, and decoding should cover basically all modern consumer codecs. mpeg1/2, h264, hevc, vp9, and av1, availability may depend on your hardware.
Logged
~ nevcairiel
~ Author of LAV Filters

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #46 on: June 29, 2022, 01:38:29 pm »

It seems like the encoder will need some fixes for newer drivers, I'll get that into the next update.

We support encoding h264 in hardware, and decoding should cover basically all modern consumer codecs. mpeg1/2, h264, hevc, vp9, and av1, availability may depend on your hardware.

Seems to be working now. I'll come back to this a bit later though. Kinda want to get the new images "workable" first.

I'm a bit confused about the ffmpeg thing. Because the version of ffmpeg that is currently installed from the debian repository does not include any nvidia codecs at all. But it still seems to work without them anyways. Going back to earlier releases of MC there are also patchnotes that note that ffmpeg has been updated to version x.xx. Suggesting that MC ships with it's own ffmpeg. Yet, if I do not install ffmpeg it does not work at all. I guess it might download it like chromium, but misses some dependencies to run it?
Logged

Hendrik

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 10698
Re: Docker Images for MC29
« Reply #47 on: June 29, 2022, 01:49:42 pm »

We ship our own FFmpeg, indeed. It has some (common) system-level dependencies like gnutls and libva1, but we should have documented those in the debian package I think. Its likely those get pulled in when you install the system-level FFmpeg.
Ideally you could run "ldd" on our FFmpeg libraries to see if anything system-level is missing that either we need to put into the debian control file, or you need to add to the image.
Logged
~ nevcairiel
~ Author of LAV Filters

HaWi

  • Citizen of the Universe
  • *****
  • Posts: 905
Re: Docker Images for MC29
« Reply #48 on: July 03, 2022, 12:30:51 pm »

Just updated my docker MC29 via Portainer, and pulling the "latest" image I got 29.0.64 when I was expecting 29.0.66. Did I do something wrong?
Many thanks for any help
Hans
Logged
rPi5/8GB, Debian 12 Bookworm on SSD | JRMark (32.0.36 64 bit): 2699
MacBookPro (2013), 2.6 GHz Quad-Core Intel Core i7, MacOS 11.7.17 | JRMark (32.0.36 64 bit): 3830
Mac Studio M2 Max, 64GB, 1TB SSD, macOS Sonoma 14.4.1 | JRMark (32.0.36 64 bit): 9468
Docker Container (shiomax) DS1819+ | JRMark (32.0.36 64 bit): 1430
JRemote 3.43
MO 4Media 1.5.7 | Marantz SR7007 (RSL 5.1) HDMI to MacBookPro

max096

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 358
Re: Docker Images for MC29
« Reply #49 on: July 03, 2022, 02:45:47 pm »

Just updated my docker MC29 via Portainer, and pulling the "latest" image I got 29.0.64 when I was expecting 29.0.66. Did I do something wrong?
Many thanks for any help
Hans

Not sure whats up but latest still gives you 29.0.64. Either it's was not in the MC repos (but I don't think so because it ran yesterday). Having similar issues with the new image when I push a new image it still seems to give me an image from 2 days ago when pulling it afterwards.
Logged
Pages: [1] 2   Go Up