问题标签 [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.
javascript - 合并和定位两个媒体流
我正在尝试制作类似于
https://recordscreen.io/
的内容
,它将用户相机定位在屏幕录制上
我现在分别有两个流。
我已经尝试
过定位,但我希望它在单个视频元素中进行记录
这仅显示网络摄像头。我希望能够将网络摄像头放置在屏幕录制的顶部。
javascript - 使用 MediaRecorder 以 MP4 格式从网络摄像头录制视频
当我在支持 MP4 和 MediaRecorder(Linux 上的 Firefox)的浏览器中使用 JS MediaRecorder 以 MP4 格式录制网络摄像头时,网络摄像头启动但不记录。
当 MediaRecorder 的 mimeType 设置为时录制已经工作,video/webm
但是当我将 mimeType设置为时video/mp4
出现问题。
我用以下代码记录:
我希望网络摄像头在支持的浏览器中执行代码时开始录制,但是console.log
没有输出,并且在控制台中出现以下错误:
NotSupportedError: Operation is not supported
我知道我的浏览器同时支持 mp4 和 MediaRecorder:
MP4:https: //caniuse.com/#search=mp4 媒体记录器:https ://caniuse.com/#search=mediarecorder
但只有 webm 录音有效。
google-chrome-extension - webm提取aac时,时长不一致
当我尝试从中提取 aac 时webm
,持续时间会不一致。aac
少了十分钟。不同webm
的视频,差距也不一样。
webm
视频由chrome extension
chrome.tabCapture.capture生成
代码:
上面的代码会返回一个流,我会使用JS的MediaRecorder方法来处理这个流,最后保存为webm文件。
代码:
如果你不知道上面代码的含义,没关系,我将主要信息解释一下:
- 宽度:
1920
- 高度:
1080
- 转数:
30
- 音频位:
128000
- 视频位:
2500000
- 哑剧类型:
video/webm;codecs=vp9
我尝试了很多方法,如下所示:
但无一例外,都失败了。我被这个问题困扰了4天。
webm文件下载地址:https ://drive.google.com/file/d/1m4fC1hU-tXFPOZayrYCs-yteSTxw_TaW/view?usp=sharing
php - 如何通过 HTML 表单传递 MediaRecorder 录制的视频
我正在尝试通过 HTML 表单传递 MediaRecorder 文件,但它不起作用。代码如下:
这是记录音频的代码
当我提交表单时,变量 $_POST 为空,如何将视频传递给 send_message_form.php 然后将其保存到 htdocs 子文件夹中?
c++ - 解码 MediaRecorder 产生的 webm 流
我正在尝试使用 ffmpeg API 解码来自浏览器的视频流。流由网络摄像头生成,并使用 MediaRecorder 以 webm 格式记录。我最终需要的是一个用于进一步处理的 opencv cv::Mat 对象向量。
我使用 uWebsocket 库编写了一个 C++ 网络服务器。视频流每秒通过 websocket 从浏览器发送到服务器一次。在服务器上,我将接收到的数据附加到我的自定义缓冲区并使用 ffmpeg API 对其进行解码。
如果我只是将数据保存在磁盘上,然后用媒体播放器播放它,它就可以正常工作。因此,浏览器发送的任何内容都是有效的视频。
我认为我没有正确理解自定义 IO 应该如何处理网络流,因为似乎没有任何工作。
自定义缓冲区:
自定义 IO 的 readAVBuffer 方法
大解码方法,应该返回它可以读取的任何帧
我期望发生的事情是连续提取 cv::Mat 帧,因为我向它提供越来越多的数据。实际发生的是,缓冲区被完全读取后,我看到:
然后即使稍后我增加它的大小,也不会从缓冲区中读取更多字节。
我在这里做的事情非常错误,我不明白是什么。
javascript - 在 Mac-Chrome 浏览器中录制来自 IOS 的 webrtc 流时,MediaRecorder Web API 无法正常工作
我正在使用 MediaRecorder Web API 来记录来自本地 IOS 应用程序的 webrtc 流。1. MediaRecorder 在录制来自 ios 本机应用程序的 webrtc 流(在 windows chrome 上工作)时不能在 MAC-chrome 浏览器中工作 2. 我能够在 UI 中显示来自 ios 的 webrtc 流,但不能记录相同的流 3 . 我注意到在开始录制流后没有调用 ondataavailable 方法。
我已使用此链接https://webrtc.github.io/samples/src/content/getusermedia/record/在我的应用程序中记录 webrtc 流
注意:此问题仅在更新本机 IOS 应用程序中的 webrtc 框架和 MediaRecorder 如果我们在本机 IOS 应用程序中使用旧的 webrtc 框架,则在 mac-chrome 中按预期工作。
谁能帮我为什么专门 ondataavailable 方法不在 MAC-chrome 中调用
我无法弄清楚这是 mac-chrome 中的 MediaRecorder 问题还是本机 IOS 应用程序中的最新框架问题?
javascript - 以可以在 Whatsapp 上共享的格式保存 MediaRecorder 输出
我正在开发一个使用MediaRecorder录制视频的网站,我发现我在 Mac 上的 Chrome 支持多种 WEBM 录制格式
喜欢
广告
以及 MKV 格式,如video/x-matroska
, video/x-matroska;codecs=h264
.
我在事件中添加了一个监听器,dataavailable
将数据收集到一个名为 的数组mediaChunks
中,在停止媒体记录器后,我可以URL.createObjectURL(new Blob(mediaChunks, { type: ... }))
使用多种输出格式进行调用。
最后,为了下载文件,我创建了一个链接元素('a' 标记),并且可以在我将其download
字段设置为filename.mkv
, filename.webm
,时配置文件扩展名filename.mp4
。
是否有任何记录格式 + 输出格式 + 文件名扩展的配置将创建一个可以在 WhatsApp 上共享和查看的文件?它可以在 iPhone 和 Android 设备上查看吗?
有很多格式和编解码器,但我尝试过的所有方法似乎都不起作用。我必须将我的用户推荐给格式转换网站之一(例如 zamzar.com),或者开始构建繁重的后端。
现在是 2019 年,当然应该有一个简单的方法来解决这个问题......
javascript - 启动/停止 MediaRecorder API 会导致 Chrome 崩溃
我正在实现 MediaRecorder API 作为记录 webm blob 以用作直播中的片段的一种方式。我已经获得了我需要的功能,但在调用时遇到了 Chrome 崩溃的问题,MediaRecorder.stop()
并且MediaRecorder.start()
定期多次崩溃。
下面是录制代码:
我还研究了性能,发现每次启动/停止都会启动一个新的音频和视频编码器线程。我认为这是主要问题,因为将间隔设置为 10 秒而不是 5 秒会创建更少的编码线程。多个编码线程的建立导致 chrome 滞后,然后在几次通过后最终崩溃。
如何在仍然能够启动/停止 MediaRecorder 的同时防止发生多个编码线程(启动/停止是我发现实现可单独播放的 webm 文件的唯一方法,否则每个后续 blob 都缺少 webm 标头部分)。
javascript - 使用 MediaRecorder 录制时如何获取录制时间
我正在编写一个简单的网络应用程序,它可以捕获来自麦克风的音频并用一个对象navigator.mediaDevices.getUserMedia
记录它。MediaRecorder
我或多或少遵循mdn 的示例。
我想添加录制时间的实时显示。我目前依赖 .performance.now()
这不是很优雅,更是如此,因为我允许用户暂停/恢复MediaRecorder
. 有没有办法以某种方式直接从MediaRecorder
对象本身获取时间?