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

javascript - 使用 getDisplayMedia() 捕获系统音频时防止回声

我正在构建一个 JavaScript 应用程序以在单个页面上同时显示屏幕共享和相机输入。目的是使用这些应用程序自己的共享工具将该浏览器选项卡共享到其他应用程序(Zoom 等)中(所以我自己没有使用 WebRTC)。一切都很好,除了音频。

我感兴趣的音频来自单个(非基于网络的)应用程序,所以我知道捕获它的唯一方法是捕获整个屏幕和系统音频。但是,如果我将这个媒体分配给一个视频对象(练习的重点),我就会被困在一块石头和一个坚硬的地方之间。如果我将视频对象静音,听起来不错,但是,将选项卡共享给外部应用程序不会发送任何音频,因为。如果我不使视频对象静音,我会得到回声——不是来自我的麦克风,而仅仅是因为来自视频对象的声音现在是系统音频的一部分,然后会反馈到屏幕共享中。

问题对我来说很清楚,解决方案不是。原则上,echoCancellation 设置似乎是为处理这个问题量身定做的,但它没有任何效果。否则我没有正确使用它。我将它作为对 getDisplayMedia() 调用的约束:

并调用:

关于它是如何工作的,我有什么遗漏吗?或者我可以使用一些技巧来使我的应用程序的输出作为“标签音频”提供给想要共享标签的程序,但不知何故将其包含在系统音频中?

我尝试阅读有关 Web Audio API 的内容,看看是否有帮助,这似乎很有希望,但它也相当令人难以抗拒。我真的是一个新手。

0 投票
0 回答
17 浏览

javascript - 使用 screenCaptureAPI(getDisplayMedia) 与音频共享屏幕时出现回声问题

我们正在使用 JavaScript 使用 Screen Capture API(getDisplayMedia) 实现与音频共享屏幕。为了获得请求的屏幕,我们在 getDisplayMedia(constraints) 中传递了以下约束,

然后我们通过 webRTC 分享了承诺的流,

让我们考虑 A 和 B 用户在那里,A 正在共享屏幕并且屏幕通过 webRTC 共享给 B 然后用户 B 遇到 ECHO 问题(在与用户 A 交谈时),

注意:如果用户 A 共享特定的选项卡/窗口屏幕,则用户 B 不存在 ECHO(与用户 A 交谈时)

我们正在使用 getDisplayMedia(constraints) 如下所示,

任何帮助,将不胜感激。谢谢。

0 投票
1 回答
15 浏览

javascript - 在确定感兴趣元素的位置后裁剪浏览器窗口的相关部分

我有一个网页,我在 iframe 中嵌入了 YouTube 视频。我需要捕获 YouTube 视频的屏幕截图。由于跨域限制,使用 html2canvas 和 dom2image 之类的库不起作用。

因此,我想到了使用getDisplayMedia()捕获完整浏览器窗口的屏幕截图,然后使用drawImage()裁剪相关部分的想法。在我看来,这似乎完全有道理,只需识别 iframe 的位置,然后使用 drawImage 裁剪它。但是,它不会裁剪所有屏幕尺寸的相关部分。当我更改屏幕分辨率或放大时,它似乎坏了。

另一个想法是编写一个人工智能算法来捕捉这一点。但我认为这是矫枉过正。关于如何使其适用于所有屏幕尺寸和分辨率的任何想法?

0 投票
0 回答
77 浏览

node.js - 在节点 js 中使用 ffmpeg 将 webm 转换为 mp4

我正在尝试以可以在移动 safari 上播放的格式在节点的后端将 .webm 转换为 .mp4。

这样做的原因是我们使用 getUserMedia() 和 getDisplayMedia 来记录用户的相机/屏幕,而 webm 不能在移动 ios safari 上播放。

在这个答案的第二部分之后 - https://stackoverflow.com/a/63463669

在前端 -

在后端

输出视频以 chrome 格式运行,格式为 .mp4,但仍无法在 safari 中播放。如果有人能解决我不胜感激!!

这是使用上述代码生成的视频:

https://tendon-user-files-public.s3.eu-west-1.amazonaws.com/tendon-production/bc8cd560-4898-402b-8aa3-041937adf725.mp4

这是我不久前上传的另一个视频,它在 safari 中工作: https ://tendon-user-files-public.s3.eu-west-1.amazonaws.com/tendon-production/bafybeihjwawyuvirf4ymwununm25skxvzedlsd33ztav3rbofekv7z6yzu.mp4

谢谢! 在此处输入图像描述

0 投票
1 回答
13 浏览

webrtc - 如何使用 getDisplayMedia api 设置高清屏幕录制?

我使用getDisplayMedia() API 创建了一个屏幕录像机应用程序,但输出视频质量不好,有没有办法配置输出视频质量以获得高清分辨率视频?

我有类似的问题-> https://groups.google.com/g/discuss-webrtc/c/-KC3xg4MEp4但解决方案不可用

0 投票
0 回答
20 浏览

java - 任何用于屏幕共享或支持 getDisplayMedia 的 cordova 插件?

是否有任何插件或代码支持使用 cordova 在 Android 上共享屏幕?一直在到处寻找,但徒劳无功。

有点理解我们需要使用 Media Projection,但找不到从 Media Projection API 获取视频轨道以及如何请求相关权限的好方法。希望为 webrtc 构建解决方案。

请让我知道是否有解决方案。