Blog Linux Avante

Como transmitir sua área de trabalho GNOME Shell para um Chromecast (com suporte de áudio e Wayland / X11) usando a transmissão para TV

20 de abril de 2020

Cast to TV, uma extensão GNOME Shell para transmitir arquivos e mais para dispositivos Chromecast (e mais), foi atualizada recentemente com suporte para transmissão de seu desktop, com som, que funciona com Wayland e X11. Isso é feito com a ajuda de um complemento auxiliar chamado Cast to TV - Desktop Stream Add-on, que recentemente teve seu primeiro lançamento no site de extensões GNOME.

Para que o streaming da área de trabalho funcione, você precisa do Cast to TV versão 14 ou mais recente, que suporta apenas GNOME Shell 3.36 e 3.34 (Ubuntu 20.04 e 19.10, e Fedora 31 e 32, por exemplo). Isso significa que não está disponível para distribuições Linux mais antigas que usam versões mais antigas do GNOME Shell, como Ubuntu 18.04 ou Fedora 30.

GNOME Shell desktop para Chromecast

Este artigo explica como usar o Cast to TV (e seu complemento auxiliar) para transmitir sua área de trabalho GNOME Shell para um dispositivo Chromecast, com som, que funciona tanto com o X11 quanto com o Wayland. As instruções passo a passo são para Debian/Ubuntu/Pop!_OS, Fedora e Arch Linux/Manjaro (as etapas devem ser as mesmas em qualquer distribuição Linux baseada em GNOME Shell, mas os pacotes podem ter nomes diferentes).

Oficialmente, você pode transmitir sua área de trabalho Linux para um Chromecast usando o Google Chrome. Transmitir para TV tem algumas vantagens sobre o Google Chrome para streaming de desktop Chromecast, embora:

  • não está vinculado ao navegador do Google
  • ele reproduz seu desktop com áudio funcional, o que não funciona no Linux com o Google Chrome
  • suporta Wayland, provavelmente a única maneira de transmitir sua área de trabalho para um dispositivo Chromecast com Wayland
  • tem taxa de bits de vídeo e fps personalizáveis
  • tem aceleração de hardware (VAAPI para Intel/AMD e NVENC para gráficos Nvidia)
  • e também tem a opção de mostrar ou ocultar o cursor do mouse

O Google Chrome também tem algumas vantagens sobre o Cast to TV: tem um atraso de transmissão menor (Cast to TV atualmente tem um atraso de cerca de 3 segundos) e funciona com ambientes de desktop diferentes do GNOME Shell. Portanto, use a solução que melhor atende às suas necessidades.

Transmitir para a TV pode fazer muito mais do que transmitir sua área de trabalho para um Chromecast. Ele também pode transmitir imagens locais, arquivos de vídeo e áudio com transcodificação opcional, codificação de vídeo acelerada por GPU para baixo uso de CPU, legendas e muito mais. Verifique a página do projeto para obter detalhes.

Configurando o Cast to TV para transmitir sua área de trabalho a um Chromecast, em Debian/Ubuntu/Pop!_OS, Fedora ou Arch Linux/Manjaro

Para usar o Cast to TV para transmitir seu desktop GNOME Shell (versão 3.34 ou 3.36 apenas!) para um Chromecast, você precisará instalar o Cast to TV versão 14 (ou mais recente) e o complemento Cast to TV Desktop, instale alguns plug-ins do GStreamer e ajuste algumas configurações do PulseAudio. Isso é o que você precisa fazer em detalhes, no Debian/Ubuntu, Fedora ou Arch Linux/Manjaro.

Usando essas etapas, toda a funcionalidade Transmitir para TV será ativada, então você não terá apenas a capacidade de transmitir sua área de trabalho, mas também transmitir vídeos, músicas e imagens de sua área de trabalho GNOME Shell.

1. Instale o Cast para TV e o Cast para TV necessários - dependências do complemento da área de trabalho.

A extensão Cast to TV requer npm e Node.js para alguns módulos e FFmpeg para transcodificação. Cast to TV, o complemento Desktop Stream também tem algumas dependências: a base do GStreamer, plug-ins good, bad e ugly.

O PulseAudio (e o pacmd) também são necessários, mas já devem estar instalados na maioria dos casos.

Instale as dependências usando:

Debian/Ubuntu/Pop!_OS

Comandos para usar no terminal

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

Fedora

Você precisa habilitar o repositório RPM Fusion para instalar o FFmpeg e alguns plug-ins GStreamer (caso ainda não tenha habilitado este repositório) e, em seguida, instale os pacotes:

Comandos para usar no terminal

sudo dnf install

https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

sudo dnf install ffmpeg gstreamer1-plugins{base,good,bad-free,ugly}

Arch Linux/Manjaro

Comandos para usar no terminal

sudo pacman -S ffmpeg npm nodejs gst-plugins-{base,good,bad,ugly}

2. Instale as dependências opcionais

Existem algumas dependências opcionais também. Embora para usar gravação acelerada por hardware com drivers Nvidia (NVENC), você não precisa instalar nenhum pacote extra porque já está disponível no pacote GStreamer1-plugins-bad (depende se suas distribuições Linux permitem isso, pode não estar disponível), para VAAPI (Intel/AMD), você precisa instalar o pacote GSttreamer1-vaapi:

Debian/Ubuntu/Pop!_OS

Comandos para usar no terminal

sudo apt install gstreamer1.0-vaapi

Fedora

Comandos para usar no terminal

sudo dnf install gstreamer1-vaapi

Arch Linux/Manjaro

Comandos para usar no terminal

sudo pacman -S gstreamer-vaapi

É muito importante levar em consideração que a implementação do GStreamer de aceleração de hardware (VAAPI e NVENC) é "meio experimental", observa o wiki do complemento Cast to TV Desktop, e usá-lo pode travar o GNOME Shell. Não tentei usar aceleração de hardware em meu teste de streaming de meu desktop GNOME Shell 3.36 para um Chromecast, porque meus gráficos Nvidia não suportam NVENC.

Portanto, se sua área de trabalho travar ou você não conseguir transmiti-la para um Chromecast ao usar a aceleração de hardware, desative-a (Preferências de transmissão para TV -> Complementos> Área de trabalho -> Aceleração de hardware: Nenhuma).

No Debian/Ubuntu, há mais uma dependência opcional. Os plug-ins do GStreamer não têm os codificadores de áudio fdkaac e faac AAC habilitados por padrão, com apenas voaacenc disponível, que é bastante antigo. Para melhor streaming de áudio no Debian/Ubuntu você pode usar o plugin FFmpeg GStreamer (que nas versões recentes do Debian/Ubuntu usa FFmpeg, apesar de libav estar no nome do pacote), que fornece suporte para codificação de áudio avenc_aac AAC. Instale este pacote:

Comandos para usar no terminal

sudo apt install gstreamer1.0-libav

3. Instale o complemento Cast to TV e Cast to TV Desktop Stream

As extensões estão disponíveis no site de extensões GNOME Shell. Você pode instalar o Cast to TV, seguido pelo complemento Cast to TV Desktop Stream, usando o software GNOME, se ele permitir a instalação de extensões GNOME Shell em suas distribuições Linux.

Ou você pode seguir as instruções do wiki do GNOME para integrar GNOME Shell com Google Chrome e Firefox, e então você será capaz de instalar GNOME Shell extensões usando estes 2 navegadores da web. Depois de seguir essas instruções, visite a página da extensão Cast to TV do site de extensões GNOME Shell e clique no botão OFF na parte superior canto direito da página da web para instalá-lo. Em seguida, faça o mesmo para o Cast para TV - Complemento Desktop Stream.

A instalação das extensões não é feita neste ponto, pois você precisa instalar alguns módulos npm. Você precisará abrir as preferências de transmissão para TV.

Eu preciso fazer uma observação importante aqui. As notas de lançamento do Cast to TV v14 mencionam que um bug no GNOME Shell 3.36.1 impede a abertura das preferências de extensão do menu do sistema GNOME ("Configurações do Cast"). No entanto, isso não acontece comigo no Ubuntu 20.04 com GNOME Shell 3.36.1, provavelmente graças a algum patch que faz isso funcionar, mas se você se deparar com esse problema em outra distribuição Linux, abra as preferências do Cast para TV usando o novo aplicativo GNOME Extensions (introduzido com GNOME 3.36).

Cast para TV instalar npm módulos

Nas preferências de transmissão para TV, mude para a guia Módulos e clique em Instalar módulos npm na parte inferior da janela (captura de tela acima). Faça isso após instalar o complemento Cast to TV e Cast to TV Desktop, pois ambos exigem a instalação de alguns módulos npm.

4. Ative o streaming de seu desktop com áudio para o Chromecast

Existem dois requisitos para fazer com que o streaming da área de trabalho do GNOME Shell para dispositivos Chromecast funcione com áudio.

O primeiro é selecionar um plug-in AAC disponível em seu sistema, nas preferências da extensão Transmitir para TV. Para ver quais plug-ins AAC GStreamer estão disponíveis em seu sistema, use (você não precisa de todos, basta um):

Comandos para usar no terminal

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

Se você receber "Nenhum elemento ou plug-in" como saída, por exemplo, no Ubuntu:

$ gst-inspect-1.0 faac
No such element or plugin 'faac'

Isso significa que o plug-in não está disponível, então você não pode usá-lo nas configurações de Transmitir para TV para transmitir seu desktop com áudio para um Chromecast.

Se, em vez disso, você obtiver alguma saída, como esta:

$ gst-inspect-1.0 avenc_aac
Factory Details:
Rank                     none (0)
Long-name                libav AAC (Advanced Audio Coding) encoder
Klass                    Codec/Encoder/Audio
Description              libav aac encoder
Author                   Wim Taymans <wim.taymans@gmail.com>, Ronald Bultje <rbultje@ronald.bitfreak.net>

Plugin Details:
Name                     libav
Description              All libav codecs and formats (system install)
Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstlibav.so
Version                  1.16.2
License                  LGPL
Source module            gst-libav
Binary package           GStreamer libav Plugins (Ubuntu)
Origin URL               https://launchpad.net/distros/ubuntu/+source/gst-libav1.0
........

Isso significa que um plug-in específico está disponível em seu sistema e você pode selecioná-lo nas preferências da extensão Transmitir para TV (Complementos -> Área de trabalho -> Codificador de áudio). Ative também o Stream com áudio para transmitir áudio para seu desktop:

Preferências de linux da área de trabalho do Cast

No Debian e no Ubuntu, fdkaac e faac não estão disponíveis no GStreamer, é por isso que eu recomendei instalar o gstreamer1.0-libav, para poder usar avenc_aac. No Arch Linux/Manjaro, fdkaac e faac devem estar disponíveis após a instalação da base do GStreamer, plugins good, bad e ugly, então use um deles. No Fedora, após instalar os plug-ins do GStreamer, você deve ter o fdkaac disponível, então use-o.

Se você não escolher um codificador AAC disponível nas preferências de transmissão para TV, a transmissão de sua área de trabalho para um Chromecast falhará (você nem conseguirá transmissão de vídeo). Se por algum motivo você não tiver nenhum codificador AAC disponível em seu sistema, desative o streaming de áudio (disponível nas preferências Transmitir para TV) para pelo menos fazer o streaming de desktop funcionar.

E o segundo requisito necessário para transmitir sua área de trabalho GNOME Shell para um Chromecast com áudio é alterar a configuração do PulseAudio /etc/pulse/default.pa com qualquer editor de texto como root, por exemplo Gedit (Editor de Texto), o editor de texto GNOME padrão:

Comandos para usar no terminal

gedit admin: ///etc/pulse/default.pa

e altere a linha que contém:

load-module module-stream-restore

para:

load-module module-stream-restore restore_device=false

Salve o arquivo e reinicie o PulseAudio:

Comandos para usar no terminal

pulseaudio -k

A seleção de coletor de áudio nativo no GJS está planejada para um futuro complemento Cast to TV Desktop, mas até então você precisa usar este ajuste manual do arquivo de configuração do PulseAudio.

5. Transmita sua área de trabalho GNOME Shell para um dispositivo Chromecast

Cast para área de trabalho TV de streaming

Transmitir para fluxo remoto da área de trabalho da TV

Agora você pode transmitir sua área de trabalho do Linux GNOME Shell para um Chromecast. No menu do sistema GNOME Shell, expanda o item Cast Media e clique em Desktop.

Assim que você começar a transmitir sua área de trabalho para o dispositivo Chromecast, verá um ponto amarelo-laranja (significa que o gravador de tela integrado do GNOME Shell está ativo), bem como o controle remoto Cast to TV no painel superior - de lá, você pode pare de transmitir sua área de trabalho pressionando o botão parar (isso não é mostrado até que você comece a transmitir).

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.