使用 Google Hangouts、双显示器和 GNOME Shell 共享您的桌面

Peq*_*que 56 gnome-shell display

我有一台带有内置屏幕和连接显示器的笔记本电脑。

当我开始 Google 的视频环聊并共享我的桌面时,我希望能够仅共享附加的屏幕,但我不知道如何共享。

现在我有两个显示器:LVDS1对应于我的笔记本电脑的屏幕,它被配置为辅助屏幕,DP1这是我的主屏幕。但是,如果我将笔记本电脑的屏幕更改为主屏幕,问题仍然存在。

$ 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  
Run Code Online (Sandbox Code Playgroud)

每当我开始在环聊中共享我的桌面时,只会共享内置(较小的)屏幕。最好的事情是能够选择共享哪一个,但如果没有,我怎么能只共享附加的(更大的)屏幕?

我敢打赌 Google 的 Hangout 正在寻找一个配置文件来选择要共享的屏幕,但不知道它是哪个文件。

笔记

使用 Fedora 20、x86_64、Linux 3.15.10-200、GNOME Shell 3.10.4-8、Firefox 31。

笔记2

使用 Google Chrome 可以让 Google Hangouts 同时共享两个屏幕,而不仅仅是笔记本电脑的屏幕,我认为这更糟糕。仍在尝试找出如何选择要共享的屏幕。

小智 52

问题

事实证明,Chromium 跟踪器中已经存在一个关于这种烦人不便的未解决问题。环聊提供的现有选项有主要缺点:

  1. 共享整个屏幕:如果您有多个屏幕(我有三个)并共享“整个屏幕”,则视频群聊中的其他人将看不到任何内容。

  2. 共享应用程序:如果您只共享特定应用程序,则:

    • 您必须通过返回环聊并打开/关闭屏幕共享来在流式传输时手动切换到其他应用程序。
    • 在某些应用程序中,额外的窗口(例如首选项对话框、菜单、弹出窗口等)不会被捕获为您共享的应用程序的一部分。大多数时候,您想要关注的是这些对话。

解决方案/解决方法

一个很好的解决方法是在同一讨论的第18评论中,所以所有的功劳都应该归于评论的作者。

我将在此处总结该过程,它允许您在运行在 Linux 机器上的 Google Hangouts 中共享多显示器屏幕的一部分/区域

  1. 在“屏幕捕获”模式下打开VLC,并使用适当的屏幕模块命令行参数告诉它您希望它捕获 X11 屏幕的哪个部分。您可以通过 GUI 配置或使用命令行来执行此操作:

    vlc \
        --no-video-deco \
        --no-embedded-video \
        --screen-fps=20 \
        --screen-top=32 \
        --screen-left=0 \
        --screen-width=1920 \
        --screen-height=1000 \
        screen://
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果 VLC 抱怨无法打开screen://,请确保您安装了正确的模块。对我来说,在 ubuntu 19.10 上,我必须vlc-plugin-extra-access通过调用apt install vlc-plugin-access-extra.

  3. 返回 Google Hangouts 并共享新打开的 VLC 窗口,该窗口现在充当您通往屏幕有趣部分的“门户”。

重要笔记

  1. 将 VLC 窗口从您正在捕获的屏幕部分移开以避免初始效果

  2. 不要调整或最小化的窗口VLC,因为它会影响您的屏幕共享的分辨率。如果您想在流式传输到环聊时摆脱它,只需将其移出屏幕而不调整其大小,或者假装它不在那里。

  3. 鼠标指针在 linux 中不被 VLC 捕获。解决方法的作者也为此提出了一个解决方案:ExtraMaus,一个简单的 C 程序,它创建鼠标的“克隆”,但 VLC 可见。

[TL;DR] 解释我在示例中选择的值

  1. screen://参数表示我们要启用 Screen Capture 模块。您将始终按原样使用此参数。

  2. 分别标记--no-video-deco--no-embedded-video隐藏窗口菜单和视频控制工具栏。你不想通过环聊分享这些,所以我建议你总是包含这些参数。

  3. --screen-fps=20没有为20。你可以把它30或10,因为业绩主要受到Chrome浏览器如何编码的视频流。

  4. 您要捕获的屏幕区域遵循标准约定 [ --screen-top, --screen-left, --screen-width, --screen-height]。假设我有两台显示器,每台 1920x1080,当一个显示器并排放置时,总共提供 3840x1080 的“虚拟”屏幕,我可以给出以下坐标:

    1. [ 0, 0, 1920, 1080] 对于我的整个左侧屏幕
    2. [ 0, 1920, 1920, 1080] 对于我的整个右侧屏幕
    3. [32, 0, 1920, 1000]对于我的左侧屏幕的一部分,它跨越其整个宽度,但从32其顶部(我通常有一个窗口的标题栏)和1080-1000-32 = 48底部(我有我的 KDE 任务栏的地方)修剪像素。

  • 如果遇到如下问题:VLC 无法打开 MRL 'screen://'。检查日志以获取详细信息。sudo apt-get install vlc-plugin-access-extra 然后使用上面的命令行打开你的 vlc (2认同)

Wag*_*ano 11

最新消息

对每个人的好消息: 我们有药物,您将不再需要解决方法。; )

此错误已在 Chromium 83 Beta(开发/不稳定)中修复。我已经在 Kubuntu 18.04 中测试了83.0.4103.14 (Official Build) beta (64-bit) 版本。而这个版本修复了这个问题!


升级

如果要安装此版本 Beta,请按照以下步骤操作:

  1. 通过此链接下载测试版:

  2. 转到文件夹并执行以下命令:

    sudo apt install ./google-chrome-beta_current_*.deb

如果使用 Arch Linux,请从 AUR安装chromium-snapshot-bin。确认在 85.0-1 版上没有变通方法即可工作。


稳定版

根据维基百科(Google Chrome 版本历史),83 .0.4103版本于 2020 年 4 月 16 日发布。

也许可能需要六周时间(主要版本的预测)才能在稳定频道中看到它,大约在 5 月底。让我们祈祷!; )

**** 2020-06-04 更新 ****

自 2020 年 5 月 19 日起,主版本“83.0.4103”在稳定频道中发布。这个日期是根据维基百科(谷歌浏览器版本历史)确定的,可能会因您的发行版而异。

在我的 Kubuntu 18.04 中,Chrome(稳定版)的版本是“83.0.4103.97-1”,经过测试并且工作正常。因此,我们不需要使用解决方法,也不需要使用 Beta 版 Chrome!是的 !!!\o/ \o/ \o/


Ash*_*ark 10

我想我找到了比使用 vlc 更好的解决方法。我们只需要创建一个显示我们屏幕的假网络摄像头。

# 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
Run Code Online (Sandbox Code Playgroud)

然后我们需要让它出现在可用相机列表中的铬中。例如,我们可以通过停用然后激活内部笔记本电脑网络摄像头来实现。首先你应该找出它的usb总线和端口号。就我而言:总线是 01,端口是 4,所以我运行:

sudo sh -c "echo '0'> /sys/bus/usb/devices/1-4/bConfigurationValue"
sudo sh -c "echo '1'> /sys/bus/usb/devices/1-4/bConfigurationValue"
Run Code Online (Sandbox Code Playgroud)

之后,我可以在环聊中选择 myFakeCam。

我在hliss repo 中描述了一些其他想法和更多细节。

谷歌浏览器看不到假相机


小智 -2

在您的笔记本电脑上加载 xrdp。启动与本地主机的 rdesktop 连接。使用 rdesktop 会话启动 google+ 会话,并且仅共享该窗口/桌面。

我意识到这更像是一种解决方法,但它会完成您想要做的事情。