问题标签 [mediastream]

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 回答
268 浏览

javascript - url-createobjecturl-no-longer-accepts-mediastream - 在 2018 年 12 月 14 日 Chrome 更新之后

问题和场景的解释。

我有一个网络应用程序,它使用 AngularJS 组件来拍照。但是,在 2018 年 12 月 14 日对 Google Chrome 进行最后一次更新后,此组件停止工作。我确实搜索了这个问题,我发现所有可以做到这一点的组件也停止工作,可能是因为它们都使用了最近从浏览器中删除的带有 mediastream 参数的方法

编码

查看组件的源代码,我们可以看到它们仍然使用作为参数.createObjectURL传递的方法MediaStream,但这不再被浏览器接受。

客观的

我想更改组件的工作方式以使其再次工作,有人可以帮我这样做吗?

这是 GitHub 上组件的链接:https ://github.com/onemightyroar/angular-camera

Obs:我在那里打开了一个问题,但还没有得到任何答案。

0 投票
0 回答
112 浏览

canvas - 使用像素操作时 Safari 上的黑屏

我正在使用两层的画布,一层在另一层之上。我正在从视频中获取视频,我正在尝试在画布中使用 drawImage 获取流,并且该视频来自另一个对等方,因此它将在媒体流中并且我正在使用 draw Image,我明白了我的画布中的媒体流。我正在将此画布设置为透明度。为了那个原因

这适用于 Chrome、Opera 和 Firefox,这些都只接收没有黑屏的画布中的对象/图表,但在 safari 上却没有,它仍然返回带有黑屏的媒体流。帮助将不胜感激。

在此处输入图像描述

0 投票
0 回答
1353 浏览

javascript - 如何在内部流畅地播放连续的音频块

我正在1000ms使用从客户端获取音频块getUserMedia()并将其转换为 1 秒的音频 blob,然后使用 socket-io 将它们发送到服务器(以及其他客户端),直到用户停止录制。

在服务器上,我将获得的 blob 重新发送到使用 blob 的 URL 获取的其他客户端,createObjectURL()然后将此 URL 设置为前端src<audio>标记。每 1000 毫秒,客户端会获得一个新的 blob,并获取其 URL,然后将其提供给<audio>标签。

但是,从先前的 url 到新的 url 的这种转换有一些明显的延迟,这会导致音频不完整并且不太流畅和一致。

在客户端,这就是我录制音频 blob 的方式,

在服务器上,我只是将 blob 重新发送给客户端, socket.to(String(socket.room)).broadcast.emit('audio-blob', blob);

在接收客户端上,blob 是这样播放的,

如何在过渡期间使音频保持一致并减少明显的延迟

0 投票
0 回答
2061 浏览

javascript - 将 WebRTC 中的 MediaStream 服务器端(带有视频和音频)录制到文件中

我正在设计一个应用程序,其目的是从相机(移动应用程序)流式传输视频(带音频)并将其保存在磁盘上(在服务器上)。客户端和服务器之间的通信一切正常。我正在使用 WebRTC。对等点之一是服务器。我刚遇到一个问题。我通过 API 收到的对象是MediaStream. 现在的问题是如何将视频(带声音)保存到这个 MediaStream 的文件中。我知道我必须使用fs.createWriteStream,但我不知道如何转换 MediaStream 以使用该createWriteStream功能。我正在将wrtc用于 WebRTC API。

0 投票
0 回答
305 浏览

javascript - 试图打开闪光灯,没有手电筒功能

我正在尝试在 Windows 10、松下平板电脑下以 chrome 运行的 Web 应用程序上打开 Flash。

根据教程,我应该在调用 track.getCapabilities() 时让 torch true

但是我在返回的对象中根本没有得到火炬。本机应用程序能够打开闪光灯。

见代码:

任何线索如何解决这个问题?

0 投票
1 回答
3343 浏览

reactjs - 无法使用 webrtc MediaDevices 在反应应用程序中切换摄像头(从前到后)

这是我打算做的示例演示。如果有人对此修复有任何想法以使其工作或任何新逻辑,请分享。

该演示是通过使用 mediaStream API 和 react-webcam 库实现的,该库实际上提供了在名为 videoConstraints={faceMode: 'user' or 'environment'} 的道具的帮助下管理相机视图的选项,但它似乎没有正在工作。当我单击相机开关时,ICON 屏幕只是挂起,没有任何显示,而且有时它会意外工作所以最终我不得不跳转到这个原生 API 解决方案,它显示了下面的代码。万分感谢。

0 投票
0 回答
3894 浏览

javascript - 使用 WebRTC 上的 focusMode 将相机聚焦在对象上

我试图通过使用focusModegetUserMedia. 但是在将焦点模式的属性更改为manual模式后,我没有看到它反映在流上,我也可以看到在应用focusMode约束后它保持不变(focusMode: continuous)。问题是当我使用流捕获图像时,图像由于缺乏焦点而模糊。

这是一个代码片段。

有没有人有使用manualorsingle-shot模式让相机对焦的经验?任何帮助表示赞赏。

0 投票
0 回答
560 浏览

node.js - 使用浏览器中的块将音频流式传输到 Dialogflow

我们正在对 Dialogflow 进行一些试验,目前我们已经完全停止了。我们正在尝试设置一个浏览器客户端,通过 dialogflow npm 包的 node v2beta1 版本将音频分块流式传输到 Dialogflow。我们按照示例运行它,当我们使用节点服务器通过额外的软件 (sox) 接收声音时它工作正常,但我们想从浏览器流式传输。因此,我们设置了一个小代码片段,用于从麦克风中获取 MediaStream。

当数据事件触发时,我们得到一个块(一个数组缓冲区),我们以块的形式将其传递给我们的节点服务器。

在服务器上,我们遵循了以下示例:https ://cloud.google.com/dialogflow-enterprise/docs/detect-intent-stream#detect-intent-text-nodejs 。我们唯一不同的是,我们没有使用泵来链接流,而是将我们的块写入会话客户端。

在实验过程中,我们收到了几个我们解决的错误。但是在这一点上,我们通过我们的块并在期间和结束时收到空响应。

这是将音频传递给对话流的有效方式,还是我们真的需要设置流?我们不想使用节点服务器作为入口,它需要是浏览器。我们将拥有完全的控制权。

客户

服务器代码要长得多,所以我想我会省略细节,但这些是主要部分。

0 投票
0 回答
251 浏览

javascript - getUserMedia 约束与功能不对应

我有一个传感器分辨率为 1280x720 的网络摄像头(HP Webcam 2300)。运行代码时:

getCapabilities我得到 width {max: 1280, min: 1},这与硬件指定的网络摄像头功能一致。

getConstraints正如预期的那样,将宽度设置1280为理想宽度。

但是从getSettings我得到一个宽度值320,并且试图通过设置最小宽度来超过这个值会导致一个OverconstrainedError.

这种差异的原因是什么?

在 Google chrome 72.0 上观察到。

0 投票
0 回答
257 浏览

javascript - getUserMedia - 深度流扩展

如何通过 访问深度流轨道的属性getUserMedia()?我试图获得的属性principalPointX, principalPointY, focalLengthX, focalLengthY来自媒体轨道

文档说我需要设置depth为 true,所以当我这样做时,我收到一个错误,迫使我设置 a video

(index):20 Uncaught TypeError: Failed to execute 'getUserMedia' on 'Navigator': At least one of audio and video must be requested

当我尝试这样做时:

stream不会返回我想要获得的任何属性principalPointX。任何帮助,将不胜感激。