| 171 | | Intel QSV (Quick Sync Video) is a technology which allows decoding and encoding using recent Intel CPU and integrated GPU, supported on recent Intel CPUs. |
| 172 | | Note that the (CPU)GPU needs to be compatible with both QSV and OpenCL. Some (older) QSV -enabled GPUs aren't compatible with OpenCL. |
| 173 | | See: |
| 174 | | http://www.intel.com/content/www/us/en/architecture-and-technology/quick-sync-video/quick-sync-video-general.html |
| 175 | | https://software.intel.com/en-us/articles/intel-sdk-for-opencl-applications-2013-release-notes |
| 176 | | |
| 177 | | To enable QSV support, you need the Intel Media SDK integrated in the Intel Media Server Studio: |
| 178 | | https://software.intel.com/en-us/intel-media-server-studio |
| 179 | | |
| 180 | | The Intel Media Server studio is available for both Linux and Windows, and contains the libva and libdrm libraries, the libmfx dispatcher library and the intel drivers. |
| 181 | | libmfx is the library which selects the codec depending on the system capabilities, falling back to a software implementation if the hardware accelerated codec is not available). |
| 182 | | |
| 183 | | FFmpeg QSV support relies on libmfx, but the library provided by Intel does not come with {{{pkg-config}}} files and a proper installer. Thus the easiest to install the library is to use the libmfx version packaged by lu_zero here: |
| 184 | | https://github.com/lu-zero/mfx_dispatch |
| 185 | | |
| 186 | | Requirements on Windows: install the Intel Media SDK packaged in the Intel Media Server Studio, which comes with a graphic installer, and a MinGW compilation enviroment (for example provided by MSYS2 with a corresponding Mingw-w64 package). Then you need to build libmfx and install it in a path recognized by pkg-config. For example if you install in {{{/usr/local}}} then you need the update the {{{$PKG_CONFIG_PATH}}} environment variable to make it point to {{{/usr/local/lib/pkgconfig}}}. |
| 187 | | |
| 188 | | Requriments on Linux: you need either to rely on the Intel Media Server Studio for Linux, or use a recent enough supported system, with the libva and libdrm libraries, the libva Intel drivers, and the libmfx library packaged by lu_zero. |
| 189 | | Note: in case you use the Intel Media Server Studio generic installation script, the installation script may overwrite your system libraries and break the system. |
| 190 | | |
| 191 | | Check the following website for updated information about the Intel Graphics stack on the various Linux platforms: |
| 192 | | https://01.org/linuxgraphics |
| 193 | | |
| 194 | | To enable QSV support in the FFmpeg build, configure with {{{--enable-libmfx}}}. |
| 195 | | |
| 196 | | Support for decoding and encoding is integrated in FFmpeg through several codecs identified by the {{{_qsv}}} suffix. In particular, it currently supports MPEG2 video, VC1 (decoding only), H.264 and H.265. |
| 197 | | |
| 198 | | For example to encode to H.264 using {{{h264_qsv}}}, you can use the command: |
| 199 | | {{{ |
| 200 | | ffmpeg -i INPUT -c:v h264_qsv -preset:v faster out.qsv.mp4 |
| 201 | | }}} |
| 202 | | |
| 203 | | |
| 204 | | If you have a Kaby Lake CPU, you can encode with HEVC using {{{hevc_qsv}}}: |
| 205 | | {{{ |
| 206 | | ffmpeg -i INPUT -c:v hevc_qsv -load_plugin hevc_hw -preset:v faster out.qsv.mp4 |
| 207 | | }}} |
| | 171 | See [wiki:Hardware/QuickSync QuickSync]. |