将捕获的视频块渲染到视频画布

时间:2020-04-01 16:42:46

标签: javascript html5-video

我有这段代码,可以每秒捕获/记录来自摄像机/音频的视频

$(function () {
    var handleSuccess = function(stream) {

        var player = document.querySelector("#vid-user");
        var guestPlayer = document.querySelector("#vid-guest");
        player.srcObject = stream;

        console.log("Starting media recording")
        var options = {mimeType: 'video/webm'};
        var mediaRecorder = new MediaRecorder(stream, options);

        mediaRecorder.ondataavailable = function(e) {
            console.log("Data available")
            if (e.data.size > 0) {
                // How do I display the captured video to the guestPlayer ?
            }
        }

        mediaRecorder.start(1000);
    };
    navigator.mediaDevices.getUserMedia({ audio: true, video: true })
        .then(handleSuccess)
})

这里的问题是如何显示捕获到guestPlayer的视频,我这样做是为了测试捕获的数据,因为该webm块e.data将被上传到服务器。

e.data包含

data: Blob
size: 26009
type: "video/webm"
__proto__: Blob
size: (...)
type: (...)
slice: ƒ slice()
stream: ƒ stream()
text: ƒ text()
arrayBuffer: ƒ arrayBuffer()
constructor: ƒ Blob()
Symbol(Symbol.toStringTag): "Blob"
get size: ƒ size()
get type: ƒ type()
__proto__: Object

1 个答案:

答案 0 :(得分:1)

就这么简单

video.src = URL.createObjectURL(e.data);

https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

使用完该blob后,请务必使用URL.revokeObjectURL()