Jump to content

Intel N150 Transcoding Not Working


Go to solution Solved by Ra'Jiska,

Recommended Posts

Posted
On 6/16/2025 at 11:45 PM, Ra'Jiska said:

After many trial-and-error I've finally been able to get it working by rebuilding the `intel-media-driver` library with the latest version, the hard part was compiling this with dependencies having compatible ABI as the ones running on the Emby image (thanks closed source), which I found with image `ubuntu:18.04`.

Sharing here to everyone who was stuck like me. To get this working you need to make your custom image of the emby image with the updated dependencies. The following steps took me 15 minutes to build on a 20 cores CPU, the build process will take longer with less cores (therefore, much longer on a N150 if you're compiling directly there).

 

Mate, thank you so much for this! I can finally use a feature I paid for. Your docker image works great!

  • Like 1
hectorzane
Posted
On 6/16/2025 at 9:45 PM, Ra'Jiska said:

After many trial-and-error I've finally been able to get it working by rebuilding the `intel-media-driver` library with the latest version, the hard part was compiling this with dependencies having compatible ABI as the ones running on the Emby image (thanks closed source), which I found with image `ubuntu:18.04`.

Sharing here to everyone who was stuck like me. To get this working you need to make your custom image of the emby image with the updated dependencies. The following steps took me 15 minutes to build on a 20 cores CPU, the build process will take longer with less cores (therefore, much longer on a N150 if you're compiling directly there).

1) Create an empty folder with a file `Dockerfile` file with the following content

FROM ubuntu:18.04 AS builder

WORKDIR /workspace

RUN apt-get update && \
    apt-get install -y \
	build-essential \
	git \
	cmake \
	automake \
	autoconf \
	libtool \
	m4 \
	pkg-config \
	libdrm-dev

RUN mkdir build build/usr build/lib

# Libva
RUN \
	git clone https://github.com/intel/libva.git  && \
	cd libva && \
	git checkout 2.22.0 && \
	./autogen.sh --prefix=/workspace/build/usr --libdir=/workspace/build/lib && \
	make -j$(nproc) && \
	make install && \
	cd -

# Gmmlib
RUN \
	git clone https://github.com/intel/gmmlib.git && \
	cd gmmlib && \
	git checkout intel-gmmlib-22.7.2 && \
	mkdir build && \
	cd build && \
	cmake -DCMAKE_INSTALL_PREFIX=/workspace/build/usr -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_LIBDIR=/workspace/build/lib -DCMAKE_BUILD_TYPE=ReleaseInternal .. && \
	make -j$(nproc) && \
	make install && \
	cd ../../

# Media Driver
RUN \
	git clone https://github.com/intel/media-driver.git && \
	cd media-driver && \
	mkdir build && \
	cd build && \
	export PKG_CONFIG_PATH=/workspace/build/lib/pkgconfig && \
	cmake -DCMAKE_LIBRARY_PATH=/workspace/build/lib -DCMAKE_INSTALL_PREFIX=/workspace/build/usr -DCMAKE_INSTALL_LIBDIR=/workspace/build/lib .. && \
	make -j$(nproc) && \
	make install

RUN find /workspace/build -name "*.so" -exec strip --strip-unneeded {} \;

FROM emby/embyserver:4.9.1.0 AS emby

COPY --from=builder /workspace/build/lib /lib

2) Build the image using `docker build -t emby-n150-fixed .` This will take a while, the more CPU cores you have the shorter (took me about 30 minutes with 20 cores)

3) Check that this is working by running `docker run --rm -it --device /dev/dri:/dev/dri --entrypoint vainfo emby-n150-fixed`, if this returns something as follows, then it worked:

Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.2.5 (4b3a078bd)
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointFEI
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointFEI
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointFEI
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointFEI
      VAProfileHEVCMain               :	VAEntrypointEncSliceLP
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointEncSliceLP
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointEncSlice
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointEncSlice
      VAProfileHEVCMain422_12         :	VAEntrypointVLD
      VAProfileHEVCMain422_12         :	VAEntrypointEncSlice
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          :	VAEntrypointVLD
      VAProfileHEVCSccMain10          :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         :	VAEntrypointVLD
      VAProfileHEVCSccMain444         :	VAEntrypointEncSliceLP
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointEncSliceLP

You can compare and run the same command on the emby image, you should have a bunch of errors instead.

4) (OPTIONAL) For your convenience, I uploaded the image on DockerHub if you want an easy way to see if it works, use the image rajiska/emby-n150-fixed:4.9.1.0, though I'd recommend to build the image yourself

Thank you! Here I confirm this workaround works on Intel N355 CPU as well. 

  • Like 1
  • Thanks 2
Posted

Got hardware acceleration working for a non-Docker Emby install on Ubuntu 25.04 (LXC Inside Proxmox) using this:
 

apt update && apt upgrade -y && apt install vainfo intel-media-va-driver -y
cp -r /usr/lib/x86_64-linux-gnu/* /opt/emby-server/extra/lib/
mv /opt/emby-server/lib/libstdc++.so.6 /tmp/libstdc++.so.6.bk && cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/emby-server/lib/libstdc++.so.6


# Finally to check if it worked
root@emby:~# /opt/emby-server/bin/emby-vainfo
Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /opt/emby-server/extra/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.17.1)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.1.2 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSliceLP
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointEncSliceLP
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointEncSliceLP
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointEncSliceLP
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

 

 

  • Like 2
  • Thanks 1
  • 2 weeks later...
Posted
On 16/06/2025 at 09:45, Ra'Jiska said:

After many trial-and-error I've finally been able to get it working by rebuilding the `intel-media-driver` library with the latest version, the hard part was compiling this with dependencies having compatible ABI as the ones running on the Emby image (thanks closed source), which I found with image `ubuntu:18.04`.

Sharing here to everyone who was stuck like me. To get this working you need to make your custom image of the emby image with the updated dependencies. The following steps took me 15 minutes to build on a 20 cores CPU, the build process will take longer with less cores (therefore, much longer on a N150 if you're compiling directly there).

1) Create an empty folder with a file `Dockerfile` file with the following content

FROM ubuntu:18.04 AS builder

WORKDIR /workspace

RUN apt-get update && \
    apt-get install -y \
	build-essential \
	git \
	cmake \
	automake \
	autoconf \
	libtool \
	m4 \
	pkg-config \
	libdrm-dev

RUN mkdir build build/usr build/lib

# Libva
RUN \
	git clone https://github.com/intel/libva.git  && \
	cd libva && \
	git checkout 2.22.0 && \
	./autogen.sh --prefix=/workspace/build/usr --libdir=/workspace/build/lib && \
	make -j$(nproc) && \
	make install && \
	cd -

# Gmmlib
RUN \
	git clone https://github.com/intel/gmmlib.git && \
	cd gmmlib && \
	git checkout intel-gmmlib-22.7.2 && \
	mkdir build && \
	cd build && \
	cmake -DCMAKE_INSTALL_PREFIX=/workspace/build/usr -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_LIBDIR=/workspace/build/lib -DCMAKE_BUILD_TYPE=ReleaseInternal .. && \
	make -j$(nproc) && \
	make install && \
	cd ../../

# Media Driver
RUN \
	git clone https://github.com/intel/media-driver.git && \
	cd media-driver && \
	mkdir build && \
	cd build && \
	export PKG_CONFIG_PATH=/workspace/build/lib/pkgconfig && \
	cmake -DCMAKE_LIBRARY_PATH=/workspace/build/lib -DCMAKE_INSTALL_PREFIX=/workspace/build/usr -DCMAKE_INSTALL_LIBDIR=/workspace/build/lib .. && \
	make -j$(nproc) && \
	make install

RUN find /workspace/build -name "*.so" -exec strip --strip-unneeded {} \;

FROM emby/embyserver:4.9.1.0 AS emby

COPY --from=builder /workspace/build/lib /lib

2) Build the image using `docker build -t emby-n150-fixed .` This will take a while, the more CPU cores you have the shorter (took me about 30 minutes with 20 cores)

3) Check that this is working by running `docker run --rm -it --device /dev/dri:/dev/dri --entrypoint vainfo emby-n150-fixed`, if this returns something as follows, then it worked:

Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.2.5 (4b3a078bd)
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointFEI
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointFEI
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointFEI
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointFEI
      VAProfileHEVCMain               :	VAEntrypointEncSliceLP
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointEncSliceLP
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointEncSlice
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointEncSlice
      VAProfileHEVCMain422_12         :	VAEntrypointVLD
      VAProfileHEVCMain422_12         :	VAEntrypointEncSlice
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          :	VAEntrypointVLD
      VAProfileHEVCSccMain10          :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         :	VAEntrypointVLD
      VAProfileHEVCSccMain444         :	VAEntrypointEncSliceLP
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointEncSliceLP

You can compare and run the same command on the emby image, you should have a bunch of errors instead.

4) (OPTIONAL) For your convenience, I uploaded the image on DockerHub if you want an easy way to see if it works, use the image rajiska/emby-n150-fixed:4.9.1.0, though I'd recommend to build the image yourself

Thank you for your amazing work. Used this to build the latest stable 4.8.11.0 image and transcoding works now on my N150.

Posted

One thing I did notice is that only VAAPI hardware acceleration is working. Anyone have any luck with QuickSync showing as an option?

  • 4 weeks later...
Posted
On 01/07/2025 at 17:28, LoV432 said:

Got hardware acceleration working for a non-Docker Emby install on Ubuntu 25.04 (LXC Inside Proxmox) using this:
 

apt update && apt upgrade -y && apt install vainfo intel-media-va-driver -y
cp -r /usr/lib/x86_64-linux-gnu/* /opt/emby-server/extra/lib/
mv /opt/emby-server/lib/libstdc++.so.6 /tmp/libstdc++.so.6.bk && cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/emby-server/lib/libstdc++.so.6


# Finally to check if it worked
root@emby:~# /opt/emby-server/bin/emby-vainfo
Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /opt/emby-server/extra/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.17.1)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.1.2 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSliceLP
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointEncSliceLP
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointEncSliceLP
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointEncSliceLP
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

 

 

Would this be able to work with intel-media-va-driver-non-free? Another app I'm running needs it. I did try but it doesn't currently work.

  • Like 1
Posted
9 hours ago, Wheemer said:

Would this be able to work with intel-media-va-driver-non-free? Another app I'm running needs it. I did try but it doesn't currently work.

I don't see why it wouldn't work as long as you are on Ubuntu 25.04

Posted
6 hours ago, LoV432 said:

I don't see why it wouldn't work as long as you are on Ubuntu 25.04

I'm on debian 12, and it doesn't work

Posted

Thanks Ra'Jiska!

Can't tell you how happy I am to find this workaround. I had been spending literally all weekend trying to figure out why Emby wouldn't detect my new Intel ARC 130T integrated GPU (Arrow-Lake) for hardware transcoding.

Currently running Proxmox 9.0 / Debian 13. I ran your custom docker image in an LXC container and VAAPI encoders/decoders got detected and confirmed working when I monitor using intel_gpu_top. How can we get the Intel QSV encoders/decoders to appear in Emby?

 

  • 2 weeks later...
PIkeoftheLake
Posted

I'm going to try to move to a docker install to get my hardware transcoding working.  I have used docker a number of times over the years but I was hoping someone could just give me a bit of help with this.

So I have my server running with Truenas and I'm using Dockge through their apps feature.

The only command that I have from Rajiska is: docker pull rajiska/emby-n150-fixed

So do I basically start a new compose file and enter in: rajiska/emby-n150-fixed somewhere?  Then what do I do?  I must need to specify volumes somewhere.

Many thanks for the help.

Posted

Hello @Luke, now that the problem has been found, could you update the official Emby Docker ?

It would be great, thanks!

  • Agree 2
Posted (edited)
On 11/08/2025 at 20:27, Cobester said:

Thanks Ra'Jiska!

Can't tell you how happy I am to find this workaround. I had been spending literally all weekend trying to figure out why Emby wouldn't detect my new Intel ARC 130T integrated GPU (Arrow-Lake) for hardware transcoding.

Currently running Proxmox 9.0 / Debian 13. I ran your custom docker image in an LXC container and VAAPI encoders/decoders got detected and confirmed working when I monitor using intel_gpu_top. How can we get the Intel QSV encoders/decoders to appear in Emby?

 

Happy to know it worked for you. As for QSV I'm honestly not sure as I stopped digging once as hardware transcoding started worked as my understanding is that QSV is not necessarily much more performant than VAAPI. If you really want QSV, somebody reported that they got it working by modifying the Dockerfile I supplied: 

On 20/08/2025 at 21:56, PIkeoftheLake said:

I'm going to try to move to a docker install to get my hardware transcoding working.  I have used docker a number of times over the years but I was hoping someone could just give me a bit of help with this.

So I have my server running with Truenas and I'm using Dockge through their apps feature.

The only command that I have from Rajiska is: docker pull rajiska/emby-n150-fixed

So do I basically start a new compose file and enter in: rajiska/emby-n150-fixed somewhere?  Then what do I do?  I must need to specify volumes somewhere.

Many thanks for the help.

I am not sure how the non-docker version works but I'd assume you would only have to get the latest libva version and install it on your system to make it work. If you really want to use docker you may follow the official instructions from dockerhub: https://hub.docker.com/r/emby/embyserver. As for the docker image, you may user `rajiska/emby-n150-fixed` instead of `emby/embyserver`.

Edited by Ra'Jiska
Posted

@hectorzane Thank you for sharing the instructions on how to build the image, I used them to update a jellyfin image and now hardware transcoding is working on my Me Mini with N150 CPU :)

  • 2 weeks later...
Posted
On 10/08/2025 at 05:53, LoV432 said:

Debian 12 has the older version of drivers. You will need either Ubuntu 25.04 or Debian 13

https://packages.debian.org/search?keywords=intel-media-va-driver-non-free

https://launchpad.net/ubuntu/+source/intel-media-driver-non-free

Hello;

This has been working great however I'm now using the i965-va-driver-shaders in other apps on the server, can this use that driver instead?

Posted

Hi @Lukeany advance? my Emby was updated today but the error persist

Posted
12 hours ago, zofiel said:

Hi @Lukeany advance? my Emby was updated today but the error persist

Hi, not yet. We are working on a new ffmpeg build that will hit the server beta channel in the near future. Thanks.

  • Haha 1
  • Thanks 1
Posted
1 hour ago, Luke said:

Hi, not yet. We are working on a new ffmpeg build that will hit the server beta channel in the near future. Thanks.

No offence but that is the same reply that you gave on march 26th this year. Is there any real update since then or an eta?

  • Like 1
  • Agree 1
Posted
5 hours ago, joli said:

No offence but that is the same reply that you gave on march 26th this year. Is there any real update since then or an eta?

Open ended responses without commitment is the norm around here. 😆 Expecting things with paid software is a privledge not granted from the supreme master. 🤣

Posted
On 7/1/2025 at 9:58 PM, LoV432 said:

Got hardware acceleration working for a non-Docker Emby install on Ubuntu 25.04 (LXC Inside Proxmox) using this:
 

apt update && apt upgrade -y && apt install vainfo intel-media-va-driver -y
cp -r /usr/lib/x86_64-linux-gnu/* /opt/emby-server/extra/lib/
mv /opt/emby-server/lib/libstdc++.so.6 /tmp/libstdc++.so.6.bk && cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/emby-server/lib/libstdc++.so.6


# Finally to check if it worked
root@emby:~# /opt/emby-server/bin/emby-vainfo
Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /opt/emby-server/extra/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.17.1)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.1.2 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSliceLP
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointEncSliceLP
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointEncSliceLP
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointEncSliceLP
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

 

 

Hello everyone,

First of all, thanks to LoV432.

Your workaround also works for a native installation of Emby 4.8.11 on Ubuntu Server with an Intel Ultra 7 255H processor / Intel Arc 140 iGPU.

Here are my steps on a clean Ubuntu Server 24.04 LTS installation:

# System update & upgrade to newer kernel (Arrow Lake CPUs require kernel > 6.10)
sudo apt update
sudo apt install --install-recommends linux-generic-hwe-24.04
sudo reboot
sudo apt update
sudo apt upgrade

 

# Install Intel graphics drivers
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:kobuk-team/intel-graphics
sudo apt install -y libze-intel-gpu1 libze1 intel-metrics-discovery intel-opencl-icd clinfo intel-gsc intel-media-va-driver-non-free libmfx-gen1 libvpl2 libvpl-tools libva-glx2 va-driver-all vainfo

 

# Verify VA-API installation
vainfo

 

# Install Emby Server
wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.8.11.0/emby-server-deb_4.8.11.0_amd64.deb
sudo dpkg -i emby-server-deb_4.8.11.0_amd64.deb
rm emby-server-deb_4.8.11.0_amd64.deb

 

# Copy required libraries and fix dependencies
sudo cp -r /usr/lib/x86_64-linux-gnu/* /opt/emby-server/extra/lib/
sudo mv /opt/emby-server/lib/libstdc++.so.6 /tmp/libstdc++.so.6.bk
sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/emby-server/lib/libstdc++.so.6

 

# Restart Emby
sudo systemctl restart emby-server.service

That’s it - Emby should now be running with Intel GPU support.

Have a nice day folks 😉

  • Like 1
  • Agree 1
Posted
On 9/9/2025 at 7:13 PM, Wheemer said:

Hello;

This has been working great however I'm now using the i965-va-driver-shaders in other apps on the server, can this use that driver instead?

No idea, sorry. You will have to give it a try yourself

Posted
2 minutes ago, LoV432 said:

No idea, sorry. You will have to give it a try yourself

I have no idea how to do that. I have both drivers installed so not sure if the paths would need to be changed or what. Everything is currently working was just thinking mabe this might make qsv available over vaapi.

razor2000nz1
Posted
On 9/10/2025 at 11:19 PM, Carnifex said:

Hello everyone,

First of all, thanks to LoV432.

Your workaround also works for a native installation of Emby 4.8.11 on Ubuntu Server with an Intel Ultra 7 255H processor / Intel Arc 140 iGPU.

Here are my steps on a clean Ubuntu Server 24.04 LTS installation:

# System update & upgrade to newer kernel (Arrow Lake CPUs require kernel > 6.10)
sudo apt update
sudo apt install --install-recommends linux-generic-hwe-24.04
sudo reboot
sudo apt update
sudo apt upgrade

 

# Install Intel graphics drivers
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:kobuk-team/intel-graphics
sudo apt install -y libze-intel-gpu1 libze1 intel-metrics-discovery intel-opencl-icd clinfo intel-gsc intel-media-va-driver-non-free libmfx-gen1 libvpl2 libvpl-tools libva-glx2 va-driver-all vainfo

 

# Verify VA-API installation
vainfo

 

# Install Emby Server
wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.8.11.0/emby-server-deb_4.8.11.0_amd64.deb
sudo dpkg -i emby-server-deb_4.8.11.0_amd64.deb
rm emby-server-deb_4.8.11.0_amd64.deb

 

# Copy required libraries and fix dependencies
sudo cp -r /usr/lib/x86_64-linux-gnu/* /opt/emby-server/extra/lib/
sudo mv /opt/emby-server/lib/libstdc++.so.6 /tmp/libstdc++.so.6.bk
sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /opt/emby-server/lib/libstdc++.so.6

 

# Restart Emby
sudo systemctl restart emby-server.service

That’s it - Emby should now be running with Intel GPU support.

Have a nice day folks 😉

Thanks for this! Worked perfectly for my N150.

I was able to cut and paste each line and it worked 

Are you able to write instructions on how to auto mount a synology nfs share as well? Linux is all new to me - using Ubuntu 24.04 LTS

PIkeoftheLake
Posted (edited)

I thought I'd update Everyone on my progress with using Rajiska's docker build on my setup.  I can kindof work with Docker and usually get things up and running but it usually takes me a morning of screwing around and a few choice words before I'm successful.  Hopefully this can help others who are slightly inclined but also slightly inept like me 😀.

I'm running Truenas on a 2 bay NAS with an Intel N150 chip.  See here: Topton R1

Truenas has emby in their applications section but of course it doesn't work with hardware transcoding.  Truenas also has the option to use dockge and portainer so I opted to use portainer to deploy Rajiska's build.  Here is what I did:

  1. You need to point Portainer toward your media files.  I have 5 or 6 media folders on my NAS as samba shares titled movies, music, tv etc.  In Portainer, click Volumes, then Add Volume and you can point Portainer toward each of your media folders.
  2. Next go to containers and click Add Container.  Give the container a name and then in image configuration point to Docker Hub (anonymous) and input Rajiska's docker build: rajiska/emby-n150-fixed:latest
  3. For Port Mapping put in Host 8096 and Container 8096.  
  4. Now go to Advanced Container Settings and click Volumes.  You want to point Emby toward all those folders you setup in step 1.  Click on map additional volume.  For this, say you wanted your music folder to be available.  In container, you type in /music and leave it as /Volume.  Then in volume, click the drop down and find your music folder that you opened up in step one.  Then repeat this for all your folders.
  5. Now stay in Advanced Container Settings and go to Restart Policy.  You generally want your container to restart unless stopped.
  6. Last, go to Runtime & resources.  This is where you will point the container toward your gpu.  At Devices type host: /dev/dri and container /dev/dri
  7. That should be it.  You can click Deploy the container just above the Advanced container settings.  Portainer will download the container and then get it up and running.  In your containers screen you should see a green sign saying running next to your Emby build.

To update your build just click on the container and press Recreate, then Re-pull image.  This will pull the latest image that Rajiska has created.

That should be it.  I wanted to make this walkthrough because I find Docker quite confusing and I'm sure others do as well.

Let me know how you fare.

Edited by PIkeoftheLake

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...