Firefox 22 mozGetUserMedia使用'screen'作为设备源

时间:2013-06-27 19:16:28

标签: javascript html5 firefox webrtc getusermedia

对于Firefox 22中的WebRTC支持,已经有了一些嗡嗡声。这适用于对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尚未标准化。可能只是因为此功能在Firefox生产中出现,所以API太模糊了。了解目前的支持状况会很好。

2 个答案:

答案 0 :(得分:4)

不,Firefox还没有添加像Chrome这样的屏幕共享:https://bugzilla.mozilla.org/show_bug.cgi?id=742832

答案 1 :(得分:4)

现在可以在Firefox中使用,但出于安全考虑,支持隐藏在某些首选项背后。特别是media.getusermedia.*下的about:config偏好设置。

comment on a Mozilla bug report说明了其中一些问题:

  

现在我们已经重新设计了<input type="file">以不在屏幕上绘制完整路径,事情就更好了。我们仍然遇到绘制跨源图像和<iframe>等问题。

     

即使用户选择加入,我也会担心用户在一个标签页中添加应用页面A,在另一个标签页面中加载应用页面B,页面B要求获得屏幕共享页面A的权限看起来很好,用户接受,然后应用程序将<iframe> FB或gmail等交换到页面A并抓取内容。

虽然发布渠道默认media.getusermedia.screensharing.enabled目前为true,但实际上只允许在media.getusermedia.screensharing.allowed_domains下列入白名单的域名。{/ p>

如果您的域位于允许列表中,则可以使用video属性中的以下键来使用它。

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

Mozilla在Firefox Nightly和Firefox Developer Edition列入白名单的域上托管getUserMedia Test Page。如果您使用这些版本的Firefox中的任何一个,您可以看到它的实际效果。或者,您可以将域添加到about:config下的白名单中,并在发布和测试版渠道中使用它。