[Linux] Decodificación hardware de video en Firefox con Nvidia?

Acabo de instalarle a un equipo antiguo (Core2 Duo 64-bit, Geforce 8600M GT) Fedora 32. Instalados los drivers con sus respectivos trucos, es decir, bajando el kernel a la 5.4, ya que los drivers de nvidia 340 no están soportados en el kernel 5.5 o superior sin hacer triquiñuelas (y prefiero instalarlos desde el repo). Hasta aquí todo bien.
Sin embargo, cuando intento ver videos HD en el navegador (Firefox), dan muchos tirones, a 720p@60 imposible, pero incluso a 1080p@30 tiene sus problemas, con no pocos tirones. La razón, la CPU llega al 100% de uso, por lo que supongo que va más allá de sus posibilidades, y sacamos que el video se está decodificando por software.
Probado Chromium, y aunque un poco mejor, lo mismo, CPU a tope y tirones, por lo que también decodificación por software.
Para asegurarme, he instalado VLC (ya que el Gnome Videos fatal, también va por software), establecido la salida por VDPAU (para asegurarme que el selector automático no la caga), y reproduciendo videos FHD en H264 por la red (loca, no internet), va sobrado, puesta la velocidad de reproducción al máximo, y va muy fluido, sin tearing, y rapidísimo, uso de CPU que no sube del 20%, vamos que el 1080p@60 debería bebérselo decodificando por hardware. Llegados a este punto, por lo menos sabemos que no es cosa de drivers ni falta de librerías, al menos a nivel de sistema (otra cosa es que al navegador le de la gana pillarlas).
La velocidad de internet no es, probado en otro equipo más potente y sin problemas por YouTube a 1080p@60. Todos los tengo conectados por Ethernet.
He probado incluso a instalar el clásico browser-plugin-vlc, extraído de un Debian antiguo e instalado mediante alien (no es la 1ª cosa que instalo así), pero nada. Miré y FF tiró el soporte a todos esos plugins.
Probado también a darle en el about:config a forzar la decodificación por hardware, pero nada.
Una forma sería haciendo que FF usara VDPAU, pero no he encontrado forma. Otra sería mediante un plugin de VLC que se pudiera instalar, ya que este reproductor es el que he usado (mencionado arriba) y perfecto.

Creo recordar, pero hablo de memoria, que en el Debian que tenía antes instalado (Debian testing), de hace unos meses (así que no tiene mucho tiempo), podía ver videos en YouTube con FF en modo 720p@60, y que aunque le costaba unos segundos en estabilizarse, luego corría bien. Le tenía también instalados sus drivers (340) y codecs.
Siempre uso el mismo, el famoso video de Costa Rica:
https://youtu.be/LXb3EKWsInQ

Sin embargo le he instalado Fedora más que nada por armonizar con otros equipos y manejar un entorno similar en todos. También probé OpenSUSE con KDE (tenía ganas de cacharrear sistemas en el equipo) y lo mismo, videos a trompicones en el navegador, todo tras instalar los drivers y el resto de cosas claro. Puede que este Debian instalara algo para el navegador? Puede que fuera el plugin h264ify para forzar el uso de h264. Sin embargo he probado instalarlo ahora y parece que no hace nada, va exactamente igual que sin éste.

La verdad no tengo muchas ganas de reinstalar un Debian (tras haber configurado todo el Fedora) sólo por probarlo, así que no sé si alguien tendrá idea de cómo puedo hacer que FF pille la aceleración hardware para decodificar video. Como digo instalada está, porque el VLC la pilla del tirón. Tanto el glxinfo como el vdpauinfo me dicen que estoy usando la Nvidia (no Nouveau).
Si encuentras la solución ponla por favor que es un tema que me interesa mucho.

He intentado habilitar la decoficacion por hardware desde hace años en distintas distribuciones (hablo de firefox) y nunca he tenido éxito. En vlc funciona de lujo como bien lo dices

La única "solución" que he encontrado es instalar el Liquorix Kernel que da un ligero mejor rendimiento.

El equipo es un portátil de hace unos 9 años con una AMD Radeon HD 6310
En teoría, desde Firefox 75 ya está soportada la decodificación hardware de H.264 con VAAPI usando Wayland (Ni Xorg ni VDPAU son compatibles).

Por otro lado lado, Chromium con el famoso parche de VAAPI te permite decodificar H.264 (probado y usado en un Intel NUC con Ubuntu para poder reproducir contenido 1080P y 4K).

Más info: https://wiki.archlinux.org/index.php/Ha ... on_support
Prueba a instalar vdpau-va-driver (un Wrapper de VDPAU a VAAPI) y a ver si te rula la aceleración por medio de VAAPI.

Otra opción es haber dejado los drivers libres, que probablemente tuviesen VAAPI y probar si se defiende bien con ellos ese modelo de gráfica.

Lógicamente necesitarías que el navegador acelerase por medio de VAAPI.

Es que por CPU los navegadores web tragan de recursos lo que es impensable y van como una mierda en videos en equipos de recursos limitados. Que fuera del navegador lo mismo tu CPU va de maravilla con H264 1080p30fps pero en el navegador web te ves a duras penas en H264 480p30fps porque no da más el CPU, es que es para llorar el tema de los navegadores web en estos equipos.
Eso ya está instalado. En VLC sin problemas, en Firefox nada. Tanto vdpauinfo como vainfo me devuelven la Nvidia con sus specs, y el H264 está entre ellas.
Como dije a nivel de sistema está todo bien ya que VLC lo pilla del tirón. Son los navegadores los que pasan 3 kilos de usarlo.
Acabo de ver que hay una opción en about:config para supuestamente habilitar vaapi: widget.wayland-dmabuf-vaapi.enabled que está en false. Sin embargo los drivers de nvidia no funcionan en wayland. Además he buscado y dicen que, cuando hay mejora, es muy ligera, y en algunas ocasiones incluso por software va mejor, así que a saber cómo estará hecho.
Desastre de navegadores, que no paran de sacar actualizaciones inútiles que no hacen nada mientras se arrastran en rendimiento.
@darksch
Aunque me fascina GNU/Linux en este tema Windows le lleva años de ventaja.

El mismo portátil viejuno se arrastra utilizando Windows 10. Pero todos los servicios de streaming funcionan en 1080p utilizando Microsoft edge o utilizando la app de la tienda de Microsoft si esta disponible.

Ojalá pronto GNU/Linux se ponga a la par en ese tema, por ahí vi que Microsoft va a sacar una versión de edge para GNU/Linux, si al final tiene buena decodificación de video por hardware la terminaría usando
Claro si ahí MS se pone y se curra en su navegador para su sistema que use el hardware pues irá bien.
Mientras los demás sin hacer nada al respecto, será porque el multimedia en internet tendrá poca importancia. Y es más, es que teníamos el plugin VLC, y van y sin ton ni son se ponen a bloquear plugins y addons como locos sin criterio ni nada y ea nos quedamos sin multimedia por hardware. Si no pensaban meterlo ellos para que se pulen el plugin?
Es curioso porque chrome lleva con aceleración de vídeo desde hace 10 años en windows y linux no lo soporta sin parches. Esto no te lo dice casi nadie, cuando se recomienda distros ligeras para equipos viejos. Luego los vídeos van peor que windows 10. [+risas]

Según los responsables de los navegadores no soportan oficialmente dicha función por un tema de recursos. No querrán problemas de desarrollo para una cuota baja de usuarios. Pero hoy en día eso es imprescindible. Sobre todo en equipos viejos o de bajo presupuesto.

La solución actual que miré en su día es tener los famosos parches de vapi que han dicho los compañeros y un navegador que soporte dicho parche.
Tal parece que nuestras plegarias fueron escuchadas 10 años después

https://www.phoronix.com/scan.php?page= ... horonix%29
Cory escribió:Tal parece que nuestras plegarias fueron escuchadas 10 años después

https://www.phoronix.com/scan.php?page= ... horonix%29


Mas vale tarde que nunca [looco]
Bueno algo es algo [carcajad]

Estoy probando cambiar la opción layers.acceleration.force-enabled a true y creo que va mejor en general. Aunque esto es para la composición de frame. Youtube por ej. cuando lo ponía a pantalla completa, cuando quería se ponía en modo trompicones (como a la mitad de fps), y tenía que andar cambiando a modo ventana y pantalla completa para corregirlo. Desde que lo he puesto forzado, de momento no me lo hace.
Sigo esperando como agua de mayo esa versión 80
Y ojo algo importante que he notado ahora, comprobar el soporte del hardware. Me ha dado por mirar en mi equipo, en el que he estado experimentando con el layers.acceleration.force-enabled, y al pedir info VAAPI/VDPAU (al ser Intel/Nvidia) he visto que ninguna decodifica VP8/9, sólo H264. Entonces el problema puede estar en el combo decodificación software + envío de un gran frame a la VRAM + sync + composición. Al forzar la composición se corregía, aunque tenía ciertos inconvenientes de brusquedad de movimiento, así que lo quité. Ahora he instalado la extensión h264ify, que fuerza el uso de H264 bloqueando otros codecs como VP8/9, y me va fino fino incluso sin usar el layers.acceleration.force-enabled.
Se supone que así está descodificando por hardware? Se supone que debería hacerlo con CPU, pero a lo mejor directamente sobre memoria de video y no en un buffer aparte. Una cosa muy rara todo esto. A ver ese parche de la versión 80 si noto diferencia.
Con chromium tengo decodificacion por hardware.
lovechii5 escribió:Con chromium tengo decodificacion por hardware.

Para comprobarlo, habilita el media en las dev-tools (las instrucciones salen en chrome://media-internals mientras se reproduce un video), y al sacar a ver que pone aquí (ver a la derecha):

Imagen

Tengo instalado la versión freeworld que viene con los codecs, forzado el uso de h264 con h264ify, y aún así sale eso.
El problema está en que al ver en chrome://gpu/ sale:
Accelerated VA-API video decode is not supported on NVIDIA platforms: 137247, 1032907
Disabled Features: accelerated_video_decode

?? Son ganas de tocar los webs. Cuando si pido información VA-API con la Nvidia me da capacidad H264. Y paso de cambiar a la Intel sólo por el puñetero navegador. Alguna forma de ejecutar una aplicación con la Intel sin tener que conmutar?
Y encima esto:
Protected video decoding with swap chain is for Windows and Intel only
Disabled Features: protected_video_decode

Ahí con un par, sólo para Windows y con Intel, porque ellos lo valen. Total que sitios tipo "Netflix" sólo por software.
darksch escribió:
lovechii5 escribió:Con chromium tengo decodificacion por hardware.

Para comprobarlo, habilita el media en las dev-tools (las instrucciones salen en chrome://media-internals mientras se reproduce un video), y al sacar a ver que pone aquí (ver a la derecha):

Imagen

Tengo instalado la versión freeworld que viene con los codecs, forzado el uso de h264 con h264ify, y aún así sale eso.
El problema está en que al ver en chrome://gpu/ sale:
Accelerated VA-API video decode is not supported on NVIDIA platforms: 137247, 1032907
Disabled Features: accelerated_video_decode

?? Son ganas de tocar los webs. Cuando si pido información VA-API con la Nvidia me da capacidad H264. Y paso de cambiar a la Intel sólo por el puñetero navegador. Alguna forma de ejecutar una aplicación con la Intel sin tener que conmutar?
Y encima esto:
Protected video decoding with swap chain is for Windows and Intel only
Disabled Features: protected_video_decode

Ahí con un par, sólo para Windows y con Intel, porque ellos lo valen. Total que sitios tipo "Netflix" sólo por software.

Vale, perdón, había obviado la parte de Nvidia. Tengo AMD y fino. En la wiki ya pone que el soporte para VA-API en chromium ni esta ni se le espera. Es lo que tiene ir a contra corriente siempre... nvidia.
Pues sí, empezaron bien ofreciendo drivers para Linux, y a día de hoy con no liberar nada (tanto Intel como AMD ayudan o directamente dan los códigos) se han estancado como la última en soporte Linux. Para el siguiente equipo, si se puede, estoy muy seriamente pensando en algo full-AMD.

Que vamos, que también son ganas de tocar las narices, porque el backend para VA-API de Nvidia está bien instalado y funcionando:
$ vainfo
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_6
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.7 (libva 2.7.0.pre1)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :   VAEntrypointVLD
      VAProfileMPEG2Main              :   VAEntrypointVLD
      VAProfileMPEG4Simple            :   VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    :   VAEntrypointVLD
      <unknown profile>               :   VAEntrypointVLD
      VAProfileH264Main               :   VAEntrypointVLD
      VAProfileH264High               :   VAEntrypointVLD
      VAProfileVC1Simple              :   VAEntrypointVLD
      VAProfileVC1Main                :   VAEntrypointVLD
      VAProfileVC1Advanced            :   VAEntrypointVLD

Pero claro, si nos dedicamos a, en lugar de detectar APIs y versiones, a detectar modelos y marcas específicos, para habilitar o deshabilitar cosas, así no, desde luego.
De hecho en el VLC puedo forzar usar VA-API con la Nvidia y fino fino.
Yo en Firefox tengo decodificación por hardware, pero en Wayland y con AMD. Dicen que en la versión 80 añadirán soporte para X11.
@darksch ¿Has conseguido habilitar la decodificacion por hardware de Firefox usando una nvidia?, porque mira que en el "about:config" de Firefox le he puesto en TRUE la opcion llamada layers.acceleration.force-enabled pero la CPU (según lo que veo en el terminal con el comando "top"), se me pone al 100% de uso, sino mas viendo prácticamente cualquier video de youtube (incluso los de 720p) :( :(

Así está mas o menos todo el tiempo (que otras veces el uso de la CPU está al 149% por lo que ahí he visto, o es que igual todavía no se "leer" toda la info que hay ahí, claro, que también puede ser)
Imagen
En principio Firefox en Linux no lo soporta hasta la futura versión 80 que llevará VA-API.
Con la mierda de Drivers que hay para Linux, no creo que un Max Payne 3 (o cualquier juego, actual) vaya igual de fino que en Windows.
Lo bueno es que igual por fín los fabricantes se deciden a hacer buenos drivers para el pingüino.

Lo instalaré a ver si me llevo una grata sorpresa, aunque no tengo casi ninguna esperanza.

geometry dash
YoungHope escribió:Con la mierda de Drivers que hay para Linux, no creo que un Max Payne 3 (o cualquier juego, actual) vaya igual de fino que en Windows.
Lo bueno es que igual por fín los fabricantes se deciden a hacer buenos drivers para el pingüino.

Lo instalaré a ver si me llevo una grata sorpresa, aunque no tengo casi ninguna esperanza.

geometry dash


De verdad? si los drivers amd son buenisimos






YoungHope escribió:Con la mierda de Drivers que hay para Linux, no creo que un Max Payne 3 (o cualquier juego, actual) vaya igual de fino que en Windows.
Lo bueno es que igual por fín los fabricantes se deciden a hacer buenos drivers para el pingüino.

Lo instalaré a ver si me llevo una grata sorpresa, aunque no tengo casi ninguna esperanza.

geometry dash


¿Que basura de comentario es este?
Pues he probado la versión nightly de firefox en Manjaro y la decodificacion funciona de lujo. Por fin puedo ver 4k 60FPS en el portátil con un uso de procesador del 38% (ryzen 5 3500u).

Es importante entrar en about:config y activar webrender, 2 opciones qué salen al buscar "vaapi" y desactivar media.ffvpx.enabled cambiándolo a false. Este último paso es crucial ya que sin el a mi no me funcionaba la decodificacion

Imagen

El cambio es super notable y eso que estaba actualizando el sistema en la terminal
lovechii5 escribió:
YoungHope escribió:Con la mierda de Drivers que hay para Linux, no creo que un Max Payne 3 (o cualquier juego, actual) vaya igual de fino que en Windows.
Lo bueno es que igual por fín los fabricantes se deciden a hacer buenos drivers para el pingüino.

Lo instalaré a ver si me llevo una grata sorpresa, aunque no tengo casi ninguna esperanza.

geometry dash


¿Que basura de comentario es este?


Esos comentarios, hay que ignorarlos.
Cory escribió:Pues he probado la versión nightly de firefox en Manjaro y la decodificacion funciona de lujo. Por fin puedo ver 4k 60FPS en el portátil con un uso de procesador del 38% (ryzen 5 3500u).

Es importante entrar en about:config y activar webrender, 2 opciones qué salen al buscar "vaapi" y desactivar media.ffvpx.enabled cambiándolo a false. Este último paso es crucial ya que sin el a mi no me funcionaba la decodificacion

Imagen

El cambio es super notable y eso que estaba actualizando el sistema en la terminal

Pues muy alto consumo sigue siendo. Con VLC, usando VAAPI como salida (que el driver Nvidia lo simula mediante puente VDPAU), curiosamente con VDPAU nativo funciona mucho peor (el video hasta se congela a veces pero con bajo uso de CPU, así que será cosa de implementación). Esto es lo que obtengo yo, el video es 4K@60:
Imagen

Eso en un portátil con un i7-3632QM, que es bastante más flojo que ese Ryzen 5 3500U.
darksch escribió:
Cory escribió:Pues he probado la versión nightly de firefox en Manjaro y la decodificacion funciona de lujo. Por fin puedo ver 4k 60FPS en el portátil con un uso de procesador del 38% (ryzen 5 3500u).

Es importante entrar en about:config y activar webrender, 2 opciones qué salen al buscar "vaapi" y desactivar media.ffvpx.enabled cambiándolo a false. Este último paso es crucial ya que sin el a mi no me funcionaba la decodificacion

Imagen

El cambio es super notable y eso que estaba actualizando el sistema en la terminal

Pues muy alto consumo sigue siendo. Con VLC, usando VAAPI como salida (que el driver Nvidia lo simula mediante puente VDPAU), curiosamente con VDPAU nativo funciona mucho peor (el video hasta se congela a veces pero con bajo uso de CPU, así que será cosa de implementación). Esto es lo que obtengo yo, el video es 4K@60:
Imagen

Eso en un portátil con un i7-3632QM, que es bastante más flojo que ese Ryzen 5 3500U.


Es que los navegadores web con o sin aceleración ya son de por si un rastre bueno en recursos. (básicamente si tienes un CPU ajustado y si es una tarea en la que puedes evitar su uso y hacerla externamente, mejor) Es por CPU en un netbook que tengo por aquí con Atom dualcore y en el navegador web apenas mantiene el tipo con H264 a 480p30, y el mismo video de Youtube en Smplayer me va bien los de 720p30 y en ambos casos por software/CPU, pero procuro usar la aceleración de la Nvidia ION (para algo tiene gráfica de Nvidia al menos el pobre) para llegar a los 720p60/1080p30 en Smplayer. (la Nvidia ION no puede acelerar más allá de eso, no puede con H264 1080p60 por GPU, se ralentiza marcando que el procesador de video para decodificar está al 100%)

Es por lo que si quieres comparar en igualdad tendrías que comparar tu CPU y el de el con el navegador web y no con un reproductor de video.
@darksch

Estaba actualizando el sistema en el fondo.
De igual manera supongo que con el tiempo la cosa mejorará, si uso la versión 79 de firefox (que aún no lleva vaapi en xorg) obtengo un uso del 85-95% del procesador en 4k 60FPS y el video va a saltos (dropped frames) así que de momento contento

Imagen
@Cory @darksch

Esto es en Firefox 79 Wayland con un Ryzen 1200:

Imagen
Firefox 79 corregía el VAAPI para Wayland. Pero claro, Nvidia = no Wayland, el driver sólo funciona en X11. Eso ya cuadra más. Aunque sea bajo el navegador, si va por hardware y el resto del navegador no está haciendo nada, no debería consumir tanto.
@darkrocket

Lo sé en wayland va mucho mejor. Pero aunque muchos digan que ya esta listo para remplazar Xorg. No es mi caso muchos juegos ni siquiera arrancan en wayland y conseguir grabar el escritorio se convierte en una odisea.

De momento estoy contento con el cambio en Xorg
Cory escribió:@darkrocket

Lo sé en wayland va mucho mejor. Pero aunque muchos digan que ya esta listo para remplazar Xorg. No es mi caso muchos juegos ni siquiera arrancan en wayland y conseguir grabar el escritorio se convierte en una odisea.

De momento estoy contento con el cambio en Xorg

He actualizado a Firefox 80 y esto es en X11 con VAAPI:

Imagen
Al fin, con estas opciones y mirando htop y nvtop, al fin el procesador central se ve descansando, mientras que la GPU se ve que esta trabajando

Yes. Enable media.ffmpeg.vaapi.enabled , gfx.webrender.all and export MOZ_X11_EGL=1

Also disable media.ffvpx.enabled


Esas son las opciones que me funcionaron.
Antes, en nvtop, GPU ni se molestaba en marcar nada en firefox. Ahora si XD

Imagen

Imagen
1985a escribió:Al fin, con estas opciones y mirando htop y nvtop, al fin el procesador central se ve descansando, mientras que la GPU se ve que esta trabajando

Yes. Enable media.ffmpeg.vaapi.enabled , gfx.webrender.all and export MOZ_X11_EGL=1

Also disable media.ffvpx.enabled


Esas son las opciones que me funcionaron.
Antes, en nvtop, GPU ni se molestaba en marcar nada en firefox. Ahora si XD

Imagen

Imagen

Eso es en la 80 no? en la 79 la opción media.ffmpeg.vaapi.enabled no está.
Si, es la version 80 @darksch

Si estas en archlinux, ya puedes actualizar.
Pues yo no sé que han hecho que si pongo el webrender los videos HD a 60 fps me van dando unos trompicones que para qué. Antes me iban hasta mejor pero tenía incongruencias en la interfaz. Así que he activado el va-api y que sea lo que quiera.
En Gentoo ayer lo mire y solo esta el binario pre-compilado. Tocara esperar hasta que el ebuild lo liberen

Edito: ya llego el ebuild xD

Compilado firefox 80 , borrrado la carpeta de configuracion porque toque muchas cosas. Y viendo un video 8k solo usa 5% de cpu

Imagen
36 respuestas