问题标签 [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 投票
1 回答
2129 浏览

recording - navigator.mediaDevice.getUserMedia... 如何访问实际流?

我测试了一段取自 https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia的代码。我正在尝试记录麦克风数据以将其访问给其他用户并将其记录到数据库中。实际上,我什至没有从网络摄像头获取数据。

对我来说,上面的代码尝试打开用户媒体,如果成功,来自 mediaStream 的流信息被保存到视频并播放视频。问题是,媒体流不是由 getUserMedia 本身给出的。说清楚:即使 getUserMedia 正在工作并获得许可,我从哪里获得流?回答

0 投票
0 回答
121 浏览

javascript - 使用 MediaRecorder 从画布记录 webm

我正在尝试从画布创建 .webm 文件。为此,我正在使用captureStreamand MediaRecorder。但是,我遇到了问题,因为该ondataavailable事件仅在 MediaRecorder 停止时才被触发,并且它包含的事件数据为size0。

我一直在遵循这些指南来帮助实现这一点:

以下是我的代码的相关部分(你也可以看到完整的代码):

在初始化时:

绘画:

捕获开始:

关于可用数据:

捕获完成:

对此问题的任何帮助将不胜感激。

0 投票
1 回答
2546 浏览

node.js - 来自 Blob NodeJS 的视频流

我以这种方式在客户端录制 MediaStream:

这些数据在服务器端被接受,如下所示:

它就像一个魅力,但我想使用缓冲区并制作服务器端提供的视频直播流。有什么办法吗?

谢谢你的帮助。

0 投票
0 回答
109 浏览

javascript - 如何使用新的 MediaStream API 获取音频 FFT?

在 MDN 文档中,navigator.getUserMedia被标记为已弃用,navigator.mediaDevices.getUserMedia建议改为使用。

但是绝对没有有用的文档。

我有一个旧脚本,用于获取音频的 FFT 以绘制光谱仪,如下所示:

在此处输入图像描述

我现在想做类似的事情。我想获得音频的 FFT,对其执行一些数学运算,然后播放。

所以,按照新的 API,我想出了这个:

这显示了AudioStreamTrack如果我在控制台中登录它:

绝对没有关于这个类的文档。也没有关于从MediaStreamTrack父类中获取任何声音的文档。

那么如何从MediaStreamAPI 录制的声音中获取 FFT 样本呢?

0 投票
2 回答
668 浏览

angular - 从 Opentok.js 订阅者获取 MediaStream

我正在使用@opentok/client为简单的多用户视频聊天构建 Angular6 应用程序。

我想做一个“聚光灯”(例如,全屏用户当前在会话中说话)功能hark.js用于语音检测。

问题是这个库需要源MediaStream来处理音频并发出我要捕获和处理的事件。

我想MediaStream从 OpenTok 的订阅者类中获取,但是如何做到这一点却无处可寻,但由于它基于常见的 WebRTC,它应该是可行的。

有什么线索吗?

示例代码:

0 投票
0 回答
946 浏览

javascript - ImageCapture API 在 takePhoto() 上抛出平台错误

我正在尝试使用ImageCapture API使用 4k Logitech Brio Stream网络摄像头捕获快照。

一切都在我的 Mac 的内置摄像头上运行良好,或者使用网络摄像头的默认视频约束,尽管尝试以更高的分辨率捕获失败,但使用非常通用的platform error. 我发现的唯一参考来自源代码,这里这里

这些链接分别建议capabilities.is_null()或建议photo_state.is_null(),尽管我一直无法找到可能导致其中任何一个的原因。

这是我的(略微精简)实现:

这适用于内置摄像头,同时切换视频约束以使其{ video: true }与网络摄像头一起使用,尽管分辨率较低 720 x 1280 分辨率(指定的最小值)。没有自定义更高的分辨率适用于此。

使用 Chrome 作为浏览器。

有谁知道如何开始takePhoto()拍摄 4k 图像?

我发现很少描述 API 的问题,因此欢迎任何建议或帮助。让我知道问题中是否缺少任何细节。提前致谢。

0 投票
1 回答
771 浏览

javascript - 连接多个远程对等点后如何关闭媒体流?

我正在创建多个 webrtc 对等连接并使用创建单个媒体流

一切正常,直到最后一个对等连接关闭并且我想关闭媒体流。

如果只使用了 1 个对等连接,那么一切都会按计划关闭。如果超过 1 个对等连接使用了 MediaStream,则 MediaStream 变为 null ,但浏览器上的摄像头指示灯和摄像头灯都保持亮起。

我错过了什么?

0 投票
0 回答
300 浏览

javascript - 无法使用 MediaStreamTrack 关闭设备手电筒

我有一个与 javascript 和 MediaStreamTrack 相关的问题。我可以打开设备手电筒,但(在某些设备中)我无法关闭,除非我调用 MediaStreamTrack 停止。我不能调用 MediaStreamTrack 停止,因为我有一个本地视频,我让用户打开或关闭手电筒。

¿ 有人有同样的问题吗?

我在这里给你一些代码......

问候。

0 投票
0 回答
1916 浏览

javascript - 在 Google Chrome 中使用 MediaStream API 更改 FocusMode 不起作用

在 Google Chrome 浏览器中,我能够使用getUserMedia() API 获取连接的 USB 摄像头的实时信息。我有一个滑块来更改亮度值,这工作正常。我还希望focusMode从连续切换到手动(相机始终以连续focusMode开始)。

我有以下 Javascript 代码来更改 FocusMode。

通过下面的行,我试图切换focusMode:

但这个焦点仍然处于连续模式。

有人可以告诉上面的代码有什么问题吗?预览时是否可以切换焦点模式?

0 投票
1 回答
1226 浏览

node.js - FFMPEG 只做一次 HTTP 范围请求(HTML5 MediaStream/WebM)

问题

我正在尝试将MediaStream来自浏览器的网络摄像头的 HTML5 传递到Socket.IO命名空间,该命名空间被缓冲,FFMPEG 可以通过 HTTP 端点以HTTP 部分/范围请求的形式访问。虽然,它在 Firefox/Chrome 上完美运行

在这里,我打包了一个示例并将其推送到GitHub 存储库

环境

安装

  • npm i从项目目录

  • npm start:启动快递服务器
  • 在 Firefox 或 Chrome 中打开http://localhost:3000,然后接受网络摄像头访问对话框。
  • npm run ffmpeg -i http://localhost:3000/view output.webm: TODO: 这不会输出完整的流
    • http://localhost:3000/view一旦在 Firefox/Chrome 中打开它就会可见,并且他们会一直请求直到流结束或服务器关闭。
    • 请注意,npm run ffmpeg ...这只是 ffmpeg 可执行依赖项的快捷方式,应在启动时安装node_modules/@ffmpeg-installer/linux-x64/ffmpeg(可能因您的操作系统而异)

FFMPEG 日志

跑步后我得到什么ffmpeg -v trace -i http://localhost:3000/view -y tmp.mp4