问题标签 [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.
javascript - 如何避免 SecurityError:操作不安全。在 Firefox 上使用 .mozCaptureStream 和 MediaRecorder 时?
给定代码
Chromium 浏览器使用 捕获<video>
元素的回放.captureStream()
, 以及实例事件的结果日志MediaRecorder()
。Blob URL
Blob
dataavailable
MediaRecorder
在当前实现.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 浏览器上实现的相同结果?
webassembly - MediaSteam 与 WebAssembly 的交互
有没有一种已知的方法可以将视频流从浏览器返回到 WebAssembly?我知道您可以使用 HTML 画布进行帧捕获,但我不知道如何获取整个流(音频/视频)并将其发送到我的 WebAssembly 应用程序。
video - MediaRecorder - 如何在录制时播放视频块/块?
我目前有一个MediaStream正在使用MediaRecorder录制。在recorder.stop() 之后的录制结束时,它会产生一个Blob,我可以播放该视频。我的目标不是在最后播放整个视频,而是在录制时播放一段。目前,在录制未结束时无法播放块。
我怎么能用javascript做到这一点?最终目标是通过 websocket 发送一个可播放的块,即使正在录制也是如此。
我无法带来新的解决方案。任何人都可以帮助或至少向我解释这些事情吗?
我试过的是
javascript - MediaRecorder 仅录制视频但无法播放
我正在使用 MediaRecorder 在视频标签中记录流。如果视频有音轨,MediaRecorder 可以正常工作,但是当我删除音轨以进行仅视频录制时,我无法播放录制的 webm 文件。
如果我猜的话,我会说录制的 webm 文件没有帧速率数据,所以播放只是尝试每隔一毫秒播放每一帧。这就是为什么我在尝试播放视频但看不到视频播放时看到图片的原因。
javascript - 获得许可之前的 MediaStream 摄像头和麦克风标签?
让这种代码工作很简单:
在选择设备之前怎么样?
this.mediaDeviceInfos.some(dev => dev.label)
是false
。所以我必须dev.deviceId
在我的输入中使用,这很难看:
我需要这里选择的特定设备,因为我使用它来支持多个摄像头和麦克风:
如何获取相机和麦克风的标签,以便用户可以在主题中选择它们?
video - MediaRecorder - 如何播放没有黑框的视频块/块?
多亏了 MediaRecorder,我正在录制我的网络摄像头的短视频大约 1 秒。录制视频后,我将其推入桌子。最后,当我有一些视频被推到桌子上时,我会尝试一个接一个地阅读每个视频(就像只有一个大视频)。但是我在每个视频之间都有某种黑框。就好像视频之间的过渡并不完美,阅读时断断续续。有人可以告诉我它发生的原因吗?
这是我用来录制小视频的部分代码:
这是我用来阅读大视频的部分代码:
谢谢。
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。如果这完全可行或正在等待错误修复,那么下一个问题将是为其提供音频,但我认为这将是一个单独的问题。
javascript - 如果使用移动互联网,js peerConnection 不连接
描述:
我在两台计算机之间使用 peerConnection 并将 mediaStream 从画布发送到其他计算机的视频元素
问题:
如果我在连接到主机的计算机上使用移动互联网,那么在
Ice 候选readyState
中保持静止的连接会正确接收,并且描述也已成功发送。但是通道没有打开connecting
remote
local
问题:
所以我不知道为什么会这样?