Compartilhando sua área de trabalho com o Google Hangouts, o monitor duplo e o GNOME Shell

42

Eu tenho um laptop com uma tela embutida e um monitor conectado.

Ao iniciar um Hangout de vídeo do Google e compartilhar minha área de trabalho, gostaria de compartilhar apenas a tela anexada, mas não sei como.

No momento, tenho dois monitores: LVDS1corresponde à tela do meu laptop, que é configurada como a tela secundária e DP1qual é a minha tela principal. Mas o problema ainda permanece se eu mudar a tela do meu laptop para a tela principal.

$ xrandr
Screen 0: minimum 320 x 200, current 3286 x 1468, maximum 8192 x 8192
LVDS1 connected 1366x768+1920+700 (normal left inverted right x axis y axis) 344mm x 194mm
   1366x768      60.06*+
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 475mm x 267mm
   1920x1080     60.00*+
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1024x768      75.08    60.00  
   800x600       75.00    60.32  
   640x480       75.00    60.00  
   720x400       70.08  

Sempre que começo a compartilhar minha área de trabalho no Hangout, apenas a tela interna (menor) é compartilhada. O melhor seria ser capaz de escolher qual compartilhar, mas se não, como eu poderia compartilhar apenas a tela (maior) anexada?

Aposto que o Hangout do Google está procurando um arquivo de configuração para escolher qual tela compartilhar, mas não sabe qual arquivo é.

NOTA

Usando o Fedora 20, x86_64, Linux 3.15.10-200, GNOME Shell 3.10.4-8, Firefox 31.

NOTA 2

O uso do Google Chrome faz com que o Google Hangouts compartilhe as duas telas ao mesmo tempo, em vez de apenas a tela do laptop, o que acho ainda pior. Ainda estou tentando descobrir como eu poderia escolher qual tela compartilhar.

Peque
fonte
Como um experimento, se você tornar sua tela secundária sua principal através da caixa de diálogo de configurações do GNOME, os hangouts são abertos no monitor secundário?
slm
@ SLM: Parece que está sempre levando a tela do meu laptop para compartilhar. Não importa se é a tela principal ou secundária.
Peque 29/08
Também lutei com meus próprios problemas com o Chrome, Canela e vários monitores. É extremamente chato. Vou tentar continuar cavando.
slm
Estou enfrentando o mesmo problema. Usando o chrome no Linux Mint 15, o compartilhamento de tela do hangouts mostra meus dois monitores. Realmente irritante
11
Não sei como você consegue um único monitor, nunca vi isso. Mas, como para os dois monitores ao mesmo tempo, suspeito que o Chromium compartilhe apenas uma "tela" do X. O XRandR faz com que os dois monitores apareçam em uma única tela do X, então até alguém no Google resolver que eu duvido que exista uma solução alternativa sem usar outra coisa como o Xinerama.
31416 Jarryd

Respostas:

35

Problema

Acontece que já existe um problema em aberto no rastreador Chromium sobre esse inconveniente irritante. As opções existentes oferecidas pelo Hangouts têm grandes inconvenientes:

  1. Compartilhar tela inteira: se você tiver várias telas (eu tenho três) e compartilhar "Tela inteira", outras pessoas no hangout não poderão ver nada.

  2. Compartilhar aplicativo: se você compartilhar apenas um aplicativo específico, então:

    • Você precisará alternar manualmente para outros aplicativos durante a transmissão, retornando aos hangouts e ativando / desativando o compartilhamento de tela.
    • Em alguns aplicativos, janelas extras (como caixas de diálogo para preferências, menus, pop-ups etc.) não serão capturadas como parte do aplicativo que você está compartilhando. E na maioria das vezes é nesses diálogos que você deseja focar.

Solução / solução alternativa

Uma solução muito boa está no Comentário 18 desta mesma discussão, portanto, todos os créditos devem ser direcionados ao autor do comentário.

Resumirei o processo aqui, que permite compartilhar uma parte / área da tela de vários monitores no Google Hangouts em execução em uma máquina Linux .

  1. Abra o VLC no modo "Captura de tela" e informe qual parte da tela X11 você deseja capturar, usando os parâmetros de linha de comando apropriados do Módulo de tela . Você pode fazer isso através da configuração da GUI OU usando a linha de comando:

    vlc \
        --no-video-deco \
        --no-embedded-video \
        --screen-fps=20 \
        --screen-top=32 \
        --screen-left=0 \
        --screen-width=1920 \
        --screen-height=1000 \
        screen://
    
  2. Volte ao Google Hangouts e compartilhe a janela VLC recém-aberta, que agora atua como seu "portal" na parte interessante da tela.

Anotações importantes

  1. Mova a janela do VLC para longe da parte da tela que está capturando para evitar efeitos iniciais .

  2. Você NÃO redimensionar ou minimizar a janela do VLC, porque vai afetar a resolução da sua quota de tela. Se você quiser tirá-lo do caminho enquanto estiver transmitindo para hangouts, basta movê-lo para fora da tela SEM redimensioná-lo ou apenas fingir que não está lá.

  3. O ponteiro do mouse não é capturado pelo VLC no Linux. O autor da solução alternativa sugere uma solução para isso também: ExtraMaus , um simples programa em C que cria um "clone" do mouse, mas visível pelo VLC.

[TL; DR] Explicando os valores que escolhi no exemplo

  1. O screen://parâmetro indica que queremos ativar o módulo Screen Capture. Você sempre usará esse parâmetro como está.

  2. Os sinalizadores --no-video-decoe --no-embedded-videoocultam o menu da janela e a barra de ferramentas de controle de vídeo, respectivamente. Você não deseja compartilhá-los através do Hangouts, então sugiro que você sempre inclua esses parâmetros.

  3. O --screen-fps=20não precisa ser 20. Você pode fazer 30 ou 10, pois o desempenho é afetado principalmente pela maneira como o Chrome codifica o fluxo de vídeo.

  4. A área da tela que deseja capturado segue a convenção padrão [ --screen-top, --screen-left, --screen-width, --screen-height]. Supondo que eu tivesse dois monitores, cada um 1920x1080, fornecendo uma tela "virtual" total de 3840x1080 quando colocados um ao lado do outro, eu poderia fornecer as seguintes coordenadas:

    1. [ 0, 0, 1920, 1080] para toda a minha tela esquerda
    2. [ 0, 1920, 1920, 1080] para toda a minha tela direita
    3. [32, 0, 1920, 1000]para uma parte da minha tela esquerda que se estende por toda a largura, mas apara os 32pixels da parte superior (onde normalmente tenho a barra de título da janela) e os 1080-1000-32 = 48pixels da parte inferior (onde tenho a barra de tarefas do KDE).
Kostas Filios
fonte
11
Esta é uma solução decente. Fácil de implementar. Obrigado
Pierre de LESPINAY
11
se enfrentar um problema como: VLC não pode abrir a tela 'MRL: //'. Verifique o log para obter detalhes. sudo apt-get install vlc-plugin-access-extra, então usar a linha de comando de cima para abrir o seu vlc
Leo Yu
11
Eu pude usar isso por um longo tempo com o Debian. Eu estou no Ubuntu agora e não parece saber os argumentos:unknown option or missing mandatory argument '--screen-top=0'
Pierre de LESPINAY
11
Fiz algumas anotações sobre como fazer isso com o i3 gist.github.com/kylebrandt/237368095cd9803536ac26529340a60f
Kyle Brandt
Isso costumava funcionar para mim, mas não mais. VLC 3.0.7
Lucas Bustamante
5

Eu acho que encontrei uma solução melhor do que usar o vlc. Só precisamos criar uma webcam falsa que mostre nossa tela.

# Unload
sudo rmmod v4l2loopback
# Load module
sudo modprobe v4l2loopback video_nr=7 'card_label=myFakeCam' 'exclusive_caps=1'

ffmpeg -f x11grab -r 20 -s 1920x1080 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video7

Em seguida, precisamos fazer com que apareça em cromo na lista de câmeras disponíveis. Podemos fazê-lo, por exemplo, desativando e ativando a webcam interna do laptop. Primeiro você deve descobrir o número do seu barramento USB e da porta. No meu caso: Bus é 01 e Port é 4, então eu corro:

sudo sh -c "echo '0'> /sys/bus/usb/devices/1-4/bConfigurationValue"
sudo sh -c "echo '1'> /sys/bus/usb/devices/1-4/bConfigurationValue"

Depois disso, posso escolher myFakeCam no Hangouts.

Eu descrevi algumas outras idéias e mais alguns detalhes no hliss repo .

Google Chrome não pode ver câmera falsa

Um tubarão
fonte
-2

Carregue o xrdp no seu laptop. Inicie uma conexão rdesktop com o host local. Use a sessão rdesktop para iniciar a sessão do google +, e somente essa janela / área de trabalho será compartilhada.

Sei que isso é mais uma solução alternativa, mas será feito o que você deseja fazer.

billq
fonte
Engraçado :-). Mas sim, isso não é realmente uma solução (nem mesmo uma solução alternativa). Prefiro simplesmente desligar a tela do laptop antes de iniciar o hangout, que é mais rápido e mais limpo ... ;-) Geralmente, queremos compartilhar o que eles já abriram em seus desktops (no que estão trabalhando atualmente).
Peque