Refer to HWAccelIntro – FFmpeg
Platform API Availability
Linux | Windows | Android | Apple | Other | ||||||
---|---|---|---|---|---|---|---|---|---|---|
AMD | Intel | NVIDIA | AMD | Intel | NVIDIA | macOS | iOS | Raspberry Pi | ||
AMF | N | N | N | Y | N | N | N | N | N | N |
NVENC/NVDEC/CUVID | N | N | Y | N | N | Y | N | N | N | N |
Direct3D 11 | N | N | N | Y | Y | Y | N | N | N | N |
Direct3D 9 (DXVA2) | N | N | N | Y | Y | Y | N | N | N | N |
libmfx | N | Y | N | N | Y | N | N | N | N | N |
MediaCodec | N | N | N | N | N | N | Y | N | N | N |
Media Foundation | N | N | N | Y | Y | Y | N | N | N | N |
MMAL | N | N | N | N | N | N | N | N | N | Y |
OpenCL | Y | Y | Y | Y | Y | Y | P | Y | N | N |
OpenMAX | P | N | N | N | N | N | P | N | N | Y |
V4L2 M2M | N | N | N | N | N | N | P | N | N | N |
VAAPI | P | Y | P | N | N | N | N | N | N | N |
VDPAU | P | N | Y | N | N | N | N | N | N | N |
VideoToolbox | N | N | N | N | N | N | N | Y | Y | N |
Key:
- Y Fully usable.
- P Partial support (some devices / some features).
- N Not possible.
FFmpeg API Implementation Status
Decoder | Encoder | Other support | ||||||
---|---|---|---|---|---|---|---|---|
Internal | Standalone | Hardware output | Standalone | Hardware input | Filtering | Hardware context | Usable from ffmpeg CLI | |
AMF | N | N | N | Y | Y | N | Y | Y |
NVENC/NVDEC/CUVID | N | Y | Y | Y | Y | Y | Y | Y |
Direct3D 11 | Y | - | Y | - | - | F | Y | Y |
Direct3D 9 / DXVA2 | Y | - | Y | - | - | N | Y | Y |
libmfx | - | Y | Y | Y | Y | Y | Y | Y |
MediaCodec | - | Y | Y | N | N | - | N | N |
Media Foundation | - | N | N | N | N | N | N | N |
MMAL | - | Y | Y | N | N | - | N | N |
OpenCL | - | - | - | - | - | Y | Y | Y |
OpenMAX | - | N | N | Y | N | N | N | Y |
RockChip MPP | - | Y | Y | N | N | - | Y | Y |
V4L2 M2M | - | Y | N | Y | N | N | N | Y |
VAAPI | Y | - | Y | Y | Y | Y | Y | Y |
VDPAU | Y | - | Y | - | - | N | Y | Y |
VideoToolbox | Y | N | Y | Y | Y | - | Y | Y |
Key:
- - Not applicable to this API.
- Y Working.
- N Possible but not implemented.
- F Not yet integrated, but work is being done in this area
Default/Linux/Ubuntu arm
ffmpeg -hwaccels
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu/Linaro 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-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
Hardware acceleration methods:
vdpau
vaapi
Default Windows
D:\Develop\Video2020\FFMPEG\ffmpeg-4.3-win64-shared\bin>ffmpeg.exe -hwaccels
ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200621
configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Hardware acceleration methods:
cuda
dxva2
qsv
d3d11va
Rockchip
/usr/ffmpeg-rkmp/bin/ffmpeg -hwaccels
ffmpeg version git-2018-11-25-e488d7b4f5 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04)
configuration: --prefix=/usr/ffmpeg-rkmp --enable-static --disable-shared --enable-gpl --disable-debug --disable-doc --disable-vaapi --enable-pthreads --enable-neon --enable-vfp --enable-rkmpp --enable-version3 --enable-libdrm --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-gnutls
libavutil 56. 24.101 / 56. 24.101
libavcodec 58. 40.100 / 58. 40.100
libavformat 58. 23.100 / 58. 23.100
libavdevice 58. 6.100 / 58. 6.100
libavfilter 7. 46.100 / 7. 46.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Hardware acceleration methods:
drm