问题标签 [get-display-media]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1046 浏览

javascript - 如何解决此错误 script5007 无法在 IE 上获取未定义或空引用的属性“getDisplayMedia”?

我正在编写一个脚本来了解我的浏览器是否支持屏幕共享。我的脚本适用于除 Internet Explorer 之外的所有浏览器(Chrome、Opera、Firefox、Edge、Safari),我不知道问题出在哪里。

你能给我答案吗

在 Chrome、Opera、Firefox、Edge、Safari 上,它返回 O 或 N。但在 IE 上出现此错误:script5007 cannot get property 'getDisplayMedia' of undefined or null reference

0 投票
2 回答
4347 浏览

browser - 如何手动停止 getDisplayMedia 流以结束屏幕捕获?

我有兴趣从用户那里获取屏幕截图,并且我正在使用getDisplayMediaAPI 来捕获用户的屏幕:

执行时,浏览器会提示用户是否要共享他们的显示。用户接受提示后,提供的回调会收到一个 MediaStream。为了可视化,我将它直接绑定到一个元素:

到目前为止,这很简单且非常有效。不过,我只对单个帧感兴趣,因此我想在处理完流后立即手动停止流。

我尝试的是video从 DOM 中删除该元素,但 Chrome 一直显示一条消息,指出当前已捕获屏幕。所以这只会影响视频元素,但不会影响流本身:

正在进行屏幕捕获(德语)

我查看了MDN 上的 Screen Capture API 文章,但找不到任何关于如何停止流的提示。

如何正确结束流以使提示也停止?

0 投票
1 回答
2547 浏览

javascript - 通过`getDisplayMedia`检查浏览器/平台是否支持屏幕捕获

我们可以通过 向屏幕或窗口请求媒体流navigator.mediaDevices.getDisplayMedia()。但是,这会立即提示用户决定使用哪种捕获方式。我需要检查浏览器/平台是否甚至支持屏幕捕获。

当然,也可以检查'getDisplayMedia' in navigator.mediaDevices,但这只是告诉我们浏览器是否支持 API。特别是在 FF 和 Android 上的 Chrome 上,定义了 API,我可以调用getDisplayMedia(),但它总是立即返回NotAllowedError错误(这是可以预料的:根据 caniuse,移动浏览器尚不支持getDisplayMedia。)

接下来,我尝试检查navigator.mediaDevices.getSupportedConstraints(). 但是,我的移动 FF 返回与我的桌面 FF 完全相同的对象。特别navigator.mediaDevices.getSupportedConstraints().mediaSourcetrue在这两种情况下。最后,返回的数据navigator.mediaDevices.enumerateDevices()对我也没有帮助。我只得到一个我无法以任何方式解释的设备和组 ID(对吗?)。

getDisplayMedia是否可以预先检测是否支持屏幕截图?

注意这个问答看起来很相似,但是getUserMedia已经很老了)

0 投票
1 回答
803 浏览

javascript - 手动关闭 getDisplayMedia 的原生屏幕选择器

我可以在不选择要共享的应用程序的情况下关闭 getDisplayMedia({video:true}) 的本机屏幕选择器吗?据我所知,如果正在共享的轨道停止,它会在 track.stop() 上自动关闭。但是,有一个实例,我需要在不按取消或选择要共享的应用程序的情况下关闭本机屏幕选择器。

屏幕选择器图片

0 投票
1 回答
4821 浏览

javascript - getDisplayMedia() 在 Android 设备上无法正常工作

我需要将用户显示媒体(屏幕截图)连接到 webRTC 应用程序。

以下代码用于启动屏幕捕获:

这会提示用户有关屏幕截图的信息,并创建一个视频流,一旦获得许可,就可以使用该视频流。但是我无法让它在 iOS 或 Android 设备上运行。

我正在测试它的 iPad 无法找到navigator.mediaDevices.getDisplayMedia - undefined (iOS 13.3)

当我尝试调用它时,Android 上的 Chrome (v79) 显示以下错误:

DOMException:无效状态

根据这个:https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia 如果代码不是由用户操作启动的,则可能会生成错误,但这应该不是问题就我而言,因为代码是这样调用的:

事件变量包含一个有效事件,但我仍然收到“无效状态”错误。

这一定是我缺少的东西,因为它在桌面 Chrome 和 Safari 上运行良好。

编辑

我遇到了这个:getDisplayMedia 和屏幕录制的演示,并且在此网页上生成了相同的错误。这可能是由于我的硬件设备设置造成的吗?

0 投票
1 回答
288 浏览

javascript - 是否可以告诉浏览器不要从`getDisplayMedia`中聚焦(带到前面)选定的窗口?

我正在使用getDisplayMedia. 当浏览器提示我共享我的屏幕/一个窗口并且我选择一个特定的窗口来共享时,该窗口现在突然聚焦并在我的其他窗口前面(特别是在浏览器窗口前面!)。我在 Ubuntu 和 Windows 10 上使用 Firefox 和 Chrome 对此进行了测试。我使用此页面进行测试。

我个人觉得这种行为有点出乎意料和烦人。我还担心我的应用程序的技术上不那么倾向的用户会对此感到非常困惑。所以我希望浏览器即使在选择一个窗口后也能保持专注。有可能改变这种行为吗?我检查了 MDN 文档,getDisplayMedia但没有找到任何关于此的内容。我也没有在其他地方找到任何有关此的信息。

如果无法调整这种行为,我想知道:为什么?是技术限制吗?它是一种隐私/安全功能,可以让用户更清楚地知道这个窗口现在是共享的吗?(我个人认为这对用户没有帮助,但还可以。)

0 投票
1 回答
1528 浏览

angular - WebRTC getDisplayMedia Angular 8无法下载视频

我正在使用这个 NPM 包和 Angular 8 [ https://www.npmjs.com/package/webrtc-adapter ] 在这里复制 WebRTC getDisplayMedia 功能 [ https://webrtc.github.io/samples/src/content/获取用户媒体/获取显示媒体/ ]

我想出了如何开始和停止录制(实时屏幕截图),但我找不到任何关于如何下载实际录制的文档,请参阅下面的代码,谢谢。

0 投票
0 回答
521 浏览

javascript - getDisplayMedia“无法启动音频源”

我有 chrome,版本信息:

Google Chrome 80.0.3987.149(官方内部版本)(64 位)(同类群组:稳定版) 修订版 5f4eb224680e5d7dca88504586e9fd951840cac6-refs/branch-heads/3987_137@{#16} 操作系统 Windows 7 Service Pack 1(内部版本 7601.24544)

当我执行

然后在弹出窗口中选择“共享音频”,我得到一个 DOM 异常:

“无法启动音频源”

这只发生在我的桌面 windows 7 上,但在我的 windows 7 笔记本电脑上,它不会显示此错误。我刚刚从我的程序文件中复制了 Chrome 文件夹并将其放在桌面上,从工作的笔记本电脑上,但仍然存在错误。

我注意到在对音频的支持下,它提到 chrome 版本 74^ 是 [几乎唯一受支持的],我似乎有 80 版。

如果有办法,任何想法如何解决这个问题?

0 投票
1 回答
1977 浏览

javascript - javascript getdisplaymedia 以更高分辨率记录

0 投票
0 回答
222 浏览

html5-video - Google Meet 使用哪些技术进行屏幕和音频/视频录制?

自从 HTML5 出现以来,浏览器都不支持 Flash 和 Java 进行音频/视频录制。据我所知WebRTC,开发人员正在使用领先的框架来实现这一目标。在基于 Web 的应用程序中,我的客户想要提供音频/视频/屏幕录制。我可以很快想到,WebRTC因为我相信 Google Meet 使用相同。然而,当进一步挖掘时,我意识到 WebRTC 无法记录屏幕。然后我想到了一个问题:

什么框架主要用于音频/视频/屏幕录制?很少有其他 Web 服务(例如 Loom),它们也提供类似的界面并允许 a/v/s 录制。请问有人可以分享这些网络应用程序现在使用的框架和技术吗?

提前谢谢了。