https://trac.ffmpeg.org/wiki/HWAccelIntro
ffmpeg虽然支持opencl,但是目前只用在两个滤镜中。
OpenCL
Official website:
https://www.khronos.org/opencl/
Currently only used in filtering (deshake and unsharp filters). In order to use OpenCL code you need to enable the build with --enable-opencl. An API to use OpenCL API from FFmpeg is provided in libavutil/opencl.h. No decoding/encoding is currently supported (yet).
For enable-opencl to work you need to basically install your local graphics cards drivers, as well as SDK, then use its .lib files and headers.
FFmpeg implementations
AVHWAccel | Decoder | Encoder | CLI | Filtering | AVHWFramesContext | |
---|---|---|---|---|---|---|
CUDA1 | Y | Y | N2 | Y | Y | Y |
Direct3D 11 | Y | N | N/A | N | N | N |
DXVA2 | Y | N | N/A | Y | N | Y |
MediaCodec | Y | Y | N | N/A | N/A | N |
MMAL | Y | Y | N/A | N | N/A | N |
NVENC | N/A | N3 | Y | Y | N/A | N |
OpenCL | N/A | N/A | N/A | N/A | Y | N |
Quick Sync | Y | Y | Y | Y | N | N* |
VA-API | Y | N | Y | Y | Y | Y |
VDA | Y | Y | N/A | Y | N/A | N |
VDPAU | Y | N† | N/A | Y | N | Y |
VideoToolbox | Y | N | Y | Y | N | N |
XvMC | Y | N† | N/A | N | N/A | N |
N/A This feature is not directly supported by the API, or is not currently implementable.
* Work in progress. If "Y" is indicated, infrastructure is in place but no filters have been implemented yet.
† Actually yes, but is deprecated for technical reasons and should not be used.
1 Also known as "CUDA Video Decoding API" or "CUVID" or "NvDecode?".
2 See NVENC
3 See CUDA