Совместное использование рабочего стола с Google Hangouts, двумя мониторами и GNOME Shell

42

У меня есть ноутбук со встроенным экраном и подключенным монитором.

Когда я запускаю видеовстречу в 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 совместно использовать оба экрана одновременно, а не только экран ноутбука, что, на мой взгляд, еще хуже. Все еще пытаюсь выяснить, как я могу выбрать, каким экраном поделиться.

Peque
источник
В качестве эксперимента, если вы сделаете свой дополнительный экран своим основным через диалог настроек GNOME, откроются ли видеовстречи на дополнительном мониторе?
SLM
@slm: кажется, что всегда беру экран моего ноутбука для обмена. Не имеет значения, является ли это первичным или вторичным экраном.
Пек
Я боролся со своими проблемами с Chrome, Cinnamon и несколькими мониторами. Это очень раздражает. Я постараюсь продолжать копать.
SLM
Я сталкиваюсь с той же проблемой: при использовании Chrome в Linux Mint 15 на общем экране видеовстречи отображаются оба моих монитора. Действительно раздражает
1
Я не знаю, как вы получаете один монитор, я никогда не видел этого. Но что касается обоих мониторов одновременно, я подозреваю, что у Chromium есть только «экран» X. XRandR заставляет оба монитора появляться на одном экране X, так что пока кто-то из Google не исправит это, я сомневаюсь, что есть обходной путь, не используя что-то еще, например Xinerama.
Джаррид

Ответы:

35

проблема

Оказывается, в трекере Chromium уже есть открытый вопрос об этом досадном неудобстве. Существующие опции, предлагаемые Hangouts, имеют серьезные недостатки:

  1. Общий доступ ко всему экрану. Если у вас есть несколько экранов (у меня их три) и вы используете общий экран «Весь экран», другие участники чата не смогут ничего видеть.

  2. Поделиться приложением: если вы используете только определенное приложение, то:

    • Вам придется вручную переключаться на другие приложения во время потоковой передачи, вернувшись к видеовстречам и включив / выключив Screen Share.
    • В некоторых приложениях дополнительные окна (такие как диалоги настроек, меню, всплывающие окна и т. Д.) Не будут регистрироваться как часть приложения, которым вы делитесь. И в большинстве случаев именно эти диалоги вы хотите сфокусировать.

Решение / обходной путь

Очень хороший обходной путь - в комментарии 18 этого же обсуждения, поэтому все отзывы должны быть предоставлены автору комментария.

Здесь я кратко опишу процесс, который позволяет вам поделиться частью / областью экрана с несколькими мониторами в Google Hangouts, работающем на компьютере с Linux .

  1. Откройте VLC в режиме «Захват экрана» и скажите ему, какую часть экрана X11 вы хотите сделать, используя соответствующие параметры командной строки экранного модуля . Вы можете сделать это через конфигурацию графического интерфейса или с помощью командной строки:

    vlc \
        --no-video-deco \
        --no-embedded-video \
        --screen-fps=20 \
        --screen-top=32 \
        --screen-left=0 \
        --screen-width=1920 \
        --screen-height=1000 \
        screen://
    
  2. Вернитесь в Google Hangouts и поделитесь вновь открывшимся окном VLC, которое теперь выступает в качестве вашего «портала», для интересной части вашего экрана.

Важные заметки

  1. Переместить окно VLC подальше от части экрана вы захват , чтобы избежать Inception эффектов .

  2. Вы НЕ изменять размер или минимизировать окно VLC , потому что это будет влиять на разрешение вашей доли экрана. Если вы хотите убрать его с экрана во время потоковой передачи в видеовстречи, просто переместите его за пределы экрана, БЕЗ изменения его размера, или просто сделайте вид, что его там нет.

  3. Указатель мыши не захватывается VLC в Linux. Автор обходного пути также предлагает решение для этого: ExtraMaus , простые программы на C, которые создают «клон» вашей мыши, но видимый VLC.

[TL; DR] Объяснение значений, которые я выбрал в примере

  1. screen://Параметр указывает , что мы хотим , чтобы включить модуль захвата экрана. Вы всегда будете использовать этот параметр как есть.

  2. Флаги --no-video-decoи --no-embedded-videoскрывают окно меню и панель управления видео соответственно. Вы не хотите делиться ими через Hangouts, поэтому я советую всегда включать эти параметры.

  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).
Костас Филиос
источник
1
Это достойный обходной путь. Легко реализовать. Спасибо
Пьер де ЛЕСПИНАЙ
1
если сталкиваются с проблемой вроде: VLC не может открыть MRL 'screen: //'. Проверьте журнал для деталей. sudo apt-get установите vlc-plugin-access-extra, затем используйте командную строку сверху, чтобы открыть свой vlc
Leo Yu
1
Я мог использовать это долгое время с Debian. Я сейчас в Убунту, и он, кажется, не знает аргументов:unknown option or missing mandatory argument '--screen-top=0'
Пьер де Леспин
1
Я сделал несколько заметок о том, как сделать это с i3 gist.github.com/kylebrandt/237368095cd9803536ac26529340a60f
Кайл Брандт
Раньше это работало для меня, но не больше. VLC 3.0.7
Лукас Бустаманте
5

Я думаю, что нашел лучший обходной путь, чем использование 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

Затем нам нужно, чтобы он появился в списке доступных камер. Мы можем сделать это, например, отключив, а затем активировав внутреннюю веб-камеру ноутбука. Сначала вы должны узнать его USB-шину и номер порта. В моем случае: Bus - это 01, а Port - 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 в Hangouts.

Я описал некоторые другие идеи и некоторые другие детали в репозитории hliss .

Google Chrome не видит поддельную камеру

Акула
источник
-2

Загрузите xrdp на свой ноутбук. Запустите соединение rdesktop с localhost. Используйте сеанс rdesktop, чтобы инициировать сеанс Google +, и будет доступно только это окно / рабочий стол.

Я понимаю, что это скорее обходной путь, но он сделает то, что вы хотите сделать.

billq
источник
Веселая :-). Но да, это не совсем решение (даже не обходное решение). Я предпочел бы просто выключить экран ноутбука перед началом видеовстречи, что быстрее и чище ... ;-) Обычно хочется поделиться тем, что они уже открыли на своих рабочих столах (над чем они сейчас работают).
Пек