微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实时将 Blob 块转换为视频

如何解决实时将 Blob 块转换为视频

我有一个客户端,可以将您的摄像头流式传输到 blob,然后再通过 socket.io 发送到另一个客户端。但是我一直在努力在这个客户端中实时显示这些 blob。让我们看看代码

<video id="video"></video>
<script src="/socket.io/socket.io.js"></script>
<script>
    const socket = io('/');
    const mediaSource = new MediaSource();
    const url = URL.createObjectURL(mediaSource);
    const video = document.getElementById("video");
    const arrayOfBlobs = [];
    video.src = url;

    socket.on('stream',blob => {
        console.log(blob);
        arrayOfBlobs.push(blob);
        appendToSourceBuffer();
    });

    let sourceBuffer = null;
    mediaSource.addEventListener("sourceopen",() => {
        sourceBuffer = mediaSource.addSourceBuffer("video/webm; codecs=\"opus,vp8\"");
        sourceBuffer.addEventListener("updateend",appendToSourceBuffer);
    });

    function appendToSourceBuffer() {
        if (
            mediaSource.readyState === "open" &&
            sourceBuffer &&
            sourceBuffer.updating === false
        ) {
            sourceBuffer.appendBuffer(arrayOfBlobs.shift());
        }
    }
</script>

基本上,我试图获取从 socket.io 接收到的 blob,并将其转换为源缓冲区,以便附加到 html 上的标记视频,但注意到发生了。所有的斑点都完美无缺,但我认为我需要在此之前做一些 tratative....

有人吗?谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。