下面是我的完整代码,用于显示和实时录制音频和视频(以及稍后将blob块上传到服务器):
$(function () {
var handleSuccess = function(stream) {
var player = document.querySelector("#vid-user");
player.srcObject = stream;
console.log("Starting media recording")
var options = {mimeType: 'video/webm'};
var recordedChunks = [];
var mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.ondataavailable = function(e) {
console.log("Data available")
if (e.data.size > 0) {
recordedChunks.push(e.data);
var url = URL.createObjectURL(new Blob(recordedChunks));
console.log("URL: " + url)
}
}
mediaRecorder.start();
};
navigator.mediaDevices.getUserMedia({ audio: true, video: true })
.then(handleSuccess)
})
视频播放可以工作,但问题是mediaRecorder.ondataavailable
没有被触发/调用。这里有什么问题吗?
发布于 2020-04-01 16:35:02
start()
方法接受一个名为timeslice
的可选参数。除非您指定了该参数,否则dataavailable
事件只会在调用MediaRecorder
上的stop()
之后触发。
https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/start
发布于 2020-04-01 16:38:50
解决办法是
mediaRecorder.start(1000); // where 1000 is the interval
发布于 2020-07-09 23:02:41
根据文档(https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder)解决方案:使用MediaRecorder.start("time in milliseconds")
在指定的时间间隔触发'dataavailable‘事件,和/或使用setTimeout(MediaRecorder.requestData(), "time in milliseconds")
。我有一个jsFiddle示例这里 (不完整的代码,只检查控制台消息)。
https://stackoverflow.com/questions/60971938
复制相似问题