问题标签 [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 回答
920 浏览

javascript - 使用 navigator.mediaDevices.getDisplayMedia 的 JavaScript 屏幕录像不可搜索

我们正在尝试使用navigator.mediaDevices.getDisplayMedia API 在 ReatJS 中录制屏幕,并在将 Stream 转换为 Blob 后在本地下载视频。

要下载视频,我将 Stream 转换为 Blob,然后使用 URL.createObjectURL() 获取 url 并以编程方式创建标签并以编程方式单击它以在本地下载视频。

我可以下载和播放视频,但无法在任何视频播放器中使用搜索栏搜索视频。

当我检查已下载视频的属性时,我看不到长度。我认为这就是问题所在,但我不确定在创建 blob 时应该如何设置长度。

这是使用上述代码下载的视频链接:

https://drive.google.com/file/d/1rtniknYlhsYVX3oEV6V7SWoV3RsNupqK/view?usp=sharing

PS请下载后播放视频,因为它在浏览器中播放良好。

下载视频的属性

如果您认为我可以使用其他方法录制和下载视频,请分享详细信息

0 投票
1 回答
1839 浏览

javascript - Google Meet 如何让您从另一个标签页进行屏幕共享?

Google Meet中,如果您点击“立即展示”然后点击“Chrome 标签页”,它会弹出一个窗口,让您可以从另一个标签页进行分享。这与标准的Screen Capture API不同,就像您只需运行

您会看到一个窗口,您可以在其中选择共享整个屏幕、共享窗口或共享选项卡。我想将此限制为仅选项卡。我尝试过应用约束,例如:

或者

但是,规范说这不起作用,实际上也不起作用。但如果是这样的话,那么 Google Meet 是如何做到的呢?

0 投票
0 回答
937 浏览

javascript - 使用 MediaDevices API 的 getDisplayMedia() 的完整网页截图

我正在使用 navigator.mediaDevices.getDisplayMedia 来获取屏幕截图,但它捕获了页面的唯一可见部分,但还有更多内容隐藏在滚动区域中并且被遗漏了。那么是否有可能捕获整页?

我尝试使用 Html2Canvas 和 dom-to-image 来截取整页截图,但它们有自己的回退,就像他们不捕获 iframe、SVG 等一样。

任何帮助将不胜感激。

0 投票
1 回答
246 浏览

javascript - 重新加载后在页面上使用 getDisplayMedia 继续录制

我正在使用navigator.mediaDevices.getDisplayMedia. 但是当我重新加载页面时,它停止了。我想自动继续录制。可能吗?

也许我可以以某种方式使用本地存储,重新加载的页面会尝试再次录制,但是再次出现选择要录制的屏幕的提示,但我想像以前一样选择相同的屏幕自动录制,这样每次重新加载页面后,用户都不会受到打扰。

有什么办法吗,也许服务人员可以解决这个问题?谢谢。

0 投票
0 回答
292 浏览

reactjs - mediaSession 不适用于流式传输

当涉及到简单的视频文件时,我的 mediaSession 工作得很好。您可以使用媒体键暂停和播放。

这是控制台登录暂停和播放的功能

这是带有随机视频的视频元素

但我的问题是它不适用于流。可能是因为它使用了 srcObject 吗?很高兴能够使用媒体键暂停/播放流媒体,就像 youtube/twitch 对直播视频一样。

这就是我如何使用它来进行桌面流式传输。下面是触发流的元素:

它会在下面运行这个函数

这是一个活生生的例子: https ://codesandbox.io/s/optimistic-thunder-zyoz4?file=/src/App.js

立即播放视频文件(如果没有,请按播放),您可以立即访问媒体键。按启动流启动桌面流,但您丢失了媒体密钥。

对不起,这很长...... 总之,我想使用媒体键进行流媒体。

希望这很清楚。先感谢您!

0 投票
0 回答
198 浏览

google-chrome - Chrome - 默认情况下使用 navigator.mediaDevices.getDisplayMedia 启用“共享音频”

我想用 Chrome 捕捉标签音频。我打电话

但默认情况下,Chrome 共享屏幕上未勾选“共享音频”选项。有没有办法从客户端代码中强制“共享音频”选项?

0 投票
2 回答
657 浏览

javascript - 如何将媒体流复制到弹出窗口?

我想通过调用在我的主选项卡中启动屏幕共享getDisplayMedia,然后将其克隆到我从我的应用程序(使用window.open)打开的另一个弹出窗口,有效地同时显示两次屏幕截图。

根据这个线程,这个片段应该可以工作 - 但它不会:

我错过了什么?

0 投票
2 回答
964 浏览

html5-canvas - 如何将多个 WebRTC 媒体流(屏幕捕获 + 网络摄像头)混合/组合成一个流?

我有一个从getDisplayMedia()返回的实时屏幕捕获媒体流,以及一个从getUserMedia()
返回的实时网络摄像头媒体流。

我目前在屏幕共享视频上渲染网络摄像头视频,以创建画中画效果:

在此处输入图像描述

我想将它们混合/组合成一个视频流,以便在单个 HTML 视频元素中呈现它。
我想让两个流都保持活跃和直播,就好像它们是两个独立的视频,呈现两个不同的媒体流一样。
我还需要保持流位置 - 保持网络摄像头流较小并位于屏幕共享流的顶部。保持原始分辨率和比特率对我来说也很重要。

我怎样才能做到这一点?

0 投票
1 回答
160 浏览

mediarecorder - Google 通过 MediaRecorder API 满足流媒体需求

我正在尝试使用媒体选项使用 getDisplayMedia 录制 google meet 音频和视频。我可以通过 getDisplayMedia 录制我的屏幕,但无法录制来自 google meet 的声音。如何使用被动录制,或者有什么方法可以通过任何机制或代码在 google meet 中录制屏幕、音频和视频?

0 投票
1 回答
230 浏览

javascript - 共享非全屏应用程序窗口时,Chrome getDisplayMedia 流被裁剪

我正在编写一个 Web 应用程序,它使用 webrtc 和带有getDisplayMedia的 Chrome 的内置屏幕捕获 api 。

在 Chrome 浏览器中,我在共享非全屏窗口时遇到了奇怪的行为。在捕获的流中,窗口的左侧和底部被裁剪了大约 7 个像素。我在共享 Mircosoft Excel 窗口(不是全屏)时注意到了这种效果,因为有很多元素靠近窗口边框。当我最大化窗口时,它不会在流中裁剪。

我在 Windows 10 上使用 Google Chrome 版本 89.0.4389.128(64 位)和标准 1080p 显示器。

我也能够在webrtc 实验的 getDiplayMedia 演示中复制此问题。我没有找到针对此问题的 Chrome 开放错误报告。我错过了什么?难道我做错了什么?

任何帮助或信息将不胜感激。