Firefox 22 mozGetUserMedia использует «экран» в качестве источника устройства

Были некоторые слухи о поддержке WebRTC в Firefox 22. Это для тех, кто в курсе разработки Firefox: есть ли какая-либо поддержка в Firefox для захвата экрана рабочего стола на сегодняшний день?

Эта технология существует для Chrome 26+, которая обеспечивает экспериментальную поддержку захвата экрана (с использованием «экрана» в качестве источника устройства); код (фрагмент) для этого:

   // select any supported getUserMedia function
   navigator.getMedia = (navigator.getUserMedia || 
                         navigator.webkitGetUserMedia ||
                         navigator.mozGetUserMedia ||
                         navigator.msGetUserMedia);

  // if getUserMedia is not supported, do nothing 
  if( !navigator.getMedia ) return;

  // request for user media
  navigator.getMedia(
  {
     video : {
        mandatory : {
           // request 'screen' as a source media
           chromeMediaSource : 'screen'
        }
     }
  },

  // success
  function( localMediaStream )
  {
     // process local media stream...
  },

  // failure
  function( error )
  {
     // error handling
  });

Глядя на документы W3C, объекты MediaSourceConstraints, MediaTrackConstraints, MediaTrackConstraintsSet еще не стандартизированы. Возможно, API слишком туманен, чтобы эта функция появилась в Firefox. Было бы просто хорошо знать текущее состояние поддержки.


person knight    schedule 27.06.2013    source источник


Ответы (2)


Теперь это возможно в Firefox, однако из соображений безопасности поддержка скрыта за некоторыми настройками. В частности, настройки media.getusermedia.* в разделе about:config.

Этот комментарий к отчету об ошибке Mozilla иллюстрирует некоторые из этих опасений:

Теперь, когда мы изменили дизайн <input type="file">, чтобы он не отображал полный путь на экране, все стало лучше. У нас все еще есть проблемы с такими вещами, как отрисовка изображений из разных источников и <iframe>s.

Даже с согласием пользователя я бы беспокоился о таких ситуациях, как «пользователь загружает страницу приложения A на одной вкладке и страницу приложения B на другой вкладке, страница B запрашивает разрешение на демонстрацию экрана страницы A, которая выглядит нормально, пользователь принимает, затем приложение заменяет <iframe> FB или gmail или что-то еще на страницу A и захватывает содержимое.

Хотя media.getusermedia.screensharing.enabled в настоящее время по умолчанию имеет значение true в канале релиза, на самом деле его могут использовать только те домены, которые находятся в белом списке под media.getusermedia.screensharing.allowed_domains.

Если ваш домен находится в списке разрешенных, вы можете использовать его, используя следующие ключи в свойстве video.

video: {
    mozMediaSource: "screen",
    mediaSource: "screen"
}

Mozilla размещает тестовую страницу getUserMedia в домене, занесенном в белый список Firefox. Nightly и Firefox Developer Edition. Если вы используете любую из этих версий Firefox, вы можете увидеть ее в действии. В качестве альтернативы вы можете добавить домен в белый список под about:config и использовать его в выпусках и бета-каналах.

person Alexander O'Mara    schedule 09.02.2016
comment
Спасибо! Я знал, что предыдущий ответ в какой-то момент устарел. Тем не менее спасибо за ответ. - person knight; 09.02.2016
comment
Как можно получить диалог выбора окна? Если я обхожу разрешения, этот диалог не отображается. Если я не обхожу их, getUserMedia полностью не работает для вызовов окна/экрана, но все еще работает для камер. - person Brad; 10.02.2016
comment
@Brad Что вы имеете в виду под обходом разрешений? - person Alexander O'Mara; 10.02.2016
comment
@AlexanderO'Mara about:config media.navigator.permission.disabled установлено значение true. - person Brad; 10.02.2016
comment
@Брэд О, я вижу, что происходит. По-видимому, это предпочтение полностью отключает диалоговое окно разрешений, не оставляя возможности выбрать, какое окно/экран/приложение использовать совместно (хотя, как ни странно, однажды я заставил экран работать). Вероятно, это логическая ошибка, которая осталась незамеченной, так как эта функция официально не поддерживается (это опасная функция для браузеров). Я полагаю, вы могли бы отправить отчет об ошибке в Mozilla об этом. - person Alexander O'Mara; 10.02.2016
comment
@AlexanderO'Mara Теперь я заметил, что это работает время от времени. Большую часть времени я могу захватить экран и случайное окно. В других случаях я могу сделать снимок экрана, а окно пустое. (Такое поведение, скорее всего, нормально... возможно, для какого-то приложения выбирается 1x1 или скрытое окно.) Но бывают случаи, когда я добавляю захват экрана или окна, а мои обратные вызовы никогда не вызываются. Если я устанавливаю media.navigator.permission.disabled в true, то мой обратный вызов ошибки вызывается для getUserMedia. - person Brad; 10.02.2016
comment
@Brad Чтобы использовать тестовую страницу getUserMedia в релизной версии Firefox, вам необходимо сначала добавить mozilla.github.io, в список в media.getusermedia.screensharing.allowed_domains в разделе about:config. Вы также хотите убедиться, что media.navigator.permission.disabled установлено на false, чтобы увидеть диалоговое окно. Тогда совместное использование экрана и окна должно работать. В настоящее время эта функция используется в Firefox Hello, который также поддерживает совместное использование вкладок. . - person jib; 11.02.2016
comment
fyi mozMediaSource устарел и не нужен. - person jib; 11.02.2016
comment
@jib Хм, я сделал это, но это работает время от времени. Я подозреваю, что с Firefox и моей видеокартой происходит что-то странное. Firefox часто дает сбой и вместе с ним отключает другие приложения OpenGL. Я обновлю свои графические драйверы и посмотрю, смогу ли я получить воспроизводимый тестовый пример, но я думаю, что проблема не в моем коде, учитывая, что перезапуск firefox несколько раз решает проблему. - person Brad; 11.02.2016
comment
@jib У меня тоже проблемы с тестовой страницей getUserMedia. Я пошел дальше и сообщил об ошибке Firefox: bugzilla.mozilla.org/show_bug.cgi?id =1247792 - person Brad; 12.02.2016
comment
@jib У меня есть вопрос, несколько связанный с этим ... по поводу использования MediaRecorder. Если у вас есть минутка, не могли бы вы взглянуть? stackoverflow.com/questions/35466078/ Извините, что оставил прокомментируйте этот вопрос ... поскольку очень немногие люди используют эти API, я решил, что перекрестные ссылки были лучшим способом связаться с кем-то знающим. - person Brad; 17.02.2016
comment
Пожалуйста, только одна небольшая помощь: на локальном хосте у меня есть только «Не делиться» и «Никогда не делиться», как получить «Всегда делиться на локальном хосте»? media.navigator.permission.disabled не работает на локальном хосте. - person Jose Manuel Abarca Rodríguez; 28.05.2016
comment
@JoseManuelAbarcaRodríguez Возможно, вам придется немного прояснить свою проблему. У меня такое же поведение на https://localhost и https://mozilla.github.io - person Alexander O'Mara; 28.05.2016
comment
Страница для показа видео с веб-камеры не работает на моем локальном компьютере, потому что Firefox говорит «Хотели бы вы поделиться своей камерой с неизвестным источником?», Только с двумя вариантами: «Не делать» и «Никогда». Нужно ли мне загружать свой код в режиме реального времени, чтобы всегда делиться? - person Jose Manuel Abarca Rodríguez; 28.05.2016
comment
@JoseManuelAbarcaRodríguez Я не уверен, какой тест вы используете, но многие из этих расширенных новых функций с проблемами конфиденциальности доступны только через https, а не http или file. Возможно, это связано? - person Alexander O'Mara; 28.05.2016
comment
HTTPS? Это объясняет проблему. Мне нужно будет найти какой-нибудь https-сайт, чтобы протестировать мою веб-страницу. Спасибо (+1). - person Jose Manuel Abarca Rodríguez; 28.05.2016

Нет, Firefox еще не добавил функцию демонстрации экрана, как Chrome: https://bugzilla.mozilla.org/show_bug.cgi?id=742832

person tomtheengineer    schedule 27.06.2013
comment
Исправлено в Firefox 27 :-) - person jib; 11.02.2016