我正在尝试访问用户的网络摄像头/手机摄像头来录制视频并混合音频(想象一下 TikTok)。因此,用户按下录制按钮,音频就会播放(供用户为他们的舞蹈或其他内容计时),然后当音频结束时,录制停止,他们就可以下载它。
我可以在Windows和Android上使用MediaRecorder和CaptureStream for Chrome很好地实现它,但 iOS 上没有浏览器支持 CaptureStream。即使 MediaRecorder 似乎也不起作用。
有谁知道一个解决方案(不涉及将视频流式传输到服务器并在那里混合并下载回来)在iOS上录制视频(它当然可以在视频元素上播放流)并将其与音频混合?
我正在制作一个简单的项目,在 React 中使用 WebRTC 和 typescript。
我正在关注MDN HTMLMediaElement.captureStream()。
const vid: HTMLVideoElement | null = document.querySelector("video");
if (vid) {
vid.captureStream();
}
.
.
.
<video id="myVid"></video>
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误
Property 'captureStream' does not exist on type 'HTMLVideoElement'.ts(2339)
Run Code Online (Sandbox Code Playgroud)
我什至尝试过,
const vid: HTMLMediaElement | null = document.querySelector("video");
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么??
我试过
const videoCont = useRef<HTMLVideoElement>(null);
var URL = window.URL || window.webkitURL
const fileURL = URL.createObjectURL(e)
if (videoCont.current) {
videoCont.current.src = fileURL;
videoCont.current.play = async () => {
const mediaStream = videoCont.current?.captureStream();
}
}
Run Code Online (Sandbox Code Playgroud)
还是同样的错误, …
我正在尝试从动态创建的视频元素捕获流。当我获取视频元素并尝试 videoElement.captureStream() 时,Firefox 返回videoElement.captureStream 不是一个函数,但相同的代码可以在 Chrome 上运行。问题似乎 Firefox 在动态创建视频元素方面存在问题。我尝试突变观察者来检测新添加的视频元素并访问 captureStream 方法,但没有运气我发布了下面的代码示例(我正在使用 adapter.js for WebRTC https://webrtc.github.io/adapter/adapter-latest .js )
(function (win) {
var listeners = [],
doc = win.document,
MutationObserver = win.MutationObserver || win.WebKitMutationObserver,
observer;
function ready(selector, fn) {
listeners.push({
selector: selector,
fn: fn
});
if (!observer) {
observer = new MutationObserver(check);
observer.observe(doc.documentElement, {
childList: true,
subtree: true
});
}
check();
}
function check() {
for (var i = 0, len = listeners.length, listener, elements; i < len; i++) { …Run Code Online (Sandbox Code Playgroud) webrtc ×2
camera ×1
firefox ×1
html ×1
html5-video ×1
ios ×1
javascript ×1
reactjs ×1
safari ×1
typescript ×1