Cómo transmitir Tu escritorio GNOME a un Chromecast (con audio, soporte Wayland / X11) usando «Cast to TV»

Cast to TV  es una extensión de GNOME Shell para emitir archivos multimedia a dispositivos Chromecast (y similares, como los miracast de los televisores del Colegio) recientemente actualizada con soporte para transmitir el escritorio con su sonido, y que funciona sobre Wayland y X11. Se apoya en el complemento «Cast to TV – Desktop Stream Add-on«.

Para que funcione la transmisión de escritorio, necesitas «Cast to TV» versión 14 o posterior, que solo admite GNOME Shell 3.36 y 3.34 (Ubuntu 20.04 y 19.10, y Fedora 31 y 32).

Oficialmente, puedes transmitir tu escritorio Linux a un Chromecast utilizando Google Chrome. Sin embargo, Cast to TV tiene algunas ventajas sobre Google Chrome para la transmisión de escritorio Chromecast:

  • no está vinculado al navegador de Google
  • transmite el escritorio con su audio de trabajo, que no funciona en Linux con Google Chrome
  • es compatible con Wayland
  • tiene velocidades de bits de video y fps personalizables
  • tiene aceleración de hardware (VAAPI para Intel / AMD y NVENC para gráficos Nvidia)
  • y también tienes la opción de mostrar u ocultar el cursor del mouse.

Google Chrome también tiene ventajas sobre Cast to TV:

  • tiene un retardo de transmisión menor (Cast to TV actualmente tiene un retraso de aproximadamente 3 segundos)
  • y funciona con entornos de escritorio que no sean GNOME Shell.

Instalar dependencias para «Cast to TV» y «Cast to TV – Desktop Stream Add-on».

La extensión «Cast to TV» requiere npm y Node.js para algunos módulos, y FFmpeg para la transcodificación. «Cast to TV – Desktop Stream Add-on» también tiene algunas dependencias: GStreamer con sus complementos «buenos», «malos» y «feos».

PulseAudio (y pacmd) también son necesarios, pero ya deberían estar instalados en la mayoría de los casos.

sudo apt install ffmpeg npm nodejs gstreamer1.0-plugins-{base,good,bad,ugly}

Instalar las dependencias opcionales.

También hay algunas dependencias opcionales. Si bien para utilizar la grabación acelerada por hardware con los controladores de Nvidia (NVENC), no necesitas instalar ningún paquete adicional porque ya está disponible en el paquete GStreamer1-plugins-bad (depende de si tu distribución de Linux lo habilita, puede que no esté disponible ), para VAAPI (Intel / AMD) necesitas instalar el paquete GSttreamer1-vaapi:

sudo apt install gstreamer1.0-vaapi

Si tu escritorio falla o no puedes emitir el escritorio a un Chromecast mientras usas aceleración de hardware, desactívalo ( Cast to TV preferences -> Add-ons > Desktop -> Hardware acceleration: None).

En Debian / Ubuntu, hay una dependencia opcional más. Los complementos GStreamer no tienen los codificadores de audio AAC fdkaac y faac habilitados de forma predeterminada:

sudo apt install gstreamer1.0-libav

Instalar Cast to TV y su complemento de transmisión de escritorio.

Sigue las instrucciones del wiki de GNOME para integrar GNOME Shell con Google Chrome y Firefox, y luego podrás instalar las extensiones de GNOME Shell con cualquiera de esos dos navegadores web.

Visita la página de extensión «Cast to TV» desde el sitio web de extensiones de GNOME Shell y haz clic en el botón OFF en la esquina superior derecha de la página web para instalarlo. Luego haz lo mismo para el «Cast to TV – Desktop Stream Add-on» .

La instalación de extensiones no se realiza en este momento, ya que necesita instalar algunos módulos npm. Tendrás que abrir las preferencias de Cast to TV.

En las preferencias de «Cats to TV», cambia a la pestaña «Modules» y haz clic en «Install npm modules» en la parte inferior de la ventana (ver captura de pantalla anterior). Haz esto después de instalar «Cast to TV» y «Cast to TV Desktop Add-on», ya que ambos requieren la instalación de algunos módulos npm.

Habilitar la transmisión de escritorio con audio a Chromecast.

Hay dos requisitos para que la transmisión de escritorio de GNOME Shell a dispositivos Chromecast funcione con audio.

El primero es seleccionar un complemento AAC que esté disponible en tu sistema, en las preferencias de la extensión. Para ver qué complementos AAC GStreamer están disponibles en tu sistema, use (no necesitas todos, uno es suficiente):

gst-inspect-1.0 fdkaac
gst-inspect-1.0 faac
gst-inspect-1.0 avenc_aac
gst-inspect-1.0 voaacenc

Si obtienes «No hay tal elemento o complemento» como salida, eso significa que el complemento no está disponible, por lo que no puedes usarlo en la configuración para transmitir su escritorio con audio a un Chromecast.

En caso contrario puedes seleccionarlo desde las preferencias de extensión ( Add-ons -> Desktop -> Audio encoder). Habilite también «Stream with audio» para transmitir el escritorio con audio:

Si no eliges un codificador AAC disponible en las preferencias, la transmisión del escritorio fallará (ni siquiera obtendrás la emisión de video). Si por alguna razón no tienes ningún codificador AAC disponible en su sistema, desactiva la transmisión de audio.

Y el segundo requisito necesario consiste en cambiar la configuración en «/etc/pulse/default.pa» de PulseAudio con cualquier editor de texto (como root) y cambia la línea que contiene:

load-module module-stream-restore

a:

load-module module-stream-restore restore_device=false

Guarda el archivo y reinicie PulseAudio:

pulseaudio -k

Transmite el escritorio a un dispositivo Chromecast.

Ahora puedes transmitir tu escritorio Linux GNOME Shell a un Chromecast. Desde el menú del sistema GNOME Shell, expande el elemento «Cast Media», y luego haz clic en «Escritorio».

Una vez que comiences a transmitir el escritorio al dispositivo Chromecast, verás un punto amarillo-naranja (grabador de pantalla activo), así como el control remoto «Transmitir a TV» en el panel superior, desde allí puedes dejar de transmitir presionando el botón de detener (esto no se muestra hasta que comienzas a transmitir).