Совместное использование экрана с помощью WebRTC?

Мы изучаем WebRTC, но получили противоречивую информацию о том, что сегодня возможно и поддерживается.

С помощью WebRTC можно воссоздать сервис совместного использования экрана, аналогичный join.me или WebEx, где:

  • Вы можете поделиться частью экрана
  • Вы можете передать контроль другой стороне
  • Никаких скачиваний не требуется

Возможно ли это сегодня с любым из браузеров WebRTC? Как насчет Chrome на iOS?


person Crashalot    schedule 28.11.2012    source источник
comment
Вот демонстрация: Совместное использование экрана WebRTC: webrtc-experiment.appspot.com/screen-broadcast - тоже вещание!   -  person Muaz Khan    schedule 14.01.2013
comment
Часть экрана, или часть экрана, или область совместного использования экрана возможны --- см. Демонстрации --- webrtc-experiment.appspot.com/#part-of-screen-sharing --- чтобы попробовать сами! ---- github.com/muaz-khan/WebRTC-Experiment/tree/master/ --- однако библиотека html2canvas используется для создания снимков элемента html и их передачи через сокет. io или каналы данных WebRTC.   -  person Muaz Khan    schedule 14.04.2013


Ответы (6)


Насколько мне известно, сейчас это невозможно ни в одном из браузеров, хотя команда Google Chrome заявила, что в конечном итоге они намерены поддержать этот сценарий (см. Пункт «Совместное использование экрана» на их дорожная карта); и я подозреваю, что это означает, что в конечном итоге последуют и другие браузеры, предположительно, с IE и Safari. Но все это, вероятно, произойдет где-то в прошлом феврале, когда они должны завершить работу над текущим стандартом WebRTC и выпустить производственные части. (Надеюсь, что разработанная в последнюю минуту гаечный ключ Microsoft не напортачит.) Возможно, я пропустил что-то недавнее, но я довольно внимательно слежу за проектом и не думаю, что совместное использование экрана даже помогло ему. в Chrome Canary, не говоря уже о dev / beta / prod. Opera - единственный браузер, который идет в ногу с Chrome в реализации WebRTC (FireFox, похоже, отстает примерно на шесть месяцев), и я не видел ничего от этой команды о совместном использовании экрана.

Мне сказали, что сейчас есть один способ сделать это - написать собственный драйвер веб-камеры, чтобы ваш локальный экран отображался для API WebRTC getUserMedia () как еще один источник видео. . Я не знаю, чтобы кто-нибудь это делал - и, конечно же, для этого потребуется установить драйвер на рассматриваемую машину. К тому времени, когда все будет сказано и сделано, вероятно, будет проще использовать VNC или что-то в этом роде.

person Ken Smith    schedule 29.11.2012

chrome.tabCapture API доступен для приложений и расширений Chrome.

Это позволяет захватывать видимую область вкладки в виде потока, который можно использовать локально или совместно использовать через addStream () RTCPeerConnection.

Для получения дополнительной информации см. Предложение по захвату содержимого вкладки WebRTC.

Изначально совместное использование экрана поддерживалось для «обычных» веб-страниц с использованием getUserMedia с ограничением chromeMediaSource, но это было запрещено.

ИЗМЕНИТЬ 1 апреля 2015 г .: Отредактировано, что совместное использование экрана поддерживается только Chrome в приложениях и расширениях Chrome.

person Sam Dutton    schedule 29.11.2012
comment
Очень интересно - я это пропустил. Глядя на это, кажется странным называть его отдельным API - разве это не должно быть просто частью более крупного API совместного доступа к рабочему столу? В этом API вы должны иметь возможность выбирать определенные регионы, определенные окна или весь рабочий стол для совместного использования - и выбор определенной вкладки должен быть частью этого. Это всего лишь временный эксперимент, направленный на создание полноценного API для демонстрации экрана? Или это должно быть самоцелью? - person Ken Smith; 30.11.2012
comment
Это должно быть обновлено, поскольку в нем не упоминается, что совместное использование экрана теперь отключено по умолчанию в Chrome, если вы не передадите --enable-usermedia-screen-capture в командной строке при запуске Chrome. - person Aki; 30.03.2015
comment
Да, это работает, но он очень требователен к процессору, браузер работает медленно даже при плохом разрешении / частоте кадров ... Это то, что я наблюдал со следующим плагином: github.com/muaz-khan/Chrome-Extensions/tree/master/tabCapture - person Stepan Yakovenko; 23.05.2016

Ребята, вы, наверное, знаете, что снимок экрана (не tabCapture) доступен в Chrome Canary (26+). Мы недавно опубликовали демо по адресу; https://screensharing.azurewebsites.net

Обратите внимание, что вам нужно запустить его под https: //,

video: {
  mandatory: {
    chromeMediaSource: 'screen'   
  }

Вы также можете найти здесь пример; https://html5-demos.appspot.com/static/getusermedia/screenshare.html

person dathor    schedule 20.02.2013
comment
Привет, Датор, просто к сведению, демонстрация на azurewebsites захватывает экран, но не передает на другую конечную точку. Он просто показывает домашнюю страницу. Однако официальная демонстрация HTML5 отлично работает. +1 за это! - person jmort253; 07.05.2013
comment
Привет, да, есть новая демонстрация, которую вы можете найти на joinaspot.com, убедитесь, что вы работаете под https: // контекст - person dathor; 21.02.2014
comment
Я очень устал, так что, возможно, я пропустил это, но я не вижу функции демонстрации экрана? Классная демка. Напоминает мне bistri.com - person jmort253; 23.02.2014
comment
Да, когда вы запустите https: //, он предоставит вам такую ​​возможность ... Вы также можете загрузить нашу бесплатную библиотеку с открытым исходным кодом и собрать ее самостоятельно. Взгляните на github.com/XSockets/WebRTC - person dathor; 02.03.2014
comment
Просто к сведению: большинство интересных ссылок исчезли. В html5-demos.appspot.com/static/getusermedia больше нет сервера. /screenshare.html, мне не удалось получить html5-демонстрации. appspot.com/static/getusermedia/screenshare.html, чтобы работать с Chrome 45 даже после того, как вы включили about:flags (параметр отсутствует) и --enable-usermedia-screen-capture (не работает). joinaspot.com - это магазин доменов. github.com/XSockets/WebRTC - это ошибка 404. - person Peter V. Mørch; 17.09.2015
comment
Я пробовал это на chrome: 55, это не удается со следующим сообщением: PERMISSION_DENIED. У вас нет SSL? Вы включили флаг --enable-usermedia-screen-capture? Я предполагаю, что это запрещено в Chrome (раньше это было с версией 34+), но Google удалил само разрешение из Chrome. - person Bilbo Baggins; 16.01.2017

Я знаю, что отвечаю немного поздно, но надеюсь, что это поможет тем, кто наткнется на страницу, если не на OP.

На данный момент и Firefox, и Chrome поддерживают совместное использование всего экрана или его части (некоторого окна приложения, которое вы можете выбрать) с одноранговыми узлами через WebRTC в качестве медиапотока, точно так же, как ваш канал камеры / микрофона, поэтому нет возможности позволить другой стороне взять на себя управление. вашего рабочего стола. Кроме того, есть еще одна загвоздка: ваш веб-сайт должен работать в режиме https, и как в Firefox, так и в Chrome пользователям придется устанавливать расширения.

Вы можете попробовать это в демонстрации совместного использования экрана Муаза Хана, на странице также есть необходимые расширения.

P. S: Если вы не хотите устанавливать расширение для запуска демонстрации, в firefox (нет возможности избежать расширений в chrome), вам просто нужно изменить два флага,

  • go to about:config
  • установите media.getusermedia.screensharing.enabled как true.
  • добавить *.webrtc-experiment.com к флагу media.getusermedia.screensharing.allowed_domains.
  • обновите демонстрационную страницу и нажмите кнопку «Поделиться экраном».
person mido    schedule 26.11.2015
comment
Эта демонстрация демонстрации экрана больше не работает, так как в Chrome больше нет возможности демонстрации экрана. - person Bilbo Baggins; 16.01.2017
comment
Теперь не нужно возиться с about: config в firefox. Совместное использование экрана работает по умолчанию в текущих версиях Firefox. - person CpnCrunch; 07.04.2017

Для этого есть расширение Chrome с открытым исходным кодом. Пожалуйста, проверьте это https://github.com/ant-media/Chrome-Screen-Capture-Extension

Также есть документация по использованию расширения на Github Wiki.

https://github.com/ant-media/Ant-Media-Server/wiki/WebRTC-Screen-Sharing

person faraway    schedule 14.11.2018

navigator.mediaDevices.getDisplayMedia(constraint).then((stream)=>{
// todo...
})

теперь вы можете это сделать, но Safari отличается от Chrome звуком.

person GiantKs    schedule 07.04.2021