首页 > 解决方案 > MediaRecorder 'ondataavailable' 事件未触发

问题描述

这是我用于显示和实时录制音频和视频的完整代码(然后将 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没有触发/调用。这里可能是什么问题?

标签: javascripthtml5-videohtml5-audio

解决方案


start()方法采用一个名为 的可选参数timeslice。除非您指定该参数,否则事件dataavailable仅在您调用stop().MediaRecorder

https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/start


推荐阅读