Web MediaRecorder API 无法同时录制音频和视频
Web MediaRecorder API cannot record audio and video simultaneously
我一直在尝试使用 MediaRecorder API 录制视频和音频,但它只能让我录制没有音频的屏幕。我是否需要有两个独立的流并将它们合并为一个流?但是为什么在这种情况下可以在 navigator.mediaDevices.getDisplayMedia()
方法中设置 { audio: true, video: true }
呢?
这是我的代码:
async function startRecording() {
let mimeType = "video/webm;codecs=vp9";
try {
const mediaDevices = navigator.mediaDevices as any;
const stream = await mediaDevices.getDisplayMedia({
audio: true,
video: true,
});
const options = {
mimeType: mimeType,
bitsPerSecond: 500000,
};
let recorder = new MediaRecorder(stream, options);
const chunks = [];
recorder.ondataavailable = (e) => {
if (e.data.size > 0) {
chunks.push(e.data);
} else {
console.log("no data to push");
}
};
recorder.onstop = (e) => {
const completeBlob = new Blob(chunks, {
type: chunks[0].type
});
stream.getTracks().forEach((track) => {
track.stop();
console.log(track);
});
setVideoData({
recorded: true,
localVideoURL: URL.createObjectURL(completeBlob),
blob: completeBlob,
});
};
recorder.start();
} catch (error) {
console.log(error);
}
}
非常感谢任何指点。
大多数浏览器不支持使用显示媒体捕获音频。即使在 Chrome 和 Chromium 变体中,捕获支持也取决于 OS.
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#Browser_compatibility
我一直在尝试使用 MediaRecorder API 录制视频和音频,但它只能让我录制没有音频的屏幕。我是否需要有两个独立的流并将它们合并为一个流?但是为什么在这种情况下可以在 navigator.mediaDevices.getDisplayMedia()
方法中设置 { audio: true, video: true }
呢?
这是我的代码:
async function startRecording() {
let mimeType = "video/webm;codecs=vp9";
try {
const mediaDevices = navigator.mediaDevices as any;
const stream = await mediaDevices.getDisplayMedia({
audio: true,
video: true,
});
const options = {
mimeType: mimeType,
bitsPerSecond: 500000,
};
let recorder = new MediaRecorder(stream, options);
const chunks = [];
recorder.ondataavailable = (e) => {
if (e.data.size > 0) {
chunks.push(e.data);
} else {
console.log("no data to push");
}
};
recorder.onstop = (e) => {
const completeBlob = new Blob(chunks, {
type: chunks[0].type
});
stream.getTracks().forEach((track) => {
track.stop();
console.log(track);
});
setVideoData({
recorded: true,
localVideoURL: URL.createObjectURL(completeBlob),
blob: completeBlob,
});
};
recorder.start();
} catch (error) {
console.log(error);
}
}
非常感谢任何指点。
大多数浏览器不支持使用显示媒体捕获音频。即使在 Chrome 和 Chromium 变体中,捕获支持也取决于 OS.
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#Browser_compatibility