首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MediaRecorder 'ondataavailable‘事件未触发

MediaRecorder 'ondataavailable‘事件未触发
EN

Stack Overflow用户
提问于 2020-04-01 13:26:00
回答 3查看 4.3K关注 0票数 11

下面是我的完整代码,用于显示和实时录制音频和视频(以及稍后将blob块上传到服务器):

代码语言:javascript
运行
复制
$(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没有被触发/调用。这里有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-01 16:35:02

start()方法接受一个名为timeslice的可选参数。除非您指定了该参数,否则dataavailable事件只会在调用MediaRecorder上的stop()之后触发。

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

票数 24
EN

Stack Overflow用户

发布于 2020-04-01 16:38:50

解决办法是

代码语言:javascript
运行
复制
mediaRecorder.start(1000); // where 1000 is the interval
票数 6
EN

Stack Overflow用户

发布于 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示例这里 (不完整的代码,只检查控制台消息)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60971938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档