问题标签 [web-mediarecorder]

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

electron - 来自 WebConferencing 工具(Webex、GotoMeeting 等)的 getMediaStream 干扰

当 Webex 和 GotoMeeting 等程序运行屏幕/应用程序捕获时,使用电子/铬 getMediaStream API 会导致黑色捕获。知道如何解决这个问题吗?

0 投票
2 回答
4037 浏览

google-chrome - 为什么 MediaRecorder 无法启动?(错误:没有可用的音频或视频轨道)RecordRTC

更新:目前最好的假设是,这在某种程度上是由大型学校/大学网络引起的——其他用户没有问题。


我正在使用 RecordRTC 录制音频。这依赖于 MediaRecorder。

首次开始录制时,会记录此(捕获的)错误:

在此之前,RecordRTC 调用 MediaRecorder API:

这是代码中的回溯。它从调用startRecording(在 redux 传奇中)开始:

这里是startRecording

这是captureUserMedia

该错误似乎发生在这一行,特别是startRecording

还有一些细节可能有助于解决这个问题:

  1. Chrome 版本似乎不是问题:一些用户v61.0.3163.100有问题,而另一些用户则没有
    1. 对于遇到问题的用户来说,似乎每次都会发生。
    2. 显然,navigator.getUserMedia已弃用,但它仍然应该起作用——promise 的复杂逻辑可能会引入错误。

更新:

  1. 该问题发生在两个使用大型网络(大学网络和公立学区网络)的用户身上。私人家庭网络上的任何用户都没有发生这种情况......

让我知道还有哪些其他信息会有所帮助,我会立即回复。谢谢你。

更新:

Muaz Khan 建议添加一个隐藏的音频元素,以防止流和轨道被停止/释放。这是在捕获流之前添加的附加代码(首次初始化记录器时):

更新 2:

但它仍然无法正常工作。关于为什么这可能不起作用的想法:

  1. 我不确定 hiddenAudio HTML 元素实际上是否在持续并捕获流。(它的范围可能不正确。)

我想知道回调地狱中是否存在细微的错误,navigator.getUserMedia并且使用更新的navigator.mediaDevices getusermedia(依赖于承诺)会更容易遵循。

另一种可能性是在初始化记录器时引入了错误——这里是:

再次感谢。

更新:

在这里包括两个遇到此问题的用户的个人资料(都是大型公立学校/大学网络)。私人家庭网络上的用户不会出现此问题:

在此处输入图像描述 在此处输入图像描述

0 投票
0 回答
557 浏览

javascript - 使用 Webrtc 捕获网络摄像头视频时,如何修剪录制的视频?

我正在使用 javascript 使用网络摄像头录制视频,并将录制的 blob 作为视频文件上传/下载。

我希望能够切断视频的起始部分和结尾部分。

不幸的是,浏览器不会将结果 blob 识别为视频。有任何想法吗 ?

0 投票
0 回答
452 浏览

javascript - 新的 BLOB 丢失数据 javascript

我正在尝试保存这样的 BLOB

当我打印出“块” blob 时,它有数据,但是当它转换为 Array Buffer 时,所有数据都丢失了。

我怎样才能解决这个问题?

0 投票
1 回答
7114 浏览

javascript - MediaRecorder ondataavailable 工作成功一次

MediaRecorder ondataavailable 工作成功一次。我需要获取 blob,获取 base64,发送到我的服务器,将此 base64 解码为音频 blob。这很奇怪。

例如,输出:

blob1 blob2 blob3 blob4 blob5 blob6 blob7 blob8 blob9

……

我只能听到 blob1,其他 blob 被“禁用”。

试试看!此代码记录音频:

0 投票
2 回答
1910 浏览

video - 将 webm 块作为独立视频播放

我已经构建了一些代码,它将获取 MediaRecorder API 来捕获音频和视频,然后使用 ondataavailable 函数通过 websockets 将相应的 webm 文件 blob 发送到服务器。然后,服务器通过 websocket 将这些 blob 发送到客户端,该客户端使用媒体源扩展 API 将视频放在一个缓冲区中。

这很好用,除了如果我想在中途开始一个流,我不能只发送最新的 blob,因为 blob 本身是不可播放的。此外,如果我乱序发送 blob,浏览器通常会抱怨音频编码不匹配。

我真的不太了解视频容器、编解码器等,但我的问题是,如何将这些 blob 作为独立视频播放?我可以以某种方式使用代码将第一个 blob 中的信息(可单独播放)添加到其他 blob 中吗?什么是能够让流中途播放的好方法?我会转码,但似乎需要很长时间,因为我想设置实时(或接近)流媒体。

谢谢!

0 投票
1 回答
2356 浏览

node.js - 如何从 blob/formdata 在节点服务器上写入音频文件

我有一个以音频/webm 格式录制的 MedaRecroder 流。我将其发送到节点服务器。我可以在 req.files 下的响应中看到该文件,但是当我播放它们时,听起来好像有编码错误。

我正在尝试将音频文件写入服务器(最好是 .wav 但 webm 会这样做),以便我可以访问和播放音频

在我的服务器上,我正在处理这样的帖子

这是我的控制台输出

0 投票
0 回答
114 浏览

node.js - Browser Mediarecorder - 捕获多个来源时的 API 有时视频会损坏

我的客户应用程序基于Electron所以基本上它是由网络技术组成的。因为我想打开两个MediaRecorder用于捕获桌面屏幕,另一个用于相机。我提供了一个非常简单的示例,如下所示。当我只使用单个时,MediaRecorder一切正常。然后当我开始同时使用这两种方法时,有些电脑在停止录制过程中或reset几次后偶尔会出现视频损坏。尤其是当计算机运行繁忙或内存只剩下很少但并非真正不足的情况下。

我尝试使用两个不可见的浏览器窗口(在 Electron 中)并每秒保存在文件中来解决这个问题,但它并没有完全解决问题(虽然它正在变得更好)。

另一个问题是我尝试在 Electron 中使用事件,但fs.createWriteStream如果fs.write我在方法中使用切片时间,事件不会每次都触发。有时会出现问题。dataavailabledataavailablerecorder.start(1000)dataavailable

对这个要求有什么建议吗

0 投票
1 回答
618 浏览

javascript - Firefox 无法播放 Chrome 中录制的视频

我有一个使用这个反应插件在 Chrome 中录制的视频:rico345100/react-multimedia-capture。该视频被上传到服务器。

该视频在 Chrome 中播放良好。但是,相同的视频无法在 Firefox 中打开。相反,在 Firefox 中录制的视频在 Chrome 和 Firefox 中都可以正常播放。

我们如何解决这个问题?

0 投票
2 回答
3201 浏览

javascript - getUserMedia 的音频质量很差。任何想法为什么?

我正在尝试在 React Web 应用程序中设置一个录音机来录制一大群人(15 岁以上)的谈话,但似乎无法获得正确的录音质量。我最初尝试通过将以下约束传递给 getUserMedia 来捕获录音:

对于大多数录音,录音质量都很好。然而,有时录音会以这种非常糟糕的、失真的、几乎金属声音的质量结束。我一直无法弄清楚如何重现效果(我已经开始捕获用户的浏览器,试图帮助调试这个问题)。

大约一周前,我使用约束 = { audio: true, video: false } 部署了应用程序,但这有时也会产生质量略有失真的录音。到目前为止,没有一个录音像以前的一些录音那么糟糕,但质量仍然不是我们想要的。

今天,我将约束设置为:

但我怀疑这将是获得高质量录音的神奇门票,我开始认为也许我应该放弃 MediaRecorder 以换取其他东西。有没有人对 1)问题是什么和 2)我们如何解决它有想法?

谢谢!