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

将 m3u8 视频文件加载为不同来源的 Blob

如何解决将 m3u8 视频文件加载为不同来源的 Blob

我正在尝试使用从 m3u8 URL 创建的 Blob URL 流式传输视频。

m3u8 文件只包含相对路径。

例如

file1.ts
file2.ts
...

m3u8 文件存储在与加载视频的网站(例如 URL 为 website.com)不同的主机上(例如 URL 为 fileserver.com/path/thevideo.m3u8)。

因此,在将 m3u8 URL 转换为 Blob 后,视频播放器随后查找:

website.com/file1.ts
website.com/file2.ts

然而,实际的 URL 是:

fileserver.com/path/file1.ts
fileserver.com/path/file2.ts

问题是,有没有办法让视频播放器(我使用的是 VideoJS)使用正确的 URL 前缀?

我用于 Blob URL 生成代码在这里set video objects source file to a blob url

如果 m3u8 文件包含完整的 *.ts URL 而不是相对路径,我可以确认它可以工作,但我想看看这是否可以仅使用相对路径,因为这样会更方便。

解决方法

您可以为 videojs/http-streaming 引擎发出的请求附加自定义处理程序。

player.tech().vhs.xhr.beforeRequest = function(options) {
  options.uri = options.uri.replace('example.com','foo.com');

  return options;
};

注意:如果您使用 overrideNative 选项,您应该检查 safari hls 播放。

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