web-dev-qa-db-fra.com

Partager votre bureau avec Google Hangouts, double moniteur et GNOME Shell

J'ai un ordinateur portable avec un écran intégré et un moniteur connecté.

Lorsque je démarre un Hangout vidéo de Google et partage mon bureau, j'aimerais pouvoir partager uniquement l'écran ci-joint, mais je ne sais pas comment.

En ce moment, j'ai deux moniteurs: LVDS1 correspond à l'écran de mon ordinateur portable, qui est configuré comme écran secondaire et DP1 qui est mon écran principal. Mais le problème persiste si je change l'écran de mon ordinateur portable en écran 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  

Chaque fois que je commence à partager mon bureau dans le Hangout, seul l'écran intégré (plus petit) est partagé. La meilleure chose serait de pouvoir choisir lequel partager, mais sinon, comment pourrais-je partager uniquement l'écran ci-joint (plus grand)?

Je parie que le Hangout de Google recherche un fichier de configuration pour choisir l'écran à partager, mais je ne sais pas de quel fichier il s'agit.

REMARQUE

Utilisation de Fedora 20, x86_64, Linux 3.15.10-200, GNOME Shell 3.10.4-8, Firefox 31.

NOTE 2

L'utilisation de Google Chrome permet à Google Hangouts de partager les deux écrans en même temps au lieu de seulement l'écran de l'ordinateur portable, ce qui est encore pire, je pense. Je cherche toujours à savoir comment choisir l'écran à partager.

49
Peque

Problème

Il s'avère qu'il y a déjà un problème ouvert dans le tracker Chromium à propos de cet inconvénient gênant. Les options existantes proposées par Hangouts présentent des inconvénients majeurs:

  1. Partager tout l'écran: Si vous avez plusieurs écrans (j'en ai trois) et partagez "Tout l'écran", les autres personnes présentes dans le hangout ne pourront pas voir quoi que ce soit.

  2. Partager l'application: Si vous ne partagez qu'une application spécifique, alors:

    • Vous devrez passer manuellement à d'autres applications lors de la diffusion en continu en revenant aux Hangouts et en activant/désactivant le partage d'écran.
    • Dans certaines applications, les fenêtres supplémentaires (telles que les boîtes de dialogue pour les préférences, les menus, les fenêtres contextuelles, etc.) ne seront pas capturées dans le cadre de l'application que vous partagez. Et la plupart du temps, ce sont ces boîtes de dialogue sur lesquelles vous souhaitez vous concentrer.

Solution/solution

Une très bonne solution de contournement se trouve à Commentaire 18 de cette même discussion, donc tous les crédits doivent aller à l'auteur du commentaire.

Je vais résumer le processus ici, qui vous permet de Partager une partie/zone de votre écran multi-moniteur dans Google Hangouts fonctionnant sur une machine Linux .

  1. Ouvrez VLC en mode "Capture d'écran" et dites-lui quelle partie de votre écran X11 vous voulez qu'il capture, en utilisant la commande appropriée Screen Module -line parameters . Vous pouvez soit le faire via la configuration GUI OR en utilisant la ligne de commande:

    vlc \
        --no-video-deco \
        --no-embedded-video \
        --screen-fps=20 \
        --screen-top=32 \
        --screen-left=0 \
        --screen-width=1920 \
        --screen-height=1000 \
        screen://
    
  2. Si VLC se plaint de ne pas pouvoir ouvrir screen://, veuillez vous assurer que le module correct est installé. Pour moi, sur ubuntu 19.10, j'ai dû installer un package supplémentaire vlc-plugin-extra-access en appelant apt install vlc-plugin-access-extra.

  3. Revenez à Google Hangouts et partagez la fenêtre VLC récemment ouverte, qui agit désormais comme votre "portail" vers la partie intéressante de votre écran.

Notes IMPORTANTES

  1. Éloignez la fenêtre VLC de la partie de l'écran que vous capturez pour éviter effets initiaux .

  2. Faites [~ # ~] pas [~ # ~] redimensionnez OR minimisez la fenêtre VLC, car elle affectera la résolution de votre partage d'écran. Si vous voulez le supprimer de votre chemin lors de la diffusion vers les hangouts, déplacez-le simplement hors de l'écran SANS le redimensionner, ou faites simplement comme s'il n'était pas là.

  3. Le pointeur de la souris n'est pas capturé par VLC sous Linux. L'auteur de la solution de contournement propose également une solution: ExtraMaus , un simple programme C qui crée un "clone" de votre souris, mais visible par VLC.

[TL; DR] Explication des valeurs que j'ai choisies dans l'exemple

  1. Le screen:// le paramètre indique que nous voulons activer le module Capture d'écran. Vous utiliserez toujours ce paramètre tel quel.

  2. Les drapeaux --no-video-deco et --no-embedded-video masquer respectivement le menu de la fenêtre et la barre d'outils de contrôle vidéo. Vous ne voulez pas les partager via Hangouts, je vous suggère donc de toujours inclure ces paramètres.

  3. Le --screen-fps=20 ne doit pas nécessairement être 20. Vous pouvez le faire 30 ou 10, car les performances sont principalement affectées par la façon dont Chrome code le flux vidéo.

  4. La zone de l'écran que vous souhaitez capturer suit la convention standard [--screen-top, --screen-left, --screen-width, --screen-height]. En supposant que j'avais deux moniteurs, chacun de 1920x1080, donnant un écran "virtuel" total de 3840x1080 lorsqu'ils sont placés l'un à côté de l'autre, je pourrais donner les coordonnées suivantes:

    1. [ 0, 0, 1920, 1080] pour tout mon écran gauche
    2. [ 0, 1920, 1920, 1080] pour tout mon écran de droite
    3. [32, 0, 1920, 1000] pour une partie de mon écran de gauche qui s'étend sur toute sa largeur mais qui coupe 32 pixels de son haut (où j'ai généralement la barre de titre d'une fenêtre) et 1080-1000-32 = 48 pixels de son bas (où j'ai ma barre des tâches KDE).
42
Kostas Filios

Je pense que j'ai trouvé une meilleure solution de contournement que d'utiliser vlc. Nous avons juste besoin de créer une fausse webcam qui montre notre écran.

# 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

Ensuite, nous devons le faire apparaître en chrome dans la liste des caméras disponibles. Nous pouvons le faire par exemple en désactivant puis en activant la webcam interne de l'ordinateur portable. Vous devez d'abord découvrir son bus usb et son numéro de port. Dans mon cas: le bus est 01 et le port est 4, donc je lance:

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

Après cela, je peux choisir myFakeCam dans Hangouts.

J'ai décrit quelques autres idées et quelques détails supplémentaires dans hliss repo .

Google Chrome ne peut pas voir la fausse caméra

7
Ashark

Version modifiée du script dans hliss repo pour pouvoir sélectionner la zone d'une fenêtre ou dessiner la zone avec un rectangle.

https://Gist.github.com/adrianlzt/216aabb9568b162c92317f768d889c76

0
adrianlzt