首页 > 解决方案 > 内存中 blob 的 createObjectURL 无法在 videoJS 中设置源

问题描述

fetch用来下载 mp4 文件并使用工作人员将结果保存在 blob 对象中。像这样的东西:

fetch('http://techslides.com/demos/sample-videos/small.mp4')
  .then(function(response){ 
    response.blob().then(function(blob) {
      self.postMessage(blob);
    });
  }) 

在主线程中,我得到了 blob,当我打印它时,它显示在控制台中:

Blob {大小:383631,类型:“video/mp4”}

然后我想,视频下载得很好。

在主线程中,我播放了一个视频,当它结束时,我想更改源以使用blob I have in memory:(在代码中,adBlob是工作人员返回的 blob)

    videojs("video").ready(function(){
        this.on('ended', function() {
            if (adBlob) {
                this.pause();
                this.src({
                    type: "video/mp4", 
                    src: URL.createObjectURL(adBlob)
                });
                this.load();
                this.play();
            }
        });

        this.play();
    });

它不起作用,我一直在阅读可能是为了获得权限,但这种情况应该是针对 local 的files。我不是在尝试使用文件。在我的情况下,blob 仅在内存中。

有任何想法吗?谢谢

标签: javascriptblobmp4video.js

解决方案


推荐阅读