Teilen Sie Ihren Desktop mit Google Hangouts, Dual Monitor und GNOME Shell

42

Ich habe einen Laptop mit einem eingebauten Bildschirm und einem angeschlossenen Monitor.

Wenn ich den Video-Hangout von Google starte und meinen Desktop freigebe, möchte ich nur den angehängten Bildschirm freigeben, weiß aber nicht wie.

Im Moment habe ich zwei Monitore: LVDS1Entspricht dem Bildschirm meines Laptops, der als sekundärer Bildschirm konfiguriert ist und DP1der mein primärer Bildschirm ist. Das Problem bleibt jedoch bestehen, wenn ich den Bildschirm meines Laptops als primären Bildschirm ändere.

$ 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  

Immer wenn ich meinen Desktop im Hangout freigebe, wird nur der eingebaute (kleinere) Bildschirm freigegeben. Am besten ist es, wenn Sie auswählen können, welchen Bildschirm Sie freigeben möchten. Wenn nicht, wie kann ich dann nur den angehängten (größeren) Bildschirm freigeben?

Ich wette, der Hangout von Google sucht nach einer Konfigurationsdatei, um zu bestimmen, welcher Bildschirm freigegeben werden soll, weiß aber nicht, um welche Datei es sich handelt.

HINWEIS

Verwenden von Fedora 20, x86_64, Linux 3.15.10-200, GNOME Shell 3.10.4-8, Firefox 31.

ANMERKUNG 2

Durch die Verwendung von Google Chrome werden in Google Hangouts beide Bildschirme gleichzeitig angezeigt, und nicht nur der Laptop-Bildschirm, was meiner Meinung nach noch schlimmer ist. Ich versuche immer noch herauszufinden, wie ich auswählen kann, welchen Bildschirm ich freigeben möchte.

Peque
quelle
Werden Hangouts auf dem sekundären Monitor geöffnet, wenn Sie Ihren sekundären Bildschirm über den GNOME-Einstellungsdialog zum primären machen?
SLM
@slm: Es scheint, dass immer der Bildschirm meines Laptops zum Teilen verwendet wird. Es spielt keine Rolle, ob es der primäre oder der sekundäre Bildschirm ist.
Peque
Ich habe auch mit meinen eigenen Problemen mit Chrome, Cinnamon und mehreren Monitoren gekämpft. Es ist extrem nervig. Ich werde versuchen, weiter zu graben.
SLM
Ich habe das gleiche Problem: Mit Chrome unter Linux Mint 15 werden auf der Hangout-Bildschirmfreigabe beide Monitore angezeigt. Wirklich nervig
1
Ich weiß nicht, wie Sie einen einzelnen Monitor bekommen, das habe ich noch nie gesehen. Aber was beide Monitore gleichzeitig betrifft, vermute ich, dass Chromium nur einen X "Bildschirm" teilt. Mit XRandR werden beide Monitore auf einem X-Bildschirm angezeigt, bis jemand bei Google behebt, dass ich bezweifle, dass es eine Problemumgehung gibt, ohne etwas anderes wie Xinerama zu verwenden.
Jarryd

Antworten:

35

Problem

Es hat sich herausgestellt, dass im Chromium-Tracker bereits ein offenes Problem mit dieser ärgerlichen Unannehmlichkeit besteht. Die von Hangouts angebotenen Optionen weisen folgende Hauptnachteile auf:

  1. Gesamten Bildschirm freigeben: Wenn Sie über mehrere Bildschirme verfügen (ich habe drei) und "Gesamten Bildschirm" freigeben, können andere Personen im Hangout nichts sehen.

  2. Anwendung freigeben: Wenn Sie nur eine bestimmte Anwendung freigeben, gilt Folgendes:

    • Sie müssen während des Streamings manuell zu anderen Apps wechseln, indem Sie zu den Hangouts zurückkehren und die Bildschirmfreigabe aktivieren / deaktivieren.
    • In einigen Anwendungen werden zusätzliche Fenster (z. B. Dialogfelder für Einstellungen, Menüs, Popups usw.) nicht als Teil der App erfasst, die Sie freigeben. Meistens sind es diese Dialoge, auf die Sie sich konzentrieren möchten.

Lösung / Problemumgehung

Ein sehr guter Workaround ist in Kommentar 18 dieser Diskussion zu finden, daher sollten alle Credits an den Autor des Kommentars gehen.

Ich fasse hier den Vorgang zusammen, mit dem Sie einen Teil / Bereich Ihres Multi-Monitor-Bildschirms in Google Hangouts auf einem Linux-Computer freigeben können .

  1. Öffnen Sie VLC im Modus "Bildschirmaufnahme" und geben Sie an, welchen Teil Ihres X11-Bildschirms Sie mit den entsprechenden Befehlszeilenparametern des Bildschirmmoduls aufnehmen möchten . Sie können dies entweder über die GUI-Konfiguration oder über die Befehlszeile tun:

    vlc \
        --no-video-deco \
        --no-embedded-video \
        --screen-fps=20 \
        --screen-top=32 \
        --screen-left=0 \
        --screen-width=1920 \
        --screen-height=1000 \
        screen://
    
  2. Kehren Sie zu Google Hangouts zurück und geben Sie das neu geöffnete VLC-Fenster frei, das jetzt als "Portal" für den interessanten Teil Ihres Bildschirms fungiert.

Wichtige Notizen

  1. Bewegen Sie das VLC-Fenster von dem Teil des Bildschirms weg, den Sie erfassen, um Anfangseffekte zu vermeiden .

  2. Sie NICHT die Größe oder minimieren , die VLC - Fenster , weil es die Auflösung des Bildschirms Aktie auswirken wird. Wenn Sie es beim Streamen in Hangouts aus dem Weg räumen möchten, verschieben Sie es einfach vom Bildschirm, OHNE die Größe zu ändern, oder tun Sie einfach so, als wäre es nicht vorhanden.

  3. Der Mauszeiger wird von VLC unter Linux nicht erfasst. Der Autor der Problemumgehung schlägt auch hier eine Lösung vor: ExtraMaus , ein einfaches C-Programm, das einen "Klon" Ihrer Maus erstellt, der jedoch von VLC angezeigt wird.

[TL; DR] Erkläre die Werte, die ich im Beispiel gewählt habe

  1. Der screen://Parameter gibt an, dass das Screen Capture-Modul aktiviert werden soll. Sie werden diesen Parameter immer so verwenden, wie er ist.

  2. Die Flags --no-video-decound --no-embedded-videoverbergen das Fenstermenü bzw. die Symbolleiste für die Videosteuerung. Sie möchten diese nicht über Hangouts freigeben. Ich schlage daher vor, dass Sie diese Parameter immer einbeziehen.

  3. Der --screen-fps=20Wert muss nicht 20 sein. Sie können ihn auf 30 oder 10 einstellen, da die Leistung in erster Linie davon abhängt, wie Chrome den Videostream codiert.

  4. Die Fläche des Bildschirms , den Sie erfasst wollen folgt dem Standard - Konvention [ --screen-top, --screen-left, --screen-width, --screen-height]. Angenommen, ich hätte zwei Monitore mit einer Größe von jeweils 1920 x 1080 und einer "virtuellen" Bildschirmgröße von insgesamt 3840 x 1080, dann könnte ich die folgenden Koordinaten eingeben:

    1. [ 0, 0, 1920, 1080] für meinen gesamten linken Bildschirm
    2. [ 0, 1920, 1920, 1080] für meinen gesamten rechten Bildschirm
    3. [32, 0, 1920, 1000]für einen Teil meines linken Bildschirms, der sich über die gesamte Breite erstreckt, aber 32Pixel von oben (wo ich normalerweise die Titelleiste eines Fensters habe) und 1080-1000-32 = 48Pixel von unten (wo ich meine KDE-Taskleiste habe) schneidet.
Kostas Filios
quelle
1
Dies ist eine anständige Umgehung. Einfach zu implementieren Vielen Dank
Pierre de LESPINAY
1
Wenn es ein Gesichtsproblem gibt wie: VLC kann den MRL-Bildschirm 'screen: //' nicht öffnen. Überprüfen Sie das Protokoll auf Details. sudo apt-get installiere vlc-plugin-access-extra und benutze dann die Befehlszeile von oben, um deinen vlc zu öffnen
Leo Yu
Ich konnte das für eine lange Zeit mit Debian nutzen. Ich bin jetzt in Ubuntu und es scheint nicht die Argumente zu kennen:unknown option or missing mandatory argument '--screen-top=0'
Pierre de LESPINAY
1
Ich habe einige Notizen dazu mit i3 gemacht. Gist.github.com/kylebrandt/237368095cd9803536ac26529340a60f
Kyle Brandt
Das hat früher bei mir geklappt, aber nicht mehr. VLC 3.0.7
Lucas Bustamante
5

Ich glaube, ich habe eine bessere Lösung gefunden als vlc. Wir müssen nur eine gefälschte Webcam erstellen, die unseren Bildschirm zeigt.

# 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

Dann müssen wir es in der Liste der verfügbaren Kameras in Chrom anzeigen lassen. Wir können es zum Beispiel machen, indem wir die interne Laptop-Webcam deaktivieren und dann aktivieren. Zuerst sollten Sie den USB-Bus und die Portnummer herausfinden . In meinem Fall: Bus ist 01 und Port ist 4, also laufe ich:

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

Danach kann ich myFakeCam in Hangouts auswählen.

Ich habe einige andere Ideen und einige weitere Details in hliss repo beschrieben .

Google Chrome kann keine gefälschte Kamera erkennen

Ein Hai
quelle
-2

Laden Sie xrdp auf Ihren Laptop. Starten Sie eine rdesktop-Verbindung zu localhost. Verwenden Sie die rdesktop-Sitzung, um die Google + -Sitzung zu starten, und nur dieses Fenster / dieser Desktop wird freigegeben.

Mir ist klar, dass dies eher ein Workaround ist, aber es wird erledigt, wonach Sie suchen.

billq
quelle
Lustig :-). Aber ja, das ist nicht wirklich eine Lösung (nicht einmal ein Workaround). Ich würde den Laptop-Bildschirm lieber einfach ausschalten, bevor ich den Hangout starte, der schneller und sauberer ist ... ;-) Normalerweise möchte man teilen, was sie bereits auf ihren Desktops geöffnet haben (woran sie gerade arbeiten).
Peque