问题标签 [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 投票
0 回答
85 浏览

javascript - 使用 getDisplayMedia 进行屏幕共享并对共享 url 更改做出反应

用户捕获了一个流,navigator.mediaDevices.getDisplayMedia以便在视频通话中与他的银行助理共享页面。用户共享,例如,带有 url somebank.com的银行页面。但是他的银行助理是个坏人,他希望用户去otherbank.com查看用户在他的第二个帐户上有多少钱,并鼓励用户输入该地址并单击enter我可以对 JS 的 url 更改做出反应吗? 当我检查轨道时,它具有相同的idlabel,即使我转到另一个页面 - 所以乍一看,看起来我无法对页面 url 更改做出反应。提前感谢您的宝贵时间。

0 投票
1 回答
137 浏览

javascript - 为什么整个屏幕与窗口与单个选项卡的屏幕录制会导致文件大小显着不同?

我正在将屏幕捕获集成到我正在扩展的框架中。我通过 getDisplayMedia 方法请求屏幕的 MediaStream 并使用RecordRTC library记录它。Firefox 和 Chrome 都允许用户指定共享的具体内容,例如整个屏幕、特定窗口或单个选项卡(仅限 Chrome)。我注意到这里的选择会显着影响生成的视频文件大小。下面的结果来自 30 秒的记录,其中浏览器窗口填满了整个屏幕。


铬合金:

整个屏幕:3.44 MB

窗口:0.81 MB

标签:0.15 MB


火狐:

整个屏幕:5.23 MB

窗口:3.56 MB


当然,当录制与整个屏幕相对的窗口时,分辨率会稍微变小。就像 Firefox 录制一样:整个屏幕 = 2560x1440 和窗口 = 2488x1376,但我认为这不会有太大的不同。

我尝试查看 Chromium 源代码(因为它是开源的和基于 Chrome 的)以找出不同选项之间的区别,但似乎无法弄清楚发生了什么。我的谷歌搜索也没有成功。

有谁知道这些巨大差异的原因是什么?

如果这有所作为,我在 Ubuntu 20.04 上。

0 投票
1 回答
189 浏览

javascript - 如何下载使用 getDisplayMedia api 录制的视频?

问题: 在我的 React 应用程序中,navigator.mediaDevices.getDisplayMedia当我将主干设置为视频标签并播放时,我在应用程序中设置了屏幕录制,并且播放成功。但是当我尝试将它保存到本地机器时,它只保存了 0 分钟的视频。

这是我的代码。

有人可以帮我解决这个问题吗?.我尝试了很多,但它总是下载 0 分钟的视频。

0 投票
0 回答
55 浏览

javascript - 即使所有轨道关闭,停止共享按钮也不会消失?

问题: 在我的反应应用程序中,我使用 navigator.mediaDevices.getUserMedia 和 navigator.mediaDevices.getUserMedia 来记录浏览器的屏幕。在那里,即使我停止了 recordStop 中的所有曲目,停止共享按钮也会显示(请参阅下图)。

停止分享按钮

这是我的代码。

当我在弹出窗口选择屏幕时勾选共享音频选项时,我发现问题来了。我尝试了很多方法来找出在录制停止时从代码中清除该问题的方法。但我无法这样做。有人可以帮我解决这个问题吗?谢谢

0 投票
0 回答
80 浏览

webrtc - Jitsi,getDisplayMedia() 不捕获参与者的声音

我从 getdisplaymedia 获取屏幕视频和系统声音流,从 getusermedia 获取麦克风流,并使用 MediaRecorder 录制这些流。麦克风和屏幕录制都很好,所有系统声音都来了,但 jitsi 参与者的声音没有录制。这是我的代码:

函数 openShareScreen() {

}

函数getMixedAudioStreamXYZ(arrayOfAudioStreams){

}

0 投票
0 回答
32 浏览

javascript - 检测对 MediaDevices.getDisplayMedia() 的音频捕获支持

根据页面,某些浏览器尚不支持音频捕获MediaDevices.getDisplayMedia()

当然我可以检测到 Firefox 浏览器和 Safari,但是如果我不想根据浏览器的名称而是浏览器的功能来检测呢?

0 投票
0 回答
23 浏览

asynchronous - 桌面到服务器的快速截图

我正在尝试做的事情:

我正在尝试捕获客户端(浏览器)屏幕或选项卡并将其尽快发送到服务器,直到客户端断开连接或离开/终止。服务器将需要一些时间(< 1 秒)来处理图像并打印结果。

背景:

我正在使用带有 flask_socketio 的烧瓶网络服务器。我在 javascript 中使用异步方法,因为我必须循环获取屏幕截图

我试过的:

客户:

服务器:

这确实会打印结果,但速度很慢。有时它会非常快地打印一堆,然后每秒打印一个。即使我要删除过程图像并说打印出一些文本,它仍然需要一些时间。我不完全确定为什么会这样。

chrome 中的网络截图: 在此处输入图像描述 我们可以看到它花了 51 秒。

问题:

为什么会这样?是不是 blob 需要很长时间才能解决?我该如何解决?

0 投票
0 回答
18 浏览

javascript - WebAPI MediaDevices (navigator.mediaDevices) 如何标记屏幕/监视器信息?

我试图在 JS WebAPI 和 WindowsDisplayAPI 之间找到一个通用的显示标签。

当我尝试从 mediaDevices 获取屏幕信息时,它将我的主监视器标记为“屏幕:0:0”

然后我尝试从 WindowsDisplayAPI 获取屏幕信息,它将我的主显示器标记为“\\.\DISPLAY1”。

注意:我使用 python 和 .net 库绑定了上述步骤,它们都给出了相同的结果['\\.\DISPLAY1']。我用来获取屏幕信息的python代码。

我的问题是,

WebAPI 是如何映射屏幕信息的?有什么方法可以将 WebAPI 信息映射到 WindowsDispalyAPI 信息?

供您参考,JS WebAPI 文档 - https://docs.microsoft.com/en-us/uwp/api/windows.graphics.display?view=winrt-22000

核心窗口显示 API 文档 - https://docs.microsoft.com/en-us/uwp/api/windows.graphics.display?view=winrt-22000

我使用的 WindowsDisplayAPI .net 库 - https://github.com/falahati/WindowsDisplayAPI

我使用的 Python screeninfo 包 - https://github.com/rr-/screeninfo

谢谢!!!

0 投票
0 回答
22 浏览

javascript - 使用 MediaDevices.getDisplayMedia() 捕获显示时显示彩色边框

我想让用户知道他们的屏幕仍在被我的网络应用程序捕获。如何显示彩色覆盖边框以提醒他们这一点?

见插图

在此处输入图像描述

0 投票
0 回答
12 浏览

blob - 如何获得更高的 ImageCapture 分辨率?

这个问题可能有点傻。想法是使用 getDisplayMedia() 截屏并获取 ImageCapture,在我将其显示到画布上后,分辨率很差,就像模糊一样,有没有办法改变分辨率?另外,分辨率会影响blob吗?因为我更关心blob而不是显示图像。