A Firefox hardveres videódekódolása nagymértékben csökkenti a CPU-használatot videónézés közben. Ez energiát takarít meg, csökkenti a hőkibocsájtást és a ventilátorok zaját, miközben a számítógép erőforrásai szabadabbak a videónézés közbeni egyéb feladatokra. Bár a funkció nem tökéletes, érdemes lehet kipróbálni. A Firefox két megoldással tud hardveresen is gyorsított videólejátszást végezni:
- Az egyik a ffvpx, ami a Firefox beépített dekódere és az ffmpeg projekt alapján készül. Képes a VP8 és a VP9 videófolyamok dekódolásra. Használni tudja a VA-API-t, futhat távoli folyamatként, sandbox-ban, de ekkor lehet, hogy még blokkolódik a hardveres lejátszási képesség - a fejlesztők dolgoznak rajta, hogy ne így legyen, talán mostanra már meg is oldódott a probléma.
- A másik az ffmpeg külső (rendszerszintű) dekódoló. Szélesebb a támogatott videófolyamok támogatása. Használni tudja a VA-API-t, futhat távoli folyamatként, sandbox-ban, de ekkor is működik a hardveres lejátszási képesség. Ugyanakkor külső csomag, a FFmpeg programkönyvtár telepítését igényli.
A hardveresen támogatott videólejátszás bekapcsolásához azonban a hardvernek is támogatnia kell az adott formátumot és a VA-API programkönyvtárat. A Video Acceleration API (VA-API) lehetővé teszi a hardveresen gyorsított videódekódolást és -dekódolást különböző műveletek (VLD, IDCT, mozgáskompenzáció stb.) és a a napjainkban elterjedt kódolási szabványokhoz (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264 és VC-1/WMV3). Interfész biztosítja a mai GPU-k videódekódolási képességeinek teljes körű kiaknázásához.
A Hardveresen gyorsított videólejátszás beállítása
AMD és Intel gyártmányok, valamint a nyílt forráskódú illesztőprogramot használó NVIDIA gyártmány esetén közvetlenül használható a VA-API. A Video Acceleration API (VA-API) egy egységesített felület és nyílt forráskódú programkönyvtár a hardveresen gyorsított videó-lejátszáshoz és -készítéshez. Az Intel fejlesztése. Linux-on jelenleg a VA-API támogatását több csomag valósítja meg, gyártók szerint ezek a következőek:
Hardveresen támogatott videólejátszás bekapcsolása
A hardveres videólejátszás bekapcsolása a Firefox böngészőben
Két irányba indulhat a hardveresen támogatott videó lejátszás esetében:
- Az ffvpx a Firefox beépített dekódere (az ffmpeg projekt alapján), amely képes VP8 és VP9 dekódolásra. Használhatja a VAAPI-t, ha a media.ffmpeg.vaapi.enabled be van állítva. Alapértelmezés szerint RDD folyamatban fut, ahol a VAAPI-t a sandbox blokkolja. Az RDD letiltható a 'media.rdd-ffvpx.enabled' pref értékkel.
- Az ffmpeg külső (rendszerszintű) dekódoló, és a H.264, VP8 és VP9 dekódolására szolgál (az AV1-et a DAV1DDecoder dekódolja). Használhatja a VAAPI-t, ha a media.ffmpeg.vaapi.enabled be van állítva. Alapértelmezés szerint olyan tartalmi folyamatban fut, ahol a VAAPI-t a sandbox engedélyezi. Az RDD engedélyezhető a media.rdd-ffmpeg.enabled pref értékkel, amely alapértelmezés szerint ki van kapcsolva.
A dekóder felvételi sorrendje először ffvpx, majd ffmpeg, így amikor megnyitja a VP8 és VP9 (amelyet az ffvpx támogat), az ffvpx van kiválasztva. Amikor a media.ffmpeg.vaapi.enabled be van állítva, megpróbálja a böngésző megnyitni a VAAPI-t, de nem sikerül, így az szoftver dekódert használjuk.
Rövid távú megoldás az ffvpx letiltása és csak az ffmpeg használata, a „media.ffvpx.enabled” beállítása false-ra és a böngésző újraindítása. Hosszú távú megoldás az ffvpx és az ffmpeg áthelyezése GPU folyamatba, ahol a GPU hozzáférés engedélyezve van.
Távoli, sandbox-ba zárt folyamatok
Ami az RDD-t illeti, ez egy erősen korlátozott folyamat, sandbox-ban futó folyamat, amelyet harmadik féltől származó programkönyvtárakhoz használnak, és általában nem szabad letiltani. Ha a 'media.rdd-process.enabled' értéket false-ra állítja, akkor az összes videódekóder korlátozás nélkül fut a tartalomfolyamatban (ami veszélyforrás).
Alapvetően talán egyszerűbb, ha a külső modulként elérhető FFmpeg-et használja a Firefox a videótartalmak hardveresen gyorsított lejátszásához. Az FFmpeg programkönyvtárat a „libavcodec58” csomag telepítésével telepítheti, a következő módon:
sudo apt install libavcodec58
Amennyiben van működő hardveresen gyorsított videólejátszás, és az FFmeg is telepítve van a Firefox böngészőt rá kell venni, hogy használja ezt a programkönyvtárat.
A Firefox böngészőben számos olyan funkció is beállítható, amelyeknek nincsen a felhasználói felületen beállítási lehetősége. Ezek a beállításokkal további testreszabási beállításokat végezhető el. A felület eléréséhez írja be a címsorba a következőt:
about:config
A megjelenő ablakban kattintson a „Kockázat elfogadás és továbblépés” gombra:
Az megjelenő felső keresőmezőben kereshető a beállítás neve részben vagy egészben. A keresés után a szűrt listából:
- Logikai érték esetén: a logikai értékre duplán kattintva, vagy a sorvégi gombra kattintva változható meg;
FFmpeg használatának beállítása
FFmpeg használatának engedélyezése:
media.ffmpeg.enabled
Az alapértelmezett false állítsa át true értékre.
FFmpeg hardveres támogatott videólejátszásának engedélyezése a VA-API-n keresztül:
Beállítás neve:
media.ffmpeg.vaapi.enabled
Az alapértelmezett false állítsa át true értékre.
FFmpeg hardveres támogatott videólejátszásának engedélyezése a VA-API-n keresztül a DRM tartalmakhoz:
media.ffmpeg.vaapi-drm-display.enabled
Az alapértelmezett false állítsa át true értékre.
Majd tiltsa le a belső videólejátszást:
Beállítás neve:
media.ffvpx.enabled
Az alapértelmezett true állítsa át false értékre.
media.rdd-ffvpx.enabled
Az alapértelmezett true állítsa át false értékre.
media.rdd-vpx.enabled
Az alapértelmezett true állítsa át false értékre.
Ha így működik a hardveresen gyorsított videólejátszás, akkor tegye lehetővé, hogy a Firefox sandbox-ban (nagyobb biztonság) futtassa az FFmpeg folyamatait:
media.rdd-ffmpeg.enabled
Az alapértelmezett false állítsa át true értékre. Ez lesz az alapértelmezett a Firefox 97-es verziójától kezdve.
Belső lejátszó használatának beállítása
Megpróbálhatja a FFmpeg telepítése nélkül bekapcsolni a hardveresen gyorsított videólejátszást. Ez a már említett Firefox böngészőbe integrált ffvpx lejátszót használja.
FFmpeg használatának tiltása:
media.ffmpeg.enabled
Az alapértelmezett false értéket állítsa vissza.
A böngészőbe épített ffvpx használata (ezt is érdemes kipróbálni az FFmpeg letiltása esetén, vagy ha az nem működne).
Beállítás neve:
media.ffvpx.enabled
Az alapértelmezett true értéket állítsa vissza.
Ha így működik a hardveresen gyorsított videólejátszás, akkor tegye lehetővé, hogy a Firefox sandbox-ban (nagyobb biztonság) futtassa az ffvpx és vpx folyamatait:
media.rdd-ffvpx.enabled
Az alapértelmezett true értéket állítsa vissza.
media.rdd-vpx.enabled
Az alapértelmezett true értéket állítsa vissza.
További érdekességek
Az AV1 videóformátum támogatása:
media.av1.enabled
Wayland használata esetén
Amennyiben Wayland protokollal kommunikáló grafikus szervert használ, akkor hozza létre a következő kulcsot:
widget.wayland-dmabuf-vaapi.enabled
és állítsa true értékre.
Ehhez engedélyezni kell a WebRender használatát is, amely napjainkban már alapértelmezetten megtörténi, de ha mégsem, akkor:
gfx.webrender.enabled
beállítás true értékre történő állításával teheti meg.
A Wayland alkalmazása mellett szükség lehet a következő indítási paraméterre is:
MOZ_ENABLE_WAYLAND=1
Hogyan győződjön meg a sikeres beállításról?
Ha a Firefox futása alapján nem eldönthető, alacsonyabb CPU használat, jobb teljesítményű lejátszás, akkor a Firefox böngészőt lehet indítani részletesebb videó hibakeresési paraméterrel is, például:
MOZ_LOG="PlatformDecoderModule:5" firefox
vagy Wayland esetében:
MOZ_LOG="PlatformDecoderModule:5" MOZ_ENABLE_WAYLAND=1 firefox
És ha itt FFmpeg esetében feltűnik a naplóbejegyzések között, az alábbi:
Initialising VA-API FFmpeg decoder
Akkor sikerült a hardveresen támogatott videólejátszást működésre bírni a Firefox böngészőben.
Youtube és a formátumok
Amint az a fentiekből sejthető, a hardveresen támogatott videólejátszás bekapcsolása nem ördöngösség. A nyereség nem más, mint energiatakarékosság, csendesebben és hűvösebben üzemelő számítógép, hosszabb üzemidővel bíró laptop. Ugyanakkor figyelembe kell venni, hogy az adott GPU milyen képességekkel rendelkezik, milyen videocodekeket ismer és a meglévő eszközök, hogyan tudják ezt kihasználni. Jó példa erre a Youtube, amely általában a legújabb megoldásokkal kényezteti el a videókat néző publikumot. Ám nem veszi figyelembe, hogy az adott számítógép milyen formátumot tud optimálisan lejátszani. Így kénytelen a felhasználó segíteni ebben, például a enhanced-h264ify nevű Firefox bővítménnyel, amellyel a támogatott videocodekek adhatjuk meg a Youtube számára a bővítmény segítségével.
További információk
- Firefox on Fedora finally gets VA-API on Wayland
- Hardware video acceleration
- Firefox: Hardware video acceleration
- Intel Quick Sync Video
- AMD: Unified Video Decoder
- Enabling accelerated video decoding in Firefox on Ubuntu 21.04
- Implement ffmpeg/VAAPI video playback
- Make VAAPI work in the RDD process
- RDD/VAAPI: Sandbox: seccomp sandbox violation by syscall 16 (DRM_IOCTL_VERSION)
- Add VA-API decode path to bundled ffvpx