我有一台带有内置屏幕和附加显示器的笔记本电脑。
当我启动 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
每当我开始在环聊中共享桌面时,只会共享内置(较小)屏幕。最好的事情是能够选择要共享的屏幕,但如果不能,我怎么能只共享附加的(更大的)屏幕呢?
我敢打赌 Google 的 Hangout 正在寻找一个配置文件来选择要共享的屏幕,但不知道它是什么。
笔记
使用 Fedora 20、x86_64、Linux 3.15.10-200、GNOME Shell 3.10.4-8、Firefox 31。
笔记2
使用 Google Chrome 会让 Google Hangouts 同时共享两个屏幕,而不是只共享笔记本电脑的屏幕,我认为这更糟糕。仍在尝试找出如何选择要共享的屏幕。
答案1
问题
原来已经有一个Chromium 跟踪器中的未决问题关于这个恼人的不便。 Hangouts 提供的现有选项存在主要缺点:
共享整个屏幕:如果您有多个屏幕(我有三个)并共享“整个屏幕”,则视频群聊中的其他人将看不到任何内容。
分享申请:如果您仅共享特定应用程序,则:
- 您必须在流式传输时手动切换到其他应用程序,方法是返回环聊并打开/关闭屏幕共享。
- 在某些应用程序中,额外的窗口(例如首选项对话框、菜单、弹出窗口等)不会被捕获为您共享的应用程序的一部分。大多数时候,您想要关注的是这些对话框。
解决方案/解决方法
一个十分好的解决方法位于评论 18同样的讨论,因此所有的功劳都应归于评论的作者。
我将在这里总结该过程,这使您可以在 Linux 计算机中运行的 Google Hangouts 中共享多显示器屏幕的部分/区域。
打开可见光通信进入“屏幕捕获”模式并告诉它您希望它捕获 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://
如果 VLC 抱怨无法打开
screen://
,请确保您安装了正确的模块。对我来说,在 ubuntu 19.10 上,我必须vlc-plugin-extra-access
通过调用apt install vlc-plugin-access-extra
.返回 Google Hangouts 并共享新打开的 VLC 窗口,该窗口现在充当您通往屏幕上有趣部分的“门户”。
重要笔记
移动 VLC 窗口离开从您正在捕获的屏幕部分中避免初始效应。
做不是调整大小或最小化VLC 窗口,因为它会影响屏幕共享的分辨率。如果您想在流式传输到视频群聊时将其移开,只需将其移出屏幕而不调整其大小,或者假装它不存在。
Linux 中的 VLC 不捕获鼠标指针。解决方法的作者也为此提出了一个解决方案:额外的鼠,一个简单的 C 程序,它创建鼠标的“克隆”,但可以通过 VLC 看到。
[TL;DR] 解释我在示例中选择的值
该
screen://
参数表示我们要启用屏幕捕获模块。您将始终按原样使用此参数。标志
--no-video-deco
和--no-embedded-video
分别隐藏窗口菜单和视频控制工具栏。您不想通过环聊分享这些内容,因此我建议您始终包含这些参数。不一定
--screen-fps=20
是 20。您可以将其设置为 30 或 10,因为性能主要受 Chrome 编码视频流的方式影响。您要捕获的屏幕区域遵循标准约定 [
--screen-top
,--screen-left
,--screen-width
,--screen-height
]。假设我有两台显示器,每台显示器的分辨率均为 1920x1080,当将一台显示器并排放置时,将提供总共 3840x1080 的“虚拟”屏幕,我可以给出以下坐标:[ 0, 0, 1920, 1080]
对于我的整个左屏幕[ 0, 1920, 1920, 1080]
对于我的整个右屏幕[32, 0, 1920, 1000]
对于我的左屏幕的一部分,它横跨其整个宽度,但从32
其顶部(我通常有窗口的标题栏)和1080-1000-32 = 48
底部(我有我的 KDE 任务栏)修剪像素。
答案2
最新消息
给大家带来好消息: 我们有药,您将不再需要解决方法。; )
此错误已在 Chromium 83 中修复贝塔(开发/不稳定)。我测试过版本83.0.4103.14Kubuntu 18.04 中的(官方构建)测试版(64 位)。而这个版本解决了这个问题!
升级
如果您想安装此版本 Beta,请按照以下步骤操作:
下载测试版通过这个链接:
转到该文件夹并执行以下命令:
sudo apt install ./google-chrome-beta_current_*.deb
如果使用 Arch Linux,请安装铬快照仓来自 AUR。已确认在版本 85.0-1 上无需解决方法即可工作。
稳定版
根据维基百科(谷歌浏览器版本历史记录) 版本83.0.4103 于 2020 年 4 月 16 日发布。
也许需要六周的时间(主要版本的预测),我们才能在稳定频道中看到它,大约是五月底。让我们祈祷! ; )
**** 2020-06-04 更新 ****
主要版本“83.0.4103”自2020年5月19日起在稳定通道中发布。这个日期是根据维基百科(谷歌浏览器版本历史记录)并且可能会有所不同,具体取决于您的发行版。
在我的 Kubuntu 18.04 中,Chrome(稳定)的版本是“83.0.4103.97-1”,经过测试并且工作正常。因此,我们不需要使用解决方法,也不需要使用 Chrome 的 Beta 版本!是的 !!! \o/ \o/ \o/
答案3
我想我已经找到了比使用 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
然后我们需要让它出现在可用相机列表中的 Chromium 中。例如,我们可以通过停用然后激活内部笔记本电脑网络摄像头来实现此目的。首先你应该查出它的 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"
之后我就可以在环聊中选择 myFakeCam。
我已经描述了一些其他想法和更多细节利斯回购协议。
答案4
在您的笔记本电脑上加载 xrdp。启动与本地主机的 rdesktop 连接。使用 rdesktop 会话启动 google+ 会话,并且仅共享该窗口/桌面。
我意识到这更像是一种解决方法,但它会完成您想要做的事情。