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

javascript - 正确使用 MediaRecorder 与 start 指定的时间片参数的方法

阅读此页面https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder.start后,我​​编写了自己的代码:

我希望在#recordingCamera 元素显示我相机的内容后 3 秒后,我将在 #replay 元素中看到内容重播。
但是#replay 元素只播放 3 秒。之后,#recordingCamera 元素仍然显示摄像机内容,但 #replay 元素没有其他内容。
检查控制台时,我发现了以下消息:

ondataavailable仍然触发,但数据发生了问题。

我的问题

  • 这是Firefox的错误吗?
  • 如果不是,那么使用带有 start 指定的时间片参数的 MediaRecorder 的正确方法是什么?
0 投票
1 回答
252 浏览

asp.net-web-api - 屏幕关闭时 MediaRecorder 停止

我有一个使用带有麦克风流的媒体记录器的应用程序。一切正常,只有一个例外。当我关闭显示器时,它会停止录制,当我重新打开它时,它会继续录制。就好像它正在暂停流,直到我再次解锁手机。

即使显示屏关闭,我也希望能够继续录制。我在firefoxOs 1.3上。

0 投票
0 回答
194 浏览

javascript - 超过几秒的 MediaRecorder 视频无法播放

我想在浏览器中录制视频,然后为用户播放。我目前正在使用 MediaRecorder API(目前仅在 Firefox 中可用)来执行此操作。它适用于短于几秒钟的视频,但否则视频根本不会显示。

控制台或类似内容中没有错误,我在文档中找不到任何有关文件大小限制的信息

这是我正在使用的代码(仅限 Firefox):

索引.html:

脚本.js:

在 Codepen 上:http ://codepen.io/anon/pen/xGqKgE

这是一个错误/浏览器问题吗?这个 API 有什么我不知道的限制吗?

0 投票
0 回答
340 浏览

firefox - 使用 Firefox WebRTC Media Recorder 制作可搜索的视频

我一直在尝试在网页上捕获网络摄像头视频。我注意到我使用的方法不是创建可搜索的视频。我不确定这是因为我做错了什么,还是 Firefox 中存在错误。

有没有办法解决或解决这个问题?我在想象更糟糕的情况,我可能需要使用 FFmpeg 之类的工具来解决这个问题。

http://jsfiddle.net/2gkvddme/14/

0 投票
1 回答
5768 浏览

javascript - 将 blob 作为 Uint8Array 发送到 NodeJS 并将其保存到文件

我正在尝试将来自 Firefox 中的新 MediaRecorder API 的 blob 发送到 NodeJS 以将其存储在文件中。该 blob 包含作为转换后的 webm 文件的记录。我在发送之前将这个 blob 分块成一定的大小,以便能够通过 webrtc 数据通道提供的带宽发送它。这看起来像这样:

在 nodeJS 方面,我试图将数据转换回 webm 文件,如下所示:

它告诉我,该块已写入,但文件为空。我对从 blob 派生的 base64 编码字符串进行了同样的尝试,它有效,但由于可能的数据损坏,这似乎是个坏主意。

我错过了什么?或者有没有更好的方法将 blob 从 JavaScript 传输到 NodeJS?

编辑

uint8array-constructor 似乎不接受以字符串形式传入的数据:

'0':39,'1':209,'2':79,'3':0,'4':230,'5':133,
'6':190,'7':138,'8 ':188,'9':103,'10':131,

在 new Uint8Array(message.payload) 部分之后,数组长度仍然为0。那么应该怎么做呢?

编辑二

在使用 JSON.stringify() 时添加 .toString() 后,我设法如愿接收了 UInt8Array。然而,正如上面现在显示的代码,它只将 [object uint8array] 写入文件。

EDIT III - 解决方案

使用上面的代码可以正常工作。

0 投票
1 回答
916 浏览

firefox - 控制 Firefox 中视频/音频流的音量增益

我正在尝试使用适用于 Firefox 的 MediaRecorder API 录制视频/音频文件。

当我使用网络音频 API 创建节点时(源 -> 增益 -> 目标)

录制文件的输出仅为音频,因为来自目标节点的返回流仅为音频流,请参阅此文档 https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode

有关在目标输出中获取音频/视频流以录制音频/视频而不仅仅是音频的任何建议。

0 投票
2 回答
3521 浏览

firefox - 使用 MediaRecorder 指定编解码器

如何指定与MediaRecorder API一起使用的编解码器?我看到的唯一选项是mimeType,这还不够。在 mimeType 选项中塞入编解码器似乎不起作用。

这会产生一个带有 Vorbis 和 VP8 的 WebM 流:

如果我制作了一个只有音轨(没有视频)的 MediaStream,那么 MediaRecorder 在 Ogg 容器中输出 Opus 音频:

如何使用 MediaRecorder API 在 WebM 容器中获取带有 VP8 视频的 Opus 音频?

火狐 v44.0.2

0 投票
1 回答
1312 浏览

javascript - 保存大文件

我需要在 JS 中保存一个未知大小的文件,可能是多个千兆字节。数据源是使用 mediarecorder 捕获的媒体流。

在 Chrome 中,这可以通过使用带有 filesystem: url 的文件系统和文件编写器 api 来完成,方法是在收到 blob 块时将它们写入文件条目,然后设置指向文件 url 的下载链接。

但是,我找不到在 Firefox 或 Edge 中执行此操作的方法(只要它获得 mediarecorder)。

0 投票
0 回答
720 浏览

javascript - MediaSource 随机停止视频

我正在做一个我想做的项目

我让它工作,但是几秒钟后它随机停止。

我知道 WebRTC,但在我正在研究的项目中,它基于一个环境,该环境是不支持 WebRTC 的嵌入式 Chrome 版本。

服务器:

客户:

0 投票
2 回答
1460 浏览

javascript - 从未使用 mimeType 初始化的 MediaRecorder 获取 mimeType

我正在使用 MediaRecorder API 在页面上记录一些媒体。在我的 MediaRecorder 初始化中,我没有指定内容类型,因为我不需要任何特别的东西。浏览器可以选择它想要的。

但是,当需要保存该记录时,我需要知道 blob 的 mimeType,这样我才能确定一个合理的文件扩展名。

MediaRecorder.mimeType属性是我想要的,但它是一个空字符串。它没有设置mimeType为 MediaRecorder 的默认值,所以我似乎无法知道默认值mimeType是什么。