我正在使用Videojs版本7.6.6。如果video
是Blob URL,它将不会播放html5 src
。但是,它将加载视频时间,但不会播放。我收到此警告,然后永久加载:
VIDEOJS: WARN: Problem encountered with the current HLS playlist. Trying again since it is the only playlist.
这是我的代码运行的方式:
<video id="my_video" class="video-js vjs-matrix vjs-default-skin vjs-big-play-centered" controls
preload="none" width="640" height="268" data-setup="{}"></video>
<script type="text/javascript" src="/js/video-766.min.js"></script>
<script>
fetch("https://server/hls/index.m3u8").then(result => result.blob())
.then(blob => {
var blobURL = URL.createObjectURL(blob);
var player = videojs("my_video");
player.src({ src: blobURL, type: "application/x-mpegURL" });
}
);
</script>
如果我尝试使用不带斑点的方法,而只是使用index.m3u8文件的常规URL,那么它将起作用。因此,我认为这是创建Blob URL的问题。这样可以正常工作,视频开始播放:
<video id="my_video" class="video-js vjs-default-skin" height="360" width="640" controls preload="none">
<source src="https://server/hls/index.m3u8" type="application/x-mpegURL" />
</video>
<script>
var player = videojs('my_video');
</script>
我已经搜索了这个问题并找到了很多东西,但是没有一个对我有帮助。我创建Blob错了吗?
答案 0 :(得分:0)
如果我没记错的话,为 blob 生成的对象 URL 将以 file://
协议开头。浏览器不允许您加载带有 file://
URL 的数据。我遇到了类似的问题,所以我在我的应用程序上创建了一个简单的服务器,它通过 https://
返回请求的文件。
您的 index.m3u8
运行的原因,因为它是通过 https
协议提供的