Jump to content


Photo

[HOWTO] VAAPI transcoding inside LXC container

vaapi lxc transcoding

  • Please log in to reply
21 replies to this topic

#1 plexman OFFLINE  

plexman

    Advanced Member

  • Members
  • 340 posts
  • Local time: 08:59 AM
  • LocationSpain

Posted 05 August 2017 - 12:53 PM

I always had my server's services such as Emby running in bare-metal because I did't like the performance loss in VM/Hypervisor, etc (I know it's little, but it's something). But it's true that having all services in the same OS is a pain in the a** because if you need to change or reboot something, everything goes down. In addition I need VAAPI transcoding for my server so I needed direct access to iGPU through /dev/dri/renderD128 device. After reading a lot about LXC containers and the benefits of isolation and bare-metal peformance they have, I decided to change and go containerize everything. So installed Debian Strech in the server with LXC 2.0.8 (only available in testing repositories) and created an Ubuntu 16.04 container just for the Emby server.

 

In order to get VAAPI working inside the Emby container, you need to "pass" the required device (/dev/dri/renderD128) from the host to the container and have all drivers installed in the host system. So let's do it. (I assume you already created a container and Emby and ffmpeg are installed in it) (All commands are ran in the host, not inside the container)

 

  • Stop your container if it's running:
lxc-stop -n containername
  • Get the required drivers in the host (my server is a Skylake i5-6600) by installing vainfo (it will automatically install intel-i915-driver, etc.):
apt install vainfo
  • Check that vainfo outputs something like this (run vainfo in the command line):
error: can't connect to X server!
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva )
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.8.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
  • Now we have to pass the /dev/dri/renderD128 device (which is in charge of VAAPI transcoding) to the container. To do so, we'll write a little script who creates the renderD128 device inside the container everytime this one is started. For that we need to know what kind of device we have and it's minor/major numers, so we run:
ls -l /dev/dri

Output:

total 0
drwxr-xr-x 2 root root        80 ago  5 17:18 by-path
crw-rw---- 1 root video 226,   0 ago  5 17:18 card0
crw-rw---- 1 root video 226, 128 ago  5 17:18 renderD128

The info we need is: the letter "c" (in crw-rw----) meaning it's a character device and "226 128" which are the major/minor numbers of the device. Let's create the script then, it will be inside your container's directory but you can place it anywhere changing the paths obviously. Run:

nano /var/lib/lxc/containername/autodev

And copy inside:

#!/bin/bash

cd ${LXC_ROOTFS_MOUNT}/dev
mkdir dri
mknod -m 0666 dri/renderD128 c 226 128

Save, exit and give it privileges with:

chmod +x /var/lib/lxc/containername/autodev
  • Perfect, now we have to grant container's access to the device and tell him to run the script when the container starts. To do so, you have to edit the container's configuration file. Run:
nano /var/lib/lxc/containername/config

And add these two lines at the en of the file:

lxc.cgroup.devices.allow = c 226:128 rwm
lxc.hook.autodev = /var/lib/lxc/containername/autodev

The first line will grant container's access to the device and the second line will run the script which will create the device inside the container.

 

That's all! Now you you can start your container again, attach to it, check the /dev/dri directory and you'll find the renderD128 device inside of it. You can now tell Emby to use it as if you where in a host machine!

 

Enjoy LXC!

 

Referece: https://blog.cavebea...-proxmoxve-4-1/


  • Jdiesel and thefloppydisk like this

#2 Jdiesel OFFLINE  

Jdiesel

    Advanced Member

  • Members
  • 2936 posts
  • Local time: 12:59 AM
  • LocationRegina, SK

Posted 05 August 2017 - 01:04 PM

Very cool
  • plexman likes this

#3 mastrmind11 OFFLINE  

mastrmind11

    Advanced Member

  • Members
  • 3149 posts
  • Local time: 02:59 AM
  • LocationLong Island, NY

Posted 07 August 2017 - 07:29 AM

well done!


  • plexman likes this

#4 Luke OFFLINE  

Luke

    System Architect

  • Administrators
  • 157225 posts
  • Local time: 02:59 AM

Posted 07 August 2017 - 02:13 PM

Great work !


  • plexman likes this

#5 plexman OFFLINE  

plexman

    Advanced Member

  • Members
  • 340 posts
  • Local time: 08:59 AM
  • LocationSpain

Posted 08 August 2017 - 02:35 PM

Thanks to all!!

#6 angusleung OFFLINE  

angusleung

    Advanced Member

  • Members
  • 30 posts
  • Local time: 02:59 PM

Posted 03 October 2017 - 04:20 AM

Great!!

 

I am using Proxmox 5.0, by following this post I could now enable VAAPI transcoding in LXC container.

 

The only difference is /var/lib/lxc/containername/config will be rewrited overtime when it boot.

In stead of changing /var/lib/lxc/containername/config. In Proxmox, I have changed the following file

 

/etc/pve/lxc/containername.conf


Edited by angusleung, 03 October 2017 - 04:21 AM.


#7 thefloppydisk OFFLINE  

thefloppydisk

    Member

  • Members
  • 12 posts
  • Local time: 01:59 AM

Posted 03 October 2017 - 12:58 PM

I use LXD in Ubuntu 16.04 instead of LXC, but this gave me a great start to get it working on my end. Here's what I did to get it working.
 
  • Update to stable LXD PPA if you you just installed via APT, LXD needs be newer than 2.5 to work
sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable

sudo apt-get update
  • Get the required drivers in the host by installing vainfo (it will automatically install intel-i915-driver, etc.):
apt install vainfo
  • Verify vainfo is correct
  • Pass GPU into the container
sudo lxc config device add <emby-container-name> gpu gpu
  • Add Emby to the Video group
sudo usermod -aG video emby
  • Change permissions to assign GPU to video group (if necessary)
sudo chmod :video /dev/dri/*
  • In Emby, point VAAPI Hardware Transcoding to /dev/dri/<device>, for me and my Intel GPU, /dev/dri/renderD128

Edited by thefloppydisk, 03 October 2017 - 01:03 PM.

  • plexman likes this

#8 opticum OFFLINE  

opticum

    Newbie

  • Members
  • 3 posts
  • Local time: 08:59 AM

Posted 04 October 2017 - 01:44 PM

for me i had to add this to the .conf of the ubuntu 16.04 lxc container on Proxmox 5

 

 

lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file

lxc.mount.entry: /dev/dri/controlD64 dev/dri/controlD64 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.cgroup.devices.allow: c 226:* rwm

 

than add permission inside the container

 

 

sudo usermod -aG video emby

 

is it normal that a file will play with 100% ffmpeg (not sure if this is a lxc specific thing) usage for a couple of minutes? (2-3 minutes), after that i can skip through the video and cpu usage wont go up again. 


Edited by opticum, 04 October 2017 - 02:03 PM.


#9 thefloppydisk OFFLINE  

thefloppydisk

    Member

  • Members
  • 12 posts
  • Local time: 01:59 AM

Posted 04 October 2017 - 02:05 PM

@opticum, I have the same FFMPEG spike in my LXD container, but it uses almost no CPU when I'm looking at top compared to software transcoding.



#10 opticum OFFLINE  

opticum

    Newbie

  • Members
  • 3 posts
  • Local time: 08:59 AM

Posted 04 October 2017 - 02:10 PM

@thefloppydisk: testing various files right now (coming from plex), and it seems to vary alot. HEVC seems to use alot of cpu constantly. (using chrome browser for playback), even though it says "direct play" and no transcoding, ffmpeg will eat 50-100% CPU.



#11 thefloppydisk OFFLINE  

thefloppydisk

    Member

  • Members
  • 12 posts
  • Local time: 01:59 AM

Posted 04 October 2017 - 02:17 PM

@opticum: my transcoding is almost exclusively for Live TV on my server, so it tends to exhibit the same behavior no matter what I watch. Interesting...



#12 plexman OFFLINE  

plexman

    Advanced Member

  • Members
  • 340 posts
  • Local time: 08:59 AM
  • LocationSpain

Posted 04 October 2017 - 02:40 PM

Check the transcoding log if ffmpeg it's using VAAPI, it can happen that VA driver is not being loaded. In that case I suggest you to install vainfo inside the container. I discovered it recently, it was not working and figured that you need the driver inside the container. Solved it installing another ffmpeg version which installs all required dependencies.

ffmepg version: http://ubuntuhandboo...tu-16-04-14-04/

#13 opticum OFFLINE  

opticum

    Newbie

  • Members
  • 3 posts
  • Local time: 08:59 AM

Posted 04 October 2017 - 02:42 PM

@plexman: thanks, did exactly that. When i turn off transcoding it will not even transcode 1 file (with 1 cpu) on this g7 NUC so i supect its working (also ps aux showing that vaapi options are beeing used)


  • plexman likes this

#14 fire@emby OFFLINE  

fire@emby

    Newbie

  • Members
  • 8 posts
  • Local time: 08:59 AM

Posted 20 February 2018 - 04:28 PM

A short while ago I never heard about Emby whilst searching for a decent (DLNA) media server. After reading the fora and 3 installation attempts it is time to give feedback on how to successfully install Emby in a LXD container with Intel VAAPI hardware accelerated decoding and transcoding.

 

First thought was that I had to do al kind of tweaks to get it to work. This proved to be a false assumption. Yes, you have to prepare your LXD container but Emby for Ubuntu is a complete software bundle. You do not have to (and realy should not) install any other packages! 

 

I used Ubuntu-server LTS with standard kernel and LXD.

 

First check if your (Intel) CPU supports hardware acceleration on this site.

https://trac.ffmpeg....dware/QuickSync

grep name /proc/cpuinfo | sort -u
> model name : Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz

This is a kaby lake CPU capable of hardware acceleration, nice go on...

 

 

Host installation:

 

My host is a standard ubuntu server installation:

lsb_release -a
> Ubuntu 16.04.3 LTS

uname -a
> Linux server 4.4.0-112-generic #135-Ubuntu SMP Fri Jan 19 11:48:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

lxd –version
> 2.0.11

I wont explain how to use LXD but first create a clean container with network capabilities:

lxc launch CleanU1604 Emby-container

Next add your multimedia share to Emby-container on host.

lxc config device add Emby-container md1 disk source=/path/to/my/movies path=/path/inside/container/with/movies

Add a “temp” share to Emby-container on host. I do this because my host and the containers are installed on a SSD drive. Caching files on this tmp-share will place these files on a “normal” large disk.

lxc config device add Emby-container md2 disk source=/path/to/emby-tmp path=/path/inside/container/emby-tmp

Now it is time to pass the hardware video device from the host to the container. This is an essential step for VAAPI. First list the devices on the host with:

ls -al /dev/dri
> crw-rw---- 1 root video 226, 0 Jan 27 23:03 card0
> crw-rw---- 1 root video 226, 64 Jan 27 23:03 controlD64
> crw-rw---- 1 root video 226, 128 Jan 27 23:03 renderD128

Only the render device is required for VAAPI. Add device D128 to the new container (note your device might have a different name):

lxc config device add Emby-container /dev/dri/renderD128 unix-char path=/dev/dri/renderD128

Set the GID correct to “video” for the container:

lxc config device set Emby-container /dev/dri/renderD128 gid 44

Next download the latest stable Emby installer and place it in your shared movie drive. This way it is accessible from within the new container. Wait with the installation.

 

Restart the container:

lxc restart Emby-container

Open a terminal session to the container:

lxc exec Emby-container -- /bin/bash

Container installation:

 

Update the container:

apt-get update
apt-get upgrade

Now install Emby:

dpkg -i emby-server-deb_3.2.70.0_amd64.deb

Add user emby to the “video” group:

sudo usermod -aG video emby

Exit back to the host:

exit

Restart the container for the last time:

lxc restart Emby-container

Now the installation is done. No other packages are required inside the new container.

 

 

 

Configure the new Emby server. Open a web browser:

Container-IP:8096
  • Make sure to point all paths for temp and metadata files to /path/inside/container/emby-tmp

  • Set hardware acceleration to VAAPI and choose /dev/dri/renderD128 as VAAPI device in the transcode settings.

 

Thats it, enjoy Emby!

 

 

Does it all work? Yes, VAAPI is used for decoding and transcoding. The standard quality is great on my HD screens and the hardware acceleration saves CPU load. This way the media server has less impact my other LXD containers.


  • Floflobel likes this

#15 Luke OFFLINE  

Luke

    System Architect

  • Administrators
  • 157225 posts
  • Local time: 02:59 AM

Posted 20 February 2018 - 05:33 PM

Great info, thanks !



#16 loomes OFFLINE  

loomes

    Advanced Member

  • Members
  • 107 posts
  • Local time: 08:59 AM

Posted 02 June 2018 - 06:39 PM

My New Server is a Intel Nuc7i5 with Proxmox5.2 as Host OS.

To get the Intel GPU to a LXC Container with running Debian is very simple.

 

On the Proxmox Host:

apt install vainfo

 

and all the proposed Packages, check with "vainfo" that its working.

 

Shutdown the Emby lxc and add to config from the lxc:

lxc.cgroup.devices.allow = c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

 

Startup lxc, activate VAAPI in Emby (newest Stable version) and all is fine :D


  • Tur0k likes this

#17 Luke OFFLINE  

Luke

    System Architect

  • Administrators
  • 157225 posts
  • Local time: 02:59 AM

Posted 02 June 2018 - 06:43 PM

Thanks for the feedback !



#18 esseki OFFLINE  

esseki

    Advanced Member

  • Members
  • 39 posts
  • Local time: 06:59 AM

Posted 30 January 2020 - 11:40 AM

Hi,

 

reviving this topic as after many years using Emby on a dedicated server running with Windows I decided to replace it with a new mini server running with Linux after reading this whole thread full of promises. I did not want to lose HW transcoding capability this is one of the reason why it took me so long to switch from Windows to Linux. And now here we are. I did the switch but I can't get HW transcoding working with my new install. I might be doing something wrong considering how many successes I can read in this thread. Any help or support will be much appreciated :)

 

Few info about my new setup :

  • CPU is Intel Core i5-8265U 8th Generation Whiskey Lake with  Intel Graphics UHD 620 (https://ark.intel.co...o-3-90-ghz.html)
  • Host OS installed is Proxmox 6.1-5
  • Guest OS Debian 10 running in a LXC container 
  • Emby 4.3.1.0 for Debian

Here is what I did

 

On the Proxmox Host

# apt install vainfo

# vainfo
error: can't connect to X server!
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

# ls -la /dev/dri/ 
total 0 
drwxr-xr-x  3 root root        100 Jan 28 21:42 . 
drwxr-xr-x 20 root root       4620 Jan 30 15:55 .. 
drwxr-xr-x  2 root root         80 Jan 28 21:42 by-path 
crw-rw----  1 root video  226,   0 Jan 28 21:42 card0 
crw-rw----  1 root render 226, 128 Jan 28 21:42 renderD128
  
# nano /etc/pve/lxc/102.conf

#added these two lines at the end 
lxc.cgroup.devices.allow: c 226:128 rwm 
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

In the Emby LXC container running Debian 

# apt-get update
# apt-get upgrade
# wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.3.1.0/emby-server-deb_4.3.1.0_amd64.deb
# dpkg -i emby-server-deb_4.3.1.0_amd64.deb
# sudo usermod -aG video emby 

# ls -la /dev/dri/total 0
drwxr-xr-x 2 root root           60 Jan 30 15:04 .
drwxr-xr-x 7 root root          480 Jan 30 15:04 ..
crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128

We can see with the latest command that the iGPU has been properly passthrough to the LXC container but my problem is that when I start to transcode a file (from HEVC to H264) the transcoding is done in software and not using the iGPU.

 

Am I missing something ? @loomes your setup is the most similar to mine and it seems that you succeeded quite easily. Can you spot something wrong in my settings ?

 

Thanks a lot in advance for any help

 

 

 

 


Edited by esseki, 30 January 2020 - 03:48 PM.


#19 loomes OFFLINE  

loomes

    Advanced Member

  • Members
  • 107 posts
  • Local time: 08:59 AM

Posted 30 January 2020 - 12:06 PM

Hmm your render device has wrong group i think: crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128

By me it looks: crw-rw---- 1 root render 226, 128 Dez  4 13:33 renderD128



#20 esseki OFFLINE  

esseki

    Advanced Member

  • Members
  • 39 posts
  • Local time: 06:59 AM

Posted 30 January 2020 - 04:26 PM

Thank you so much @loomes you solved the problem I was struggling with for the last two nights.

chown root:render /dev/dri/*

simply did the trick.

 

To summarize and in case somebody would be interested in replicating what I did (with the latest and updated version of Proxmox, Debian and Emby compared to the previous post in this thread that are a couple of years old now), here is a step by step procedure (considering that you have Proxmox installed with a LXC container running Debian 10) :

 

 

On the Proxmox 6.1 Host

# apt install vainfo

# vainfo
error: can't connect to X server!
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

# ls -la /dev/dri/
total 0
drwxr-xr-x  3 root root        100 Jan 28 21:42 .
drwxr-xr-x 20 root root       4620 Jan 30 15:55 ..
drwxr-xr-x  2 root root         80 Jan 28 21:42 by-path
crw-rw----  1 root video  226,   0 Jan 28 21:42 card0
crw-rw----  1 root render 226, 128 Jan 28 21:42 renderD128
 
# nano /etc/pve/lxc/102.conf

#added these two lines at the end
lxc.cgroup.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

In the Emby LXC container running Debian 10

# apt-get update
# apt-get upgrade
# wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.3.1.0/emby-server-deb_4.3.1.0_amd64.deb
# dpkg -i emby-server-deb_4.3.1.0_amd64.deb
# sudo usermod -aG video emby 

# ls -la /dev/dri/total 0
drwxr-xr-x 2 root root           60 Jan 30 15:04 .
drwxr-xr-x 7 root root          480 Jan 30 15:04 ..
crw-rw---- 1 root postdrop 226, 128 Jan 28 20:42 renderD128

# chown root:render /dev/dri/*

# ls -la /dev/dri/total 0
drwxr-xr-x 2 root root         60 Jan 30 20:14 .
drwxr-xr-x 7 root root        480 Jan 30 20:14 ..
crw-rw---- 1 root render 226, 128 Jan 28 20:42 renderD128

Then restart Emby server and everything will work fluently !

I love Emby and its community  :wub:


Edited by esseki, 30 January 2020 - 04:28 PM.






Also tagged with one or more of these keywords: vaapi, lxc, transcoding

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users