Jump to content

Recommended Posts

ThermoDust
Posted

Finally got VAAPI to work on my machine after a rebuild and upgrade to Debian 9. Now I need a bit more help, what is a node? When I choose the VA API one of the sections says node and it lists a device, is it already correct?

 

Here is my VAInfo output: 

libva info: VA-API version 0.39.4
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.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Kabylake - 1.7.3
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          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSlice
      VAProfileVP9Profile2            : VAEntrypointVLD

This is the current emby transcoding node: /dev/dri/renderD128

Posted

I think the default we've chosen should suffice. I think in most cases you'll only need to customize it if you have multiple gpu's.

ThermoDust
Posted

Can you give me an example of the command called? As when I try using /usr/bin/ffmpeg -loglevel warning -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128 -fflags +genpts -i test.mp4 -o test2.mp4 I get errors.

 

[AVHWDeviceContext @ 0x5d43880] No VA display found for device: /dev/dri/renderD128.
Device creation failed: -22.
[h264 @ 0x5d74540] No device available for decoder: device type vaapi needed for codec h264.
Device setup failed for decoder on input stream #0:0 : Invalid argument
Posted

The best way to get a complete example would be to just play something in emby and then check the ffmpeg log.

ThermoDust
Posted

Slight issue, while it is playing I don't think it is doing so right.

/usr/bin/ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128 -i file:"/srv/f1eef17e-3750-49be-83af-a11ff8ba6d3a/Media/TV Shows/Avatar- The Last Airbender/Season 01/Avatar- The Last Airbender - S01E01.mp4" -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_vaapi -vf "format=nv12|vaapi,hwupload,scale_vaapi=w=426:h=318"  -b:v 192000 -maxrate 192000 -bufsize 384000 -profile:v 578 -level 41 -force_key_frames "expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+2))" -copyts -vsync -1 -codec:a:0 libmp3lame -ac 2 -ab 128000  -f segment -max_delay 5000000 -avoid_negative_ts disabled -map_metadata -1 -map_chapters -1 -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-server/transcoding-temp/b845bff822aa9d2976e6c1027db0132b.m3u8" -y "/var/lib/emby-server/transcoding-temp/b845bff822aa9d2976e6c1027db0132b%d.ts"

ffmpeg version N-45194-g40102a213-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 13.100 / 58. 13.100
  libavformat    58. 10.100 / 58. 10.100
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 12.100 /  7. 12.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
[AVHWDeviceContext @ 0x440e240] No VA display found for device: /dev/dri/renderD128.
Device creation failed: -22.
Failed to set value '/dev/dri/renderD128' for option 'vaapi_device': Invalid argument
Error parsing global options: Invalid argument
No VA display found for device: /dev/dri/renderD128.
Device creation failed: -22.
 
I got this till I changed it to hwaccel_device when I was testing
Posted

Right well I would put it back to default.

Posted

Slight issue, while it is playing I don't think it is doing so right.

/usr/bin/ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128 -i file:"/srv/f1eef17e-3750-49be-83af-a11ff8ba6d3a/Media/TV Shows/Avatar- The Last Airbender/Season 01/Avatar- The Last Airbender - S01E01.mp4" -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_vaapi -vf "format=nv12|vaapi,hwupload,scale_vaapi=w=426:h=318"  -b:v 192000 -maxrate 192000 -bufsize 384000 -profile:v 578 -level 41 -force_key_frames "expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+2))" -copyts -vsync -1 -codec:a:0 libmp3lame -ac 2 -ab 128000  -f segment -max_delay 5000000 -avoid_negative_ts disabled -map_metadata -1 -map_chapters -1 -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-server/transcoding-temp/b845bff822aa9d2976e6c1027db0132b.m3u8" -y "/var/lib/emby-server/transcoding-temp/b845bff822aa9d2976e6c1027db0132b%d.ts"

ffmpeg version N-45194-g40102a213-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 13.100 / 58. 13.100
  libavformat    58. 10.100 / 58. 10.100
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 12.100 /  7. 12.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
[AVHWDeviceContext @ 0x440e240] No VA display found for device: /dev/dri/renderD128.
Device creation failed: -22.
Failed to set value '/dev/dri/renderD128' for option 'vaapi_device': Invalid argument
Error parsing global options: Invalid argument
 
No VA display found for device: /dev/dri/renderD128.

Device creation failed: -22.

 

I got this till I changed it to hwaccel_device when I was testing

Like Luke said put it back to default and make sure that your Linux "emby" user (user owning emby server process) is part of the video group. On my Sinology NAS (it's running on Linux) that was the message I got until I put my emby user into the video group. Basically emby needs the proper rights to access the drivers. After I've done this, vaapi works like it should.
Posted

Yes trust the defaults unless you have a reason to change them.

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...