kni*_*ght 7 javascript firefox html5 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
});
Run Code Online (Sandbox Code Playgroud)
看看W3C文档,这些对象MediaSourceConstraints, MediaTrackConstraints, MediaTrackConstraintsSet尚未标准化.可能只是因为此功能在Firefox生产中出现,所以API太模糊了.了解当前的支持状态会很好.
现在,这在 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"
}
Run Code Online (Sandbox Code Playgroud)
Mozilla在 Firefox Nightly 和 Firefox Developer Edition 列入白名单的域上托管getUserMedia 测试页面。如果您使用这两个版本的 Firefox,您可以看到它的实际效果。或者,您可以将域添加到下面的白名单中about:config,并在发布和测试版渠道中使用它。
| 归档时间: |
|
| 查看次数: |
1584 次 |
| 最近记录: |