问题标签 [getusermedia]
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.
javascript - 谷歌浏览器的 webkitGetUserMedia - 如果用户忽略对话框怎么办?
所以使用 navigator.webkitGetUserMedia 的标准方式是这样的:
我正在开发的网站绝对需要使用用户的网络摄像头和麦克风(实际上是使用 Flash,但现在似乎要通过这个 API),所以我正在尽一切努力确保用户始终知道他们需要什么单击以使该站点正常工作。
- 如果没有调用任何函数,则假定对话框正在显示,并向用户显示说明。
- 如果调用了拒绝,请说明需要网络摄像头访问权限,并向他们展示他们可以单击 Chrome URL 栏中的摄像头图标来更改他们的决定。
- 当然,如果调用success,那么用户已经接受,并照常继续。
这是踢球者;您可以通过将上述 Javascript 粘贴到您喜欢的任何网站(在 Chrome 中)来跟进。如果用户导航到新网页,或刷新当前页面而不接受、拒绝或关闭下拉列表,他们将不会再次看到浏览器会话的当前域的权限对话框。
navigator.webkitGetUserMedia(...)
再次调用将不会显示权限对话框,相机图标也不会出现在 URL 栏中。控制台甚至不记录“用户被拒绝”。更重要的是,对于许多用户来说,这个下拉菜单很容易被意外忽略。唯一可用的解决方法是完全关闭浏览器并重新打开它(或者,手动浏览我们不想强迫用户进入的复杂设置菜单)。
我可以在这里与任何人确认这是“以某种方式”意图,还是我遗漏了什么?
javascript - HTML5 音频录制不工作外部麦克风
我正在使用 getUserMedia 来访问 Chrome 中的用户麦克风(版本 28.0.1500.72 m)。当用户使用带有内置扬声器的内置麦克风时,我能够记录和回放用户输入。
一旦我插入 USB 麦克风耳机,我就不再能够记录用户的输入。我已经在隐私和内容设置下的 chrome 设置中切换了设备。所以chrome确实看到了新插入的麦克风。我也重新启动了 chrome 并在插入麦克风后再次尝试。仍然没有用户输入。
提前致谢。
以下是我正在使用的当前代码。
javascript - 录制后如何取消getUserMedia指示器
我正在使用recorder.js并getUserMedia
在浏览器中进行一些录音。开始录制时,用户会收到“允许此站点使用您的麦克风”提示,一旦他们单击允许,Chrome 就会在标签的图标上添加一个指示器以表明它正在录制:
(来源:ubuntuone.com)
我的问题是,即使在我的应用程序停止录制之后,指示器也永远不会消失。基本上,我想撤销我自己的录制权限。这可能吗?
html - 现在是否可以使用 GetUserMedia API 从网络摄像头读取视频流并将其直接发送到服务器以进行进一步广播?
我需要构建一个使用 WebRTC 的 Web 应用程序来获取网络摄像头视频流和麦克风音频流,并立即将其转换到服务器以进一步广播到多个客户端。该应用程序必须以全双工方式实时完成。我的意思是这将是一种实时视频聊天。这将是某种教育应用程序。所以问题是:现在有可能吗?我应该使用哪些技术?我应该在后端使用带有 WebSocket 和 Node.js 的 WebRTC 吗?或者我可以使用 php 代替 node 吗?我可以为此使用 Socket.io 吗?有没有其他方法可以实现这一目标?可能是闪光灯?
xmlhttprequest - XHR blob 大小限制
我在通过 xhr.send(Blob) 上传 blob 时遇到了一些麻烦。我有一个网站,用户通过 getUserMedia() 创建视频,该视频通过 blob 放置在我的网站内,他们可以录制多次,直到他们对视频结果感到满意为止。我希望他们让用户能够将视频上传到服务器,而无需他们下载文件然后使用表单上传视频。所以我设法通过 xhr.send 做到了这一点
问题是,当 blob 的大小大约大于 1.8 MB 时,发送的数据为 0,所以基本上我的问题是,blob 大小是否有限制,或者我必须将 blob 分块发送到服务器?该问题的一个示例如下。
控制台日志
第一个视频正确上传,但下一个视频上传的信息为 0 字节。提前感谢您的所有帮助。
html - HTML5 getUserMedia() 媒体源
我用 html5 创建了一个流媒体网络摄像头。目前我可以通过我的网络摄像头拍照,但我想知道是否可以从列表中选择媒体流设备,例如我有两个网络摄像头我想选择网络摄像头来激活。如何使用 html5 getUserMedia() 调用来做到这一点?谢谢!
webrtc - WebRTC - 对等连接约束
考虑到 WebRTC 的当前状态,我一直在开发一个运行良好的 WebRTC 视频会议应用程序。
但是,我一直在探索向 PeerConnection 发送的视频和音频流添加约束的可能性。更具体地改进视频的性能。在旧(慢)笔记本电脑上进行视频会议时,我们注意到图像质量非常高,但每秒帧数很低。流是hacky。关于音频质量,我们给 Chrome 8.5 分,而 Firefox 只给 5.5 到 6 分。
我对对 getUserMedia 应用约束并不真正感兴趣,因为这个流也被显示给用户,我们不想改变这个本地输出的任何内容。(除非没有别的办法)
我在 W3G 的草案中找到了很多关于 MediaStreams 和 WebRTC 本身的信息。这些定义了某些约束,例如图像的默认 fps、minfps、minwidth 和 minheight。在 webrtc.org 上也有很多可用的信息,比如选择编解码器等。但这些设置只能在“幕后”进行。似乎这些设置无法从 RTCPeerConnection API 级别解决?
网络上的某些示例在 WebRTC 握手的 Offer / Answer 部分中操纵 SDP 字符串,这是要走的路吗?
TL;DR:如何应用——以及应用的最佳方式是什么——对 WebRTC 的约束,如 minfps、maxfps、默认 fps、minwidth、maxwidth、图像 dpi、视频和音频带宽、音频 KHz 以及任何其他改进方式流的性能或质量。
提前非常感谢!
javascript - 如何从 MediaStream 中删除轨道并“停止”网络摄像头?
我正在尝试从 MediaStream 中删除曲目。MediaStream.removeTrack()
从流中删除轨道,但相机灯仍然亮着,表示相机仍然处于活动状态。
这引用了stop()
一种我认为可以完全停止相机的方法,但是在 chrome 中我得到了"Object MediaStreamTrack has no method 'stop'"
有没有办法解决这个问题,还是我必须停止整个流,然后用我不想消失的轨道重新创建它?例如,我想在音轨仍然存在时删除视频轨道。
javascript - 在 Android 浏览器上检测对 getUserMedia 的支持失败
检测到对 getUserMedia 的支持时出现问题。我使用的是安卓 4.2.2。
问题是android浏览器的行为好像它支持getUserMedia但是在使用它时,我既没有调用成功函数也没有调用失败函数。下面的代码:
在 Android 浏览器上,此代码显示弹出窗口“getUserMedia supported”,但我从未收到任何弹出窗口显示“获取媒体”或“获取媒体失败”。在 Android 上的 Chrome 中运行相同的代码时,它显示“不支持 getUserMedia”
为什么会有这种行为?我认为这是检查功能支持的常用方法。
webrtc - 如何(自动)测试 WebRTC MediaStream 是否正常工作?
背景:
我正在开发一个系统,其中一部分是 WebRTC 视频(或音频)呼叫。该解决方案包括大量构建在getUserMedia和RTCPeerConnection API-s 支持之上的业务逻辑。特别是因为 Firefox 和 Chrome 以不同的方式实现了一些 API-s(例如MediaStream#getAudioTracks
,在 Firefox 上总是返回 [])。
测试要求示例:
两方正在进行音频-音频通话(双方都被询问并允许音频流(访问麦克风))。一方希望将呼叫升级为视频-视频。发生某些 UI 交互 - 与升级发起者对话以确认他的操作并向接收者提供升级提议,双方都允许相机访问。最终应该建立视频-视频通话。
问题:
如何检查 MediaStream 实例是否处于这样的状态,如果附加到<video>
element src
,那么将播放正确的信号(视频,音频)?
到目前为止的想法
最基本的测试是检查是否RTCPeerConnection#onstreamadded
被调用。问题在于,有时回调会被MediaStream
实例调用,但是当将它附加到<video>
元素时,什么都不会显示。这很可能是我的一个错误,这就是测试应该告诉我的。
是否有一些好的属性或回调RTCPeerConnection
或MediaStream
对象可以告诉我何时正确设置通信并且数据何时通过流?