Descodificació de maquinari FFmpeg - HWAccelIntro

Ffmpeg Hardware Decoding Hwaccelintro



Original (anglès): https://trac.ffmpeg.org/wiki/Hardware/QuickSync
Advertiment: No instal·leu l'SDK d'Intel Media si no esteu segur, sobretot a Linux. En molts casos, no el necessiteu i provar d’utilitzar-lo pot trencar altres coses.

'Intel Quick Sync Video' és el nom comercial per a un conjunt de funcions de maquinari disponibles a moltes GPU Intel.



1. Suport de maquinari

imatge



2. Suport API

Es pot accedir al maquinari mitjançant moltes API diferents:



  • DXVA2 / D3D11VA
    Aquestes són les API estàndard de Windows implementades pels controladors gràfics Intel per donar suport a la descodificació de vídeo.

  • libmfx a Linux
    Es tracta d’una biblioteca d’Intel que es pot instal·lar com a part de l’SDK d’Intel Media i admet un subconjunt de casos de codificació i descodificació.

  • libmfx al Windows
    Es tracta d’una biblioteca que inclou el controlador de gràfics Intel que admet tots els casos de codificació i descodificació.



  • Media Foundation
    Una altra API de Windows que admet alguns casos de codificació i descodificació amb controladors gràfics Intel. Ffmpeg no admet.

  • VAAPI amb controlador i965
    Aquest és el principal controlador gratuït per a l'estructura libva / VAAPI. La majoria de distribucions de Linux l’envasen.

  • VAAPI amb controlador iHD
    El backend libmfx de Linux utilitza els controladors VAVA i libva modificats, que també poden utilitzar directament l'usuari.

3. Linux

Podeu instal·lar Media Server Studio des del binari a https://software.intel.com/en-us/intel-media-server-studio/. Tanmateix, Media Server Studio només admet un nombre limitat de plataformes HW i distribucions Linux. Tota la pila de recursos de codi obert proporciona una gamma més àmplia de plataformes de maquinari i distribucions Linux compatibles.

Pila de suports de codi obert Intel
Nom del projecte: gràfics Gen compatibles Reposició de codi obert
MSDK: gen9 + https://github.com/Intel-Media-SDK/MediaSDK
Libva: GEN5 + https://github.com/intel/libva
Controlador I965: gen5 ~ gen9.5 https://github.com/intel/intel-vaapi-driver
Controlador iHD: gen9 + https://github.com/intel/media-driver
VAAPI VS libmfx

Si és possible, es recomana utilitzar VAAPI amb el controlador i965. Si el vostre cas d’ús requereix específicament el seu conjunt de funcions específiques, només s’utilitzarà libmfx.

  • VAAPI / i965
    està empaquetat estàndard a la majoria de distribucions de Linux.
    executa tot el maquinari disponible, inclosos els dispositius antics i més econòmics.
    Una gamma més àmplia de suport per a còdecs.
    és una API genèrica per a aplicacions que també poden utilitzar maquinari AMD / Nvidia i Mesa.
    interopera amb API estàndard (EGL / OpenGL, Op enCL).
  • libmfx / iHD
    pot proporcionar una millor qualitat de codificació (?) en alguns casos.
    pot proporcionar un rendiment de codificació superior en alguns casos (especialment en gràfics Iris).
    Una API genèrica per a aplicacions que també s’executen a Windows.
    és interoperable amb implementacions Intel OpenCL.

4.Windows

Podeu obtenir la versió de Windows MSDK https://software.intel.com/media-sdk

5. Córrer

VAAPI

Vegeu maquinari / VAAPI: https://trac.ffmpeg.org/wiki/Hardware/VAAPI

libmfx

La biblioteca té diverses opcions per triar i els possibles valors vàlids depenen de la versió i el maquinari. Libavcodec intenta assignar les opcions comunes a l'opció libmfx amb prudència, però el mapatge és cru i defectuós, sobretot pel que fa al control de velocitat.

L'ús d'una combinació no vàlida pot provocar el missatge: 'El mode d'execució QSV no admet el mode de control de velocitat seleccionat. Trieu un altre mode. ' Normalment, aquest missatge és precís, però també pot fer referència a altres problemes, com ara la manca de dispositius disponibles.

6. Instal·leu el Media SDK a Linux

Tingueu en compte que són necessaris tant els pegats del nucli com les biblioteques del sistema modificades. No es recomana instal·lar-lo a cap màquina que també s'utilitzi per a altres propòsits, ja que no utilitza el mecanisme de distribució normal i pot ser destruït / destruït per altres paquets de programari.

  • Màquina de construcció:
    Creeu i instal·leu una planificació de paquets:< https://github.com/lu-zero/mfx_dispatch >. (També podeu extreure els fitxers necessaris de la instal·lació del Media SDK tal com es descriu al manual d'instal·lació; no es recomana, només cal que utilitzeu el paquet.)
    Construeix ffmpeg amb –enable-libmfx.

  • Màquina objectiu:
    Assegureu-vos que l’ordinador de destinació tingui una CPU compatible. La versió actual només admet gràfics gen8 / gen9 en CPU cares (marca 'Xeon' / 'Core i'). El mateix nucli gràfic de la CPU més barata (marca 'Pentium' / 'Celeron' / 'Atom') està explícitament desactivat, possiblement per motius comercials.
    Obteniu una versió del nucli compatible amb una versió neta (actualment 4.4:< https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz >) i apliqueu els pegats proporcionats. Construir i instal·lar.
    Construïu i instal·leu els arbres libva i libdrm proporcionats.
    Executeu l'script d'instal·lació del Media SDK per instal·lar els components propietaris.
    Reinicia.