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

javascript - 如何避免 SecurityError:操作不安全。在 Firefox 上使用 .mozCaptureStream 和 MediaRecorder 时?

给定代码

Chromium 浏览器使用 捕获<video>元素的回放.captureStream(), 以及实例事件的结果日志MediaRecorder()Blob URLBlobdataavailableMediaRecorder

在当前实现.mozCaptureStream()错误的 Firefox 浏览器中,会抛出recorder.start()callSecurityError: The operation is insecure.和 at recorder.stop()call InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

这些错误显然是由于来自 DOM Elements的媒体捕获的安全考虑

我们如何才能避免上述错误并达到 Chromium 和 Chrome 浏览器在 Firefox 浏览器上实现的相同结果?

0 投票
2 回答
2153 浏览

webassembly - MediaSteam 与 WebAssembly 的交互

有没有一种已知的方法可以将视频流从浏览器返回到 WebAssembly?我知道您可以使用 HTML 画布进行帧捕获,但我不知道如何获取整个流(音频/视频)并将其发送到我的 WebAssembly 应用程序。

0 投票
2 回答
1827 浏览

video - MediaRecorder - 如何在录制时播放视频块/块?

我目前有一个MediaStream正在使用MediaRecorder录制。在recorder.stop() 之后的录制结束时,它会产生一个Blob,我可以播放该视频。我的目标不是在最后播放整个视频,而是在录制时播放一段。目前,在录制未结束时无法播放块。

我怎么能用javascript做到这一点?最终目标是通过 websocket 发送一个可播放的块,即使正在录制也是如此。

我无法带来新的解决方案。任何人都可以帮助或至少向我解释这些事情吗?

我试过的是

0 投票
0 回答
669 浏览

javascript - MediaRecorder 仅录制视频但无法播放

我正在使用 MediaRecorder 在视频标签中记录流。如果视频有音轨,MediaRecorder 可以正常工作,但是当我删除音轨以进行仅视频录制时,我无法播放录制的 webm 文件。

如果我猜的话,我会说录制的 webm 文件没有帧速率数据,所以播放只是尝试每隔一毫秒播放每一帧。这就是为什么我在尝试播放视频但看不到视频播放时看到图片的原因。

0 投票
1 回答
2431 浏览

javascript - 获得许可之前的 MediaStream 摄像头和麦克风标签?

让这种代码工作很简单:

在选择设备之前怎么样?

this.mediaDeviceInfos.some(dev => dev.label)false。所以我必须dev.deviceId在我的输入中使用,这很难看:

相机选择画面

我需要这里选择的特定设备,因为我使用它来支持多个摄像头和麦克风:

如何获取相机和麦克风的标签,以便用户可以在主题中选择它们?

0 投票
2 回答
3013 浏览

video - MediaRecorder - 如何播放没有黑框的视频块/块?

多亏了 MediaRecorder,我正在录制我的网络摄像头的短视频大约 1 秒。录制视频后,我将其推入桌子。最后,当我有一些视频被推到桌子上时,我会尝试一个接一个地阅读每个视频(就像只有一个大视频)。但是我在每个视频之间都有某种黑框。就好像视频之间的过渡并不完美,阅读时断断续续。有人可以告诉我它发生的原因吗?

这是我用来录制小视频的部分代码:

这是我用来阅读大视频的部分代码:

谢谢。

0 投票
2 回答
2397 浏览

javascript - 即使在我运行 MediaStreamTrack.stop() 之后,网络摄像头灯仍然亮着

我正在构建一个反应应用程序,需要访问使用以下代码获取的网络摄像头:

但是,当我卸载当前组件时,我的网络摄像头保持打开状态。在我的 componentWillUnmount 块中,我尝试了以下代码。

但是,我的网络摄像头灯仍然亮着。当我之后控制台记录 mediaStreamTrack 时,我得到:

在此处输入图像描述

如何停止我的网络摄像头?

0 投票
1 回答
1062 浏览

video - ffmpeg 命令在左下角放置一个视频流,在中间放置另一个视频流

我正在研究一种服务器端解决方案,以解决以其中一个位于左下角而另一个位于中心的方式排列 2 个视频流的问题。我发现ffmpeg能够解决这个问题。然而,我是 ffmpeg 语法和语义的新手,并且尝试了一些水平和垂直堆叠以及研究填充、缩放。

这是我想要实现的输出示例:

在此处输入图像描述

在这个示例中,中心部分是主视频流,左下角是另一个视频流并排播放。

假设两个视频流是同步的。

我试过用这个做实验:

上述命令将两个视频水平堆叠。

虽然,我正在尝试越来越多的解决方案,但在此先感谢,因为我希望有开发人员坐在那里,他们有 ffmpeg 的经验。

0 投票
0 回答
1491 浏览

javascript - 是否可以以较低的帧速率馈送 MediaStream 帧?

我想使用MediaStream.captureStream()方法,但是由于规范和错误,它要么变得无用,要么我完全错误地使用它。
我知道captureStream最大帧速率作为参数,而不是恒定的,它甚至不能保证,但是可以更改 MediaStream currentTime(目前在 Chrome 中,在 Firefox 中它没有效果,但作为回报有 requestFrame,在 Chrome 中不可用),但手动框架请求或设置框架位置的想法MediaStream应该覆盖此效果。它没有。

在 Firefox 中,它逐帧平滑地渲染视频,但视频结果与用于处理的挂钟时间一样长。
在 Chrome 中,有一些可疑的黑框或重新排序的框(目前我不关心它,直到 FPS 匹配),手动设置currentTime没有给出任何结果,与 FF 中的结果相同。

我使用来自MediaStream Capture Canvas 和 Audio 同时回答的修改后的代码。

有没有办法让它运行?
目标是加载视频,处理每一帧(在我的情况下这很耗时)并返回处理后的帧。

脚注:我不想使用 ffmpeg.js、外部服务器或其他技术。我可以通过经典的 ffmpeg 处理它,根本不使用 JavaScript,但这不是这个问题的重点,更多的是关于 MediaStream 的可用性/成熟度。这里的上下文是 Firefox/Chrome,但也可能是 node.js 或 nw.js。如果这完全可行或正在等待错误修复,那么下一个问题将是为其提供音频,但我认为这将是一个单独的问题。

0 投票
0 回答
28 浏览

javascript - 如果使用移动互联网,js peerConnection 不连接

描述:

我在两台计算机之间使用 peerConnection 并将 mediaStream 从画布发送到其他计算机的视频元素

问题:

如果我在连接到主机的计算机上使用移动互联网,那么在 Ice 候选readyState中保持静止的连接会正确接收,并且描述也已成功发送。但是通道没有打开connectingremotelocal

问题:

所以我不知道为什么会这样?