Hardware Transcoding with AMD Cards?

Is it possible to use the feature of hardware-based transcoding with AMD cards? I’m thinking about buying an AMD WX 3100 for my server and use it for transcoding. Everywhere only Intel and Nvidia are described as working, but what about AMD?

1 Like

@Mitzsch said:
Is it possible to use the feature of hardware-based transcoding with AMD cards?

No, not on Linux, only on Windows, at the moment.

https://support.plex.tv/articles/115002178853-using-hardware-accelerated-streaming/

Thanks!
And then also AMD Cards will work?

@Mitzsch said:
And then also AMD Cards will work?

I’m Linux only support, sorry :smiley: Please take a look at the Windows section of the forum. The Windows AMD threads seem very positive.

ok, thanks!
I will have a look at the windows thread site. :slight_smile:

I guess this hasn’t changed? Hardware accelerated streaming for AMD cards still doesn’t work for Linux right?

Hello,

Do you have any news regarding AMD gpu transcoding on linux? When will this be available for Linux Os?

Until there exists AMD support in the VA-API, there won’t be AMD support.
AMD uses MESA making this AMD GPU support very unlikely in the immediate future.
Intel QSV and nVidia are the two supported forms at this time.

Hello,

Thank you for your feedback.

Hi Chuck

Can you elaborate regarding the status of VA API support for AMD?

My AMD APU based system seems to have support enabled based on vainfo output.

libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Mesa Gallium driver 19.0.8 for AMD Radeon R5 Graphics (CARRIZO, DRM 3.27.0, 5.0.0-29-generic, LLVM 8.0.0)
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
VAProfileHEVCMain : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc

1 Like

Thanks, Good information.

Can you use the public FFMPEG binaries to perform HW transcoding with that card?
If so, I will find out why it’s not working / I’m not aware it’s working here.

If not, then we have the answer as the transcoder is a derivative of that FFMPEG upstream.

It works beautifully. Here is the output:

~$ ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i A.Long.Way.mkv -c:v h264_vaapi -b:v 1M -c:a copy -bf 0 out.new.mkv

ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, matroska,webm, from ‘A.Long.Way.mkv’:
Metadata:
encoder : libebml v1.3.0 + libmatroska v1.4.0
creation_time : 2014-08-13T21:25:48.000000Z
Duration: 01:36:46.29, start: 0.000000, bitrate: 2135 kb/s
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709/bt709/unknown, progressive), 1920x1080, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
File ‘out.new.mkv’ already exists. Overwrite ? [y/N] Y
Stream mapping:
Stream #0:0#0:0 (h264 (native) → h264 (h264_vaapi))
Stream #0:1#0:1 (copy)
Press [q] to stop, [?] for help
[h264_vaapi @ 0x564df3ed59c0] Warning: some packed headers are not supported (want 0xd, got 0).
Output #0, matroska, to ‘out.new.mkv’:
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: h264 (h264_vaapi) (High) (H264 / 0x34363248), vaapi_vld, 1920x1080 [SAR 1:1 DAR 16:9], q=0-31, 1000 kb/s, 23.98 fps, 1k tbn, 23.98 tbc (default)
Metadata:
encoder : Lavc57.107.100 h264_vaapi
Stream #0:1(eng): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp (default)
frame=15401 fps=135 q=-0.0 Lsize= 88313kB time=00:10:42.51 bitrate=1126.0kbits/s speed=5.61x
video:80553kB audio:7442kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.361517%

I interrupted the transcoding at this point.

So, it seems that ffmpeg as well as the drivers are in place and running fine.

Any ideas on why Plex does not use VA API?

1 Like

I am also keen to have an update on this, would much prefer to use hw transcode with my AMD GPU where I can!

Hey guys :slight_smile:

I inquired into this and found that support for AMD hardware transcoding on Linux is something the transcoder team is exploring, but have no commitments to add support for at this time.

3 Likes

Appreciate the update and the efort!

Can you shed some light on the difficulty of the required work?

Given that both VA-API and ffmpeg basically work alredy, should it not be “easy” to just use the VA-API, same as the vanilla ffmpeg is doing? What am I missing here?

Also, I have to point out that this should be a bread and butter feature for Plex, no?

Windows has support, im gettings about 5 hardware transcodes from HEVC 10bit to H.264

Only problem is that plex is horrible when it comes to ASS subtitles and has issues even if you choose “only show complex image formats” so it causes uneccesarry transcoding which is a pain.

@ZyFinity

Do you have something to add relating to this topic? Hijacking a thread and discussing subtitles is very poor netiquette

WIndows transcoding operates entirely differently. Maybe the better platform to use is Windows?

Honestly i feel like i do after spending so much time gathering evidence for my other posts and just never being noticed at all :frowning:

Did you notice the where there ASS subtitle transcoding has been addressed?