Search the Community
Showing results for tags 'vaapi'.
-
Hi there I'm currently in the process of moving away from Plex to Emby, I've my reasons but please don't forget about this below, I don't want to hurt any sensibility. So I recently noticed on a movie that I had huge artefacts/jumps when looking a film on my Chromecast. Some informations about my setup: Hardware is a Minisforum MS-01 Core i9-13900H, 96GB RAM and 2 TB disk OS is Almalinux 9 server I run Emby & Plex instances on Docker on this computer, GPU is "passthroughed" (with: - /dev/dri/renderD128:/dev/dri/renderD128) Emby version is 4.8.8.0 I didn't install any extra drivers Test protocol: The hardware is the same, so are Docker passthrough settings for Emby & Plex Movie is always the same, so the sequence (in my case, it's Hunger Games last episode, when Katniss is going alone to Panem in the plane, hiding behind a crate (sequence @ 29:00) Movie file is in 4K HDR 10 HEVC I started to look a little bit deeper because I suspect transcoding quality issues and this is what I found so far: Emby in Quicksync transcoding : very bad quality, the worst probably, a lot of artifacts (forced by deselecting VAAPI from advanced settings) Emby in VAAPI transcoding - VAAPI HW tone mapping : really dark, almost impossible to see artifacts, so I'll will not retain this Emby in VAAPI transcoding - Extra-T OpenCL tone mapping with Hable algorithm: quite a lot of artifacts, flat spots in dark areas, jumps Emby in VAAPI transcoding - Extra-T OpenCL tone mapping with Reinhard algorithm: seems better than Hable, but not really good Now : Plex : Auto quality with slow transcoding preset : no issue My Emby test instance : VM with Nvidia GPU passthroughed from ESX host to VM to Docker instance, NVDEC & Hable : no issue either I've to precise that I could always watch my movie, there is no play issue, only quality but I'd like to sort that out. It is also hard to describe it, you really have to see it. So, where do we start?
- 18 replies
-
My setup is based on a Debian 12 Bookworm LXC Container running on ProxMox 8.1.3. Spent quite some time on this and maybe this helps someone else to get it working. If not, I'm sorry... As I'm using an NFS mount within the container I'm using a privileged container. Under Options -> Features I've enabled "Nesting" and "NFS". Don't touch the LXC's .conf file just yet! Make sure there's no mount entries in it! On the ProxMox host: Find out the GID of the "render" group: getent group render I'm using 104 in this example. In the LXC container: Find a unused GID: cat /etc/group I'm using 112 in this example. Find the group name for the GID of the host's render group getent group 104 I'm using sgx in this example. Change the GID of the sgx group to the unused GID and update the filesystem: groupmod -g 112 sgx find / -group 104 -exec chgrp -h sgx {} \; 112 = new GID, 104 = old GID, sgx = group name. Find the GID of the container's render group getent group render I'm using 106 in this example. Change the GID of the "render" group to the GID of the host's render group and update the file system: groupmod -g 104 render find / -group 106 -exec chgrp -h render {} \; 104 = new GID, 106 = old GID, render = group name. Update the sources list: nano /etc/apt/sources.list Add the following lines: #non-free firmwares deb http://deb.debian.org/debian bookworm non-free-firmware #non-free drivers and components deb http://deb.debian.org/debian bookworm non-free Install the drivers: apt update && apt install intel-media-va-driver-non-free intel-gpu-tools vainfo Shutdown the container. On the ProxMox host: Update the LXC's .conf file: nano /etc/pve/nodes/<NODE NAME>/lxc/<CT ID>.conf Add the following lines: lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file Start the container. In the LXC container: Check if permissions are correct: ls -Alh /dev/dri Output should be similar to: total 0 crw-rw---- 1 root video 226, 0 Dec 10 21:21 card0 crw-rw---- 1 root render 226, 128 Dec 10 21:21 renderD128 Important is that it shows video and render as the groups! Check if VAAPI is available: vainfo Output should be similar to: Install Emby Server. I used the 4.8 Beta version as it seems to have some fixes for Intel Alder Lake-N CPUs. Add the Emby user to the video and render groups: sudo usermod -aG video emby sudo usermod -aG render emby Reboot your container and (hopefully) enjoy hardware acceleration! Try starting a movie and change the quality to something that would trigger transcoding. Check the CPU usage in the ProxMox Summary screen and watch the GPU in the container usage with: intel_gpu_top
-
Hi guys, I'm currently figuring out how I can enable ffmpeg to use my /dev/dri/renderD128 device which is the iGPU of my intel chip. Currently I have the following things covered: - drm module is loaded and /dev/dri/renderD128 is accessible in jail - emby user has access to the device node - I have installed libva-intel-driver and it is picked up by vainfo - ffmpeg is compiled with libva support I'm sure that emby can access the node and use it with the ffmpeg supplied by emby. As show in the following command output: Even if I supply an input file and output file for the sake of example it starts transcoding just fine on hardware. This indicates to me that the user emby is able to use /dev/dri/renderD128 and should be able to use the device node and hardware. In the web interface under transcoding I see nothing popping up as possible hardware accelerators as show in picture. I have attached my hardware detection log and my most recent server log where the server starts up and does some hardware detection stuffs. This is my output from vainfo: Log.txt Log.txt
-
Hi, I can not run VAAPI on my server. My server is on an i5-8600K processor, OMV 0.4 4.1.17-1 installed. EMBY is placed on DOCKER EMBY works great except for VAAPI. Please help me how to run it. ffmpeg-transcode.txt embyserver.txt
-
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.cavebeat.org/2016/02/how-to-create-tuntap-devices-for-lxc-in-proxmoxve-4-1/
- 22 replies
-
Hardware acceleration - Emby inside LXC(Debian/Ubuntu) container using Intel iGPU
appoli posted a topic in Linux
Hi All, I have mostly made posts moaning about how stuff doesn't work right/the way I want to, but I'm going to give back to the community today! For the TL;DR skip down a few paragraphs, just me venting my woes I go into how I got hardware acceleration to work when it wasn't and everything said it should have been on an Ubuntu LXC container I originally built a FreeNAS machine, on which I planned to store loads of stuff including media, and saw that it had media player plugins. I didn't think too much of it at the time (except I didn't want to use Plex because my experience with it showed that it wasted resources/was the 'dummy' version) so I specced out my server and I built it. I chose a Sky Lake/Kaby Lake cpu for a number of reasons, but one of them was the iGPU. I tried using an Emby plugin but that didn't work (now know it's a whole .NET issue with FreeBSD) and then tried a Docker container of Emby - worked fine, but no hardware acceleration. I wasn't sure why, but I knew I needed more power in the server for the transcoding and other stuff I was using it for so I got a Kaby Lake Xeon cpu, making sure to get one with an iGPU, and kept on plugging away. To cut to the chase: - found out I needed to pass /dev/dri to docker - found out I needed VAAPI to get use of the gpu, but FreeNAS did not support it so it would need to be in a VM and FreeNAS was going through lots of changes - looked around for a few other operating systems that could be used for my purposes, tried OMV - it didn't like ZFS - landed on Proxmox, perfect for my needs - can spin up debian/ubuntu LXC containers easy peasy while passing through whatever I want from the root OS & can make VMs for other OS'/things I want more secure - found out that my motherboard had the C232 chipset & I needed the C236 chipset to use the iGPU - Finally bought the right motherboard Honestly, you would think I had done absolutely no research! But a lot of this was new to me and I didn't realize what I would be using the machine for (didn't know how much use I could get out of Emby per se - I already had an HDHomeRun and Apple TVs...). So I swapped in the right motherboard (plus I got some more SATA ports - gonna be cloning my zpool later to a much larger one w/ more redundancy since I'm using the machine for work too now) and went about making sure that dev/dri and fb0 were passed through to the Emby LXC container. *****Skip to Here***** At this point I double checked that everything was being passed through to the container (eg lspci) & went through the Emby documentation (they state that it Emby should have all the drivers that it needs built in, e.g. their own FFmpeg build). However, when I would play a file that was a direct feed it played fine, but when I tried playing a 4K HVEC or 9/10Bit/VP9/VP10 whatever they actually decided to call that, the video would just load and never start. I went into the console and VAAPI was indeed installed and showed that it was able to decode/encode the appropriate files for my cpu. Checked the log - it looked like FFmpeg was doing it's thing and transcoding the file writing stuff to the temp folder and including a transcoding rate (e.g. at one point it said it was transcoding at 66.6 x frames ). I was about to post on the forum, but I really really really have been wanting to get this working. So I looked around and I found the following site, or rather series of files from the VAAPI sites: https://github.com/intel/media-driver The genesis before that link was basically that VA API needed some extra libraries/intel media SDK to operate depending on the OS/CPU. So that link is for an addition driver that has links to two other libraries that are needed first (libva & GmmLib) along with their dependencies/reqs to build them. Follow the links and cit clone those libraries over to a build directory, make them and install them. For less experienced people the GmmLib instructions are less clear: after git clone GmmLib, make a build directory for cmake & change into it you issue the cmake command with '-DCMAKE_BUILD_TYPE=Release', the site just shows you the possible options. I left out the -DARCH=64 bit because from what I saw on the internet others didn't use it, but you DO need to reference a cmake build file for the command. That is in the root folder of the build folder you made. so either add '..' at the end or '/wherever you git cloned to/gmmlib' to the end of the cmake command and it will run. Then you do the make -j8 command followed by the make install command. Once those two guys are added I git cloned the media-driver bit in, followed the instructions, restarted the container and honestly didn't expect anything to have changed. But hardware transcoding started working like a charm! I do NOT know if it was a combination of those libraries, if it was a dependency of libraries (or maybe just me having to reset the BMC a bunch of times b/c my fan control script was acting up, but I highly doubt that's what it was) but after the above everything worked. As a final note, I don't think this is a shortcoming of the Emby team. As far as I can tell people are using hardware transcoding via the VAAPI files Emby installs just fine. Maybe it had to do with the specifics of my case - Emby running in an LXC container, the LXC container running inside of Proxmox, the fact that because I have IPMI the BMC has it's own video device that are seen in the OS'. I'm just happy I got it to work (maybe can help the Emby team do some investigating) & hope this can help others save some time. Cheers!- 26 replies
-
- 1
-
- hardware acceleration
- linux
-
(and 5 more)
Tagged with:
-
Just migrated to a new QNAP (TVS-951X) and there was an issue getting vaapi working in my emby docker container. In QTS 4.3.6.0875 there are no default system groups (like video) and the /dev/dri folder is owned by admin:administrators with restrictive permissions, which are reset upon reboot. It was necessary to create an autorun.sh script to set things up for docker use. #!/bin/bash chown admin:video /dev/dri chmod 775 /dev/dri chown admin:video /dev/dri/* chmod 660 /dev/dri/* The docker needs to run as a user assigned to the video group (or have the video group's GID listed in GIDLIST), run in privileged mode, and have /dev/dri passed through as a device. This enables vaapi for me - qsv's a no-go. Edit: Something like this is (probably only) needed when running the docker as a non-root user.
- 7 replies
-
- docker
- hardwareacceleration
-
(and 1 more)
Tagged with:
-
Hi, I have a server on UnRaid, Docker is running on this server. EMBY works on Docker, with HW transcoding (VAAPI Intel i5-8600k), generally works great. I have a problem with films with 10bit color. If I play the movie directly (without transcoding) the colors are ok. If I turn on transcoding (to any resolution), the colors are so faded. Can i do something about it? Thank you for your help
-
I feel like I'm very close to having hardware acceleration working again, after switching to Debian Buster in a container, but I can't quite get it. This is AMD A10-5700, with Radeon HD 7660D. Please any help? As user emby, my ''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/r600_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: Mesa Gallium driver 18.3.4 for AMD ARUBA (DRM 2.50.0 / 4.15.0-46-generic, LLVM 7.0.1) vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileNone : VAEntrypointVideoProc My hardware_detection log: {"Key":"vaapi","Decription":"vaapi"},"qsv":{"Key":"qsv","Decription":"qsv"},"cuvid":{"Key":"cuvid","Decription":"cuvid"}}},"DetectionOutputs":[{"CodecProviderName":"Vaapi","StandardError":"\n","Result":{ "ProgramVersion": { "Version": "4.0.2-emby_2018_12_09", "Copyright": "Copyright (c) 2018-2018 softworkz for Emby Llc", "Compiler": "gcc 6.3.0 (crosstool-NG crosstool-ng-1.23.0)", "Configuration": "--cc=x86_64-pc-linux-gnu-gcc --arch=x86_64 --prefix=/home/embybuilder/Buildbot/x64/ffmpeg-x64/staging --pkg-config=pkg-config --disable-doc --disable-ffplay --disable-vdpau --disable-xlib --enable-fontconfig --enable-gnutls --enable-gpl --enable-iconv --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libwebp --enable-libx264 --enable-libzvbi --enable-version3 --enable-libsmbclient --enable-cuda --enable-cuvid --enable-libmfx --enable-nvenc --enable-vaapi --enable-cross-compile --cross-prefix=x86_64-pc-linux-gnu- --extra-libs='-lexpat -lfreetype -lfribidi -lfontconfig -liconv -lpng -lz -lvorbis -logg -lnettle -lhogweed -lgmp -laddns-samba4 -lasn1util-samba4 -lauthkrb5-samba4 -lCHARSET3-samba4 -lcliauth-samba4 -lcli-cldap-samba4 -lcli-ldap-common-samba4 -lcli-nbt-samba4 -lcli-smb-common-samba4 -lcom_err -lcommon-auth-samba4 -ldbwrap-samba4 -ldcerpc-binding -ldcerpc-samba-samba4 -ldl -lflag-mapping-samba4 -lgenrand-samba4 -lgensec-samba4 -lgse-samba4 -lgssapi_krb5 -llibcli-lsa3-samba4 -llibsmb-samba4 -linterfaces-samba4 -liov-buf-samba4 -lk5crypto -lkrb5 -lkrb5samba-samba4 -lkrb5support -lldb -lldbsamba-samba4 -lmessages-dgm-samba4 -lmessages-util-samba4 -lmsghdr-samba4 -lmsrpc3-samba4 -lndr -lndr-krb5pac -lndr-nbt -lndr-samba-samba4 -lndr-standard -lreplace-samba4 -lsamba-cluster-support-samba4 -lsamba-credentials -lsamba-debug-samba4 -lsamba-errors -lsamba-hostconfig -lsamba-modules-samba4 -lsamba-security-samba4 -lsamba-sockets-samba4 -lsamba-util -lsamba3-util-samba4 -lsamdb -lsamdb-common-samba4 -lsecrets3-samba4 -lserver-id-db-samba4 -lserver-role-samba4 -lsmbconf -lsmbd-shim-samba4 -lsmb-transport-samba4 -lsocket-blocking-samba4 -lsys-rw-samba4 -ltalloc -ltalloc-report-samba4 -ltdb -ltdb-wrap-samba4 -ltevent -ltevent-util -ltime-basic-samba4 -lutil-cmdline-samba4 -lutil-reg-samba4 -lutil-setid-samba4 -lutil-tdb-samba4 -luuid -lwbclient -lwinbind-client-samba4 -ldrm' --target-os=linux --enable-shared --disable-static" }, "Devices": [ { "DeviceIndex": 0, "DeviceInfo": { "VendorName": "Advanced Micro Devices, Inc. [AMD/ATI]", "DeviceName": "Trinity [Radeon HD 7660D]", "SubsytemVendorName": "ASRock Incorporation", "VendorId": 4098, "DeviceId": 39169, "SubsytemVendorId": 6217, "SubsytemDeviceId": 39169, "DevPath": "/sys/bus/pci/devices/0000:00:01.0", "DrmCard": "/dev/dri/card0", "DrmRender": "/dev/dri/renderD128", "IsEnabled": 1, "IsBootVga": 1, "Error": { "Number": -1, "Message": "Failed to initialize VA /dev/dri/renderD128. Error -1" } } } ], "Log": [ { "Level": 48, "Category": 0, "Message": "Begin GetVaAdapterInfo" }, { "Level": 40, "Category": 0, "Message": "Found 24 device entries" }, { "Level": 48, "Category": 0, "Message": "Begin get_nodes" }, { "Level": 48, "Category": 0, "Message": "Found 3 drm entries" }, { "Level": 48, "Category": 0, "Message": "End GetVaAdapterInfo" } ] } And a portion of the output when I run ''ffdetect vaencdec'': [DEVICE] DeviceIndex=0 DEVICEINFO:VendorName=Advanced Micro Devices, Inc. [AMD/ATI] DEVICEINFO:DeviceName=Trinity [Radeon HD 7660D] DEVICEINFO:SubsytemVendorName=ASRock Incorporation DEVICEINFO:VendorId=4098 DEVICEINFO:DeviceId=39169 DEVICEINFO:SubsytemVendorId=6217 DEVICEINFO:SubsytemDeviceId=39169 DEVICEINFO:DevPath=/sys/bus/pci/devices/0000:00:01.0 DEVICEINFO:DrmCard=/dev/dri/card0 DEVICEINFO:DrmRender=/dev/dri/renderD128 DEVICEINFO:IsEnabled=1 DEVICEINFO:IsBootVga=1 DEVICEINFO:ApiVersionMajor=1 DEVICEINFO:ApiVersionMinor=4 DEVICEINFO:Driver=Mesa Gallium driver 18.3.4 for AMD ARUBA (DRM 2.50.0 / 4.15.0-46-generic, LLVM 7.0.1) [DECODER] CodecName=MPEG2VIDEO CodecProfile=MPEG2_SIMPLE CodecId=2 MaxWidth=2048 MaxHeight=1152 ColorFormats=NV12 RTFormat=1 [/DECODER] [DECODER] CodecName=MPEG2VIDEO CodecProfile=MPEG2_MAIN CodecId=2 MaxWidth=2048 MaxHeight=1152 ColorFormats=NV12 RTFormat=1 [/DECODER] Here is my /dev/dri/: emby@emby:/$ ls -lha /dev/dri total 0 drwxr-xr-x 2 root root 100 Mar 16 12:23 . drwxr-xr-x 9 root root 500 Mar 16 12:23 .. crw-rw---- 1 root video 226, 0 Mar 16 12:23 card0 crw-rw---- 1 root video 226, 0 Mar 16 12:23 controlD64 crw-rw---- 1 root video 226, 128 Mar 16 12:23 renderD128 What else can I provide to help?
-
Like the title i can seem to get the hevc encoder to appear on the list. I use the last version of arch linux (4.19.8-arch1-1-ARCH) with the last beta of emby (3.6.0.81) I've already installed intel-media-driver but it just won't appear
-
Hello, I'm having difficulty getting hardware transcoding working. Docker /dev/dri / # ls -l /dev/dri total 0 crwxrwxrwx 1 root 44 226, 128 Oct 13 14:11 renderD128 Host /dev/dri > ls -l /dev/dri total 0 drwxr-xr-x 2 root root 120 Oct 1 18:01 ./ drwxr-xr-x 18 root root 3.7K Oct 13 10:22 ../ crw-rw---- 1 root video 226, 0 Oct 1 18:01 card0 crw-rw---- 1 root video 226, 1 Oct 1 18:01 card1 crw-rw---- 1 root video 226, 64 Oct 1 18:01 controlD64 crw-rw---- 1 root video 226, 128 Oct 1 18:01 renderD128 guid of video is 44. Hardware acceleration is set to: Video Acceleration API (VA API) VA API Device is set to: /dev/dri/renderD128 Full ffmpeg log is attached. Log error: [AVHWDeviceContext @ 0x2185940] libva: va_getDriverName() failed with unknown libva error,driver_name=(null) [AVHWDeviceContext @ 0x2185940] Failed to initialise VAAPI connection: -1 (unknown libva error). Device creation failed: -5. Failed to set value '/dev/dri/renderD128' for option 'vaapi_device': Input/output error Error parsing global options: Input/output error Host video cards: > lshw -numeric -C display *-display description: VGA compatible controller product: MGA G200eW WPCM450 [102B:532] vendor: Matrox Electronics Systems Ltd. [102B] physical id: 1 bus info: pci@0000:08:01.0 version: 0a width: 32 bits clock: 33MHz capabilities: pm vga_controller bus_master cap_list rom configuration: driver=mgag200 latency=64 maxlatency=32 mingnt=16 resources: irq:16 memory:dd000000-ddffffff memory:df000000-df003fff memory:de800000-deffffff memory:c0000-dffff *-display description: VGA compatible controller product: GP106GL [10DE:1C30] vendor: NVIDIA Corporation [10DE] physical id: 0 bus info: pci@0000:83:00.0 version: a1 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress vga_controller bus_master cap_list rom configuration: driver=nvidia latency=0 resources: irq:77 memory:fa000000-faffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:d000(size=128) memory:fb000000-fb07ffff Any and all suggestions are welcome!
-
Hi, When I am trying to transcode 4K HEVC, I get the following error: [AVHWFramesContext @ 0x7fc9e006fc00] Failed to read image from surface 0x19: 1 (operation failed). Metadata: [hevc @ 0x555e9355a680] Failed to transfer data to output frame: -5. title : Chapter 5 Error while processing the decoded data for stream #0:0 Chapter #0:5: start 3008.964000, end 3781.778000 Conversion failed! The appropriate ffmpeg command is: /usr/bin/ffmpeg -ss 00:14:24.000 -hwaccel vaapi -hwaccel_output_format yuv420p -vaapi_device /dev/dri/renderD128 -i file:"input.mkv" -threads 0 -map 0:0 -map 0:1 -codec:v:0 h264_vaapi -filter_complex "[0:3]scale=3840:2160:force_original_aspect_ratio=decrease[sub];[0:0][sub]overlay,format=nv12|vaapi,hwupload" -b:v 134494486 -maxrate 134494486 -bufsize 268988972 -profile:v 578 -level 41 -force_key_frames "expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+3))" -copyts -vsync -1 -codec:a:0 libmp3lame -ac 2 -ab 384000 -af "volume=2" -f segment -max_delay 5000000 -avoid_negative_ts disabled -map_metadata -1 -map_chapters -1 -start_at_zero -segment_time 3 -segment_time_delta -864 -individual_header_trailer 0 -segment_format mpegts -segment_list_type m3u8 -segment_start_number 288 -segment_list "/var/lib/emby/transcoding-temp/eda42ffc9546dbc9de88c2f0307fc5a7.m3u8" -y "/var/lib/emby/transcoding-temp/eda42ffc9546dbc9de88c2f0307fc5a7%d.ts" Now, interestingly, if I change the -hwaccel_output_format flag to "vaapi" instead of "yuv420p" and remove the -filter_complex flag, the transcoding works. I am wondering if Emby may need to modify the commands for transcoding HEVC content? I've also attached my ffmpeg log for reference. I am using a Radeon RX 560 with VA API. Thanks! ffmpeg-log.txt emby-log.txt
-
Dear Community. I am quiet new to emby. Until now i like it very much, it is clean and simple. On my archlinux box i am playing around with it. During that time i tried the hw acceleration of my i7-3770, which supports h264 accel through vaapi within ffmpeg. Running vaapi as root just works fine. Emby fails. Hardware Intel i7 3770 00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09) Subsystem: ASUSTeK Computer Inc. P8 series motherboard Kernel driver in use: i915 Kernel modules: i915 emby ffmpeg log: https://ip:port/emby/videos/2867cee654bf0d0ca3dc637f1bbfde0b/hls1/main/0.ts?DeviceId=ab07cd0fea138a788857db2bddfb59f6aef25385&MediaSourceId=2867cee654bf0d0ca3dc637f1bbfde0b&VideoCodec=h264&AudioCodec=aac&AudioStreamIndex=1&VideoBitrate=1616000&AudioBitrate=384000&Level=51&Profile=high&PlaySessionId=140d0cd68d4143569460200aff7e460a&api_key=754de6dbb1fa4a8782f4805076e40931&CopyTimestamps=false&TranscodingMaxAudioChannels=6&EnableSubtitlesInManifest=false&Tag=8f6ad6ae07ff85e31aec350a5a796098&RequireAvc=true&RequireNonAnamorphic=false&DeInterlace=true&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=False&TranscodeReasons=AudioCodecNotSupported,ContainerBitrateExceedsLimit {"Protocol":"File","Id":"2867cee654bf0d0ca3dc637f1bbfde0b","Path":"/demo.mkv","Type":"Default","Container":"mkv","Name":"720P/H264/AC3","IsRemote":false,"ETag":"8f6ad6ae07ff85e31aec350a5a796098","RunTimeTicks":24835198976,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"RequiresClosing":false,"SupportsProbing":true,"RequiresLooping":false,"VideoType":"VideoFile","MediaStreams":[{"Codec":"h264","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"1/50","Title":"demo","DisplayTitle":"demo","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"BitRate":7602939,"BitDepth":8,"RefFrames":1,"IsDefault":true,"IsForced":false,"Height":720,"Width":1280,"AverageFrameRate":25,"RealFrameRate":25,"Profile":"High","Type":"Video","AspectRatio":"16:9","Index":0,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"PixelFormat":"yuv420p","Level":41,"IsAnamorphic":false},{"Codec":"ac3","Language":"ger","TimeBase":"1/1000","CodecTimeBase":"1/48000","Title":"AC3 5.1 @ 640 kbps","DisplayTitle":"Ger AC3 5.1 @ 640 kbps","IsInterlaced":false,"ChannelLayout":"5.1","BitRate":640000,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Type":"Audio","Index":1,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"ac3","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"1/48000","Title":"AC3 5.1 @ 640 kbps","DisplayTitle":"Eng AC3 5.1 @ 640 kbps","IsInterlaced":false,"ChannelLayout":"5.1","BitRate":640000,"Channels":6,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Type":"Audio","Index":2,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"PGSSUB","Language":"ger","TimeBase":"1/1000","CodecTimeBase":"0/1","Title":"Forced PGS","DisplayTitle":"Ger Forced PGS","IsInterlaced":false,"IsDefault":true,"IsForced":true,"Type":"Subtitle","Index":3,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"DVDSUB","Language":"ger","TimeBase":"1/1000","CodecTimeBase":"0/1","Title":"Forced VobSub","DisplayTitle":"Ger Forced VobSub","IsInterlaced":false,"IsDefault":false,"IsForced":true,"Type":"Subtitle","Index":4,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"PGSSUB","Language":"ger","TimeBase":"1/1000","CodecTimeBase":"0/1","Title":"Full PGS","DisplayTitle":"Ger Full PGS","IsInterlaced":false,"IsDefault":false,"IsForced":false,"Type":"Subtitle","Index":5,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"DVDSUB","Language":"ger","TimeBase":"1/1000","CodecTimeBase":"0/1","Title":"Full VobSub","DisplayTitle":"Ger Full VobSub","IsInterlaced":false,"IsDefault":false,"IsForced":false,"Type":"Subtitle","Index":6,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"PGSSUB","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"0/1","Title":"Full PGS","DisplayTitle":"Eng Full PGS","IsInterlaced":false,"IsDefault":false,"IsForced":false,"Type":"Subtitle","Index":7,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false},{"Codec":"DVDSUB","Language":"eng","TimeBase":"1/1000","CodecTimeBase":"0/1","Title":"Full VobSub","DisplayTitle":"Eng Full VobSub","IsInterlaced":false,"IsDefault":false,"IsForced":false,"Type":"Subtitle","Index":8,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Level":0,"IsAnamorphic":false}],"PlayableStreamFileNames":[],"Formats":[],"Bitrate":8882939,"RequiredHttpHeaders":{}} /usr/bin/ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128 -i file:"/demo.mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_vaapi -b:v 1616000 -maxrate 1616000 -bufsize 3232000 -level 41 -force_key_frames "expr:gte(t,n_forced*3)" -vf "format=nv12|vaapi,hwupload" -copyts -vsync -1 -codec:a:0 aac -strict experimental -ac 6 -ab 384000 -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3 -individual_header_trailer 0 -segment_format mpegts -segment_list_type m3u8 -segment_start_number 0 -segment_list "/var/lib/emby/transcoding-temp/0c452153ac505b7983821dc637462816.m3u8" -y "/var/lib/emby/transcoding-temp/0c452153ac505b7983821dc637462816%d.ts" ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7.1.1 (GCC) 20170630 configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3 libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libavresample 3. 5. 0 / 3. 5. 0 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 libpostproc 54. 5.100 / 54. 5.100 [AVHWDeviceContext @ 0x559975fa6a40] No VA display found for device: /dev/dri/renderD128. [vaapi @ 0x559974a64050] Failed to create a VAAPI device but permissions should be okay? ls -la /dev/dri/ insgesamt 0 drwxr-xr-x 3 root root 100 26. Jul 10:54 . drwxr-xr-x 19 root root 3040 26. Jul 11:36 .. drwxr-xr-x 2 root root 80 26. Jul 10:54 by-path crw-rw---- 1 root video 226, 0 26. Jul 10:54 card0 crw-rw---- 1 root video 226, 128 26. Jul 10:54 renderD128 groups emby emby video Running that ffmpeg command as root seems to work just fine. I cannot play the result cause it splits in so many pieces. any other permissions emby needs now? Any other thoughts? derdigge
-
FireTV app: Can't play VA-API hardware transcoded videos
asnguy01 posted a topic in Android TV / Fire TV
I have Emby Server running on Ubuntu 16.04 and got VA-API hardware transcoding working (see my post here). I got it to play with transcoding on Chrome browser via the web app by setting max birate to 5Mbps. However, the same file doesn't play with the FireTV after setting to the same 5Mbps. Looking at the log, looks like ffmpeg is transcoding the file fine, but the FireTV (2nd gen, version 1.2.66a) doesn't want to play the file. Please see the attached logs. server-log.txt ffmpeg-transcode-chrome.txt ffmpeg-transcode-firetv.txt