问题标签 [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.
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:我在那里打开了一个问题,但还没有得到任何答案。
canvas - 使用像素操作时 Safari 上的黑屏
我正在使用两层的画布,一层在另一层之上。我正在从视频中获取视频,我正在尝试在画布中使用 drawImage 获取流,并且该视频来自另一个对等方,因此它将在媒体流中并且我正在使用 draw Image,我明白了我的画布中的媒体流。我正在将此画布设置为透明度。为了那个原因
这适用于 Chrome、Opera 和 Firefox,这些都只接收没有黑屏的画布中的对象/图表,但在 safari 上却没有,它仍然返回带有黑屏的媒体流。帮助将不胜感激。
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 是这样播放的,
如何在过渡期间使音频保持一致并减少明显的延迟
javascript - 将 WebRTC 中的 MediaStream 服务器端(带有视频和音频)录制到文件中
我正在设计一个应用程序,其目的是从相机(移动应用程序)流式传输视频(带音频)并将其保存在磁盘上(在服务器上)。客户端和服务器之间的通信一切正常。我正在使用 WebRTC。对等点之一是服务器。我刚遇到一个问题。我通过 API 收到的对象是MediaStream
. 现在的问题是如何将视频(带声音)保存到这个 MediaStream 的文件中。我知道我必须使用fs.createWriteStream
,但我不知道如何转换 MediaStream 以使用该createWriteStream
功能。我正在将wrtc用于 WebRTC API。
javascript - 试图打开闪光灯,没有手电筒功能
我正在尝试在 Windows 10、松下平板电脑下以 chrome 运行的 Web 应用程序上打开 Flash。
根据教程,我应该在调用 track.getCapabilities() 时让 torch true
但是我在返回的对象中根本没有得到火炬。本机应用程序能够打开闪光灯。
见代码:
任何线索如何解决这个问题?
reactjs - 无法使用 webrtc MediaDevices 在反应应用程序中切换摄像头(从前到后)
这是我打算做的示例演示。如果有人对此修复有任何想法以使其工作或任何新逻辑,请分享。
该演示是通过使用 mediaStream API 和 react-webcam 库实现的,该库实际上提供了在名为 videoConstraints={faceMode: 'user' or 'environment'} 的道具的帮助下管理相机视图的选项,但它似乎没有正在工作。当我单击相机开关时,ICON 屏幕只是挂起,没有任何显示,而且有时它会意外工作所以最终我不得不跳转到这个原生 API 解决方案,它显示了下面的代码。万分感谢。
javascript - 使用 WebRTC 上的 focusMode 将相机聚焦在对象上
我试图通过使用focusMode
从getUserMedia
. 但是在将焦点模式的属性更改为manual
模式后,我没有看到它反映在流上,我也可以看到在应用focusMode
约束后它保持不变(focusMode: continuous
)。问题是当我使用流捕获图像时,图像由于缺乏焦点而模糊。
这是一个代码片段。
有没有人有使用manual
orsingle-shot
模式让相机对焦的经验?任何帮助表示赞赏。
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 。我们唯一不同的是,我们没有使用泵来链接流,而是将我们的块写入会话客户端。
在实验过程中,我们收到了几个我们解决的错误。但是在这一点上,我们通过我们的块并在期间和结束时收到空响应。
这是将音频传递给对话流的有效方式,还是我们真的需要设置流?我们不想使用节点服务器作为入口,它需要是浏览器。我们将拥有完全的控制权。
客户
服务器代码要长得多,所以我想我会省略细节,但这些是主要部分。
javascript - getUserMedia 约束与功能不对应
我有一个传感器分辨率为 1280x720 的网络摄像头(HP Webcam 2300)。运行代码时:
从getCapabilities
我得到 width {max: 1280, min: 1}
,这与硬件指定的网络摄像头功能一致。
getConstraints
正如预期的那样,将宽度设置1280
为理想宽度。
但是从getSettings
我得到一个宽度值320
,并且试图通过设置最小宽度来超过这个值会导致一个OverconstrainedError
.
这种差异的原因是什么?
在 Google chrome 72.0 上观察到。
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
。任何帮助,将不胜感激。