AnsweredAssumed Answered

Using FFMPEG with Radeon GPU

Question asked by cbitterfield on Feb 13, 2020
Latest reply on Mar 2, 2020 by cbitterfield

Questions:

  1. Does anyone use the Radeon GPU for FFMPEG rendering?
  2. Is there a way to tell how loaded the GPU(s) are?
  3. Is anyone getting better than 1.9x performance?
  4. Is anyone able to get more than one stream working at a time?
  5. Has anyone solved the AMDGPU context error issue?

 

My System:

Ubuntu 18.04 LTS
Radeon Pro Drivers

FFMPEG (latest) compiled: ffmpeg version N-96728-ge007059

Hardware acceleration methods:

vdpau
vaapi

Encoders: 

V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V..... libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
V..... h264_v4l2m2m V4L2 mem2mem H.264 encoder wrapper (codec h264)
V..... h264_vaapi H.264/AVC (VAAPI) (codec h264)

 

Decoders:

VFS..D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
V..... h264_v4l2m2m V4L2 mem2mem H.264 decoder wrapper (codec h264)

 

Random Failures with this error:

amdgpu: The CS has been cancelled because the context is lost.

 

Example FFMPEG Command:

~/bin/ffmpeg -hwaccel vaapi  -threads 16 -vcodec h264_v4l2m2m -i input.mp4  -vaapi_device /dev/dri/renderD128 -vcodec h264_vaapi -vf format='nv12|vaapi,hwupload','deinterlace_vaapi=rate=field:auto=1,scale_vaapi=w=-1:h=480,hwupload' -b:v 2M output.mp4 -y

 

Performance is pretty bad: Ont 1.9 to 2.2x and you can only run one stream at a time.

There is no way to find out how utilized the GPU is.

 

Performance Results with "Time"

 

frame=100852 fps=122 q=-0.0 Lsize= 438812kB time=00:28:02.63 bitrate=2136.4kbits/s dup=4 drop=0 speed=2.03x
video:410551kB audio:26348kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.437883%
[aac @ 0x56160c682a40] Qavg: 333.827

real 13m50.061s
user 2m25.641s
sys 1m20.288s

On an NVIDIA 1060 this takes about 3 minutes.

Outcomes