After digging around for a couple of days in the Emby forum I have figured something out to get hardware accelerated transcoding working with Emby on my TS-253A. Actually with QTS 4.3 beta almost everything is already in place to get it working.
The main issue is that the static ffmpeg builds on this forum and also all others that I found online do not have VA-API enabled.
I tried to compile a fully static ffmpeg x64 build with VA-API support enabled however there are tons of dependencies and it would have taken ages for me to fulfil al those dependencies and to compile it successfully. If somebody has such a build: It would be great, if you could post it!
However there are dynamic ffmpeg builds that have VA-API enabled. I therefore powered up ubuntu in Linux Station and installed Emby there:
Code: Select all
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/emby/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/emby-server.list"
sudo apt-get update
sudo apt-get install emby-server
Code: Select all
sudo service emby-server start
Code: Select all
sudo /etc/init.d/emby-server start
Code: Select all
sudo add-apt-repository ppa:djcj/hybrid
sudo apt-get update
sudo app-get install ffmpeg
Code: Select all
sudo apt-cache policy ffmpeg
Code: Select all
ffmpeg -encoders 2> /dev/null | grep vaapi
Code: Select all
V..... h264_vaapi H.264/AVC (VAAPI) (codec h264)
V..... hevc_vaapi H.265/HEVC (VAAPI) (codec hevc)
V..... mjpeg_vaapi MJPEG (VAAPI) (codec mjpeg)
Code: Select all
ffmpeg -vaapi_device /dev/dri/renderD128 -f lavfi -i nullsrc=s=1280x720 -t 1 -vf 'format=nv12,hwupload' -vcodec h264_vaapi -f null -
Code: Select all
sudo apt-get install vainfo
Code: Select all
vainfo
Code: Select all
libva info: VA-API version 0.39.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_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.0)
vainfo: Driver version: Intel i965 driver for Intel(R) CherryView - 1.7.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
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 : VAEntrypointEncS
Code: Select all
ls -l /dev/dri/*
Code: Select all
crw-rw----+ 1 root video 226, 0 Feb 5 08:08 /dev/dri/card0
crw-rw---- 1 root video 226, 64 Feb 5 08:08 /dev/dri/controlD64
crw-rw----+ 1 root video 226, 128 Feb 5 08:08 /dev/dri/renderD128
Emby is running as the user “emby” on Linux Station, we will have to add the user “emby” to the “video” group to have the right to access renderD128:
Code: Select all
usermod -a -G video emby
You can check the Emby logs if it is working.
Enjoy!
Daniel