【发布时间】:2021-08-16 22:58:44
【问题描述】:
我正在开发 Firefox 扩展程序,我希望能够加载我创建并插入页面的视频元素,并加载与在 Odysee 页面上播放的主视频相同的内容。 Odysee 页面中视频的 src url 是一个 Blob,类似于:blob:https://odysee.com/0f30d1d7-af80-9243-9ea1-52c5492ead50
我通过简单地尝试过:
myVideoPlayer.src = odyseeVideoPlayer.src;
但它不起作用,在我的播放器上出现“没有找到支持格式和 MIME 类型的视频”错误。
从我对使用 blob url 所做的研究中,我了解到 Blob 实际上只是一个对象,其中包含存储在浏览器内存中的视频(在本例中)的原始数据。 (对于 blob url 包含带有域的 http 协议这一事实,我有点困惑,但从我所阅读的内容来看,这并没有改变 blob 存储在本地的事实。)
我不明白为什么使用相同 src url 的两个视频元素不会同时播放该文件,因为似乎该 url 指向内存中的同一个 Blob。我已经搜索并阅读了许多关于将 blob 用于视频元素 src 的 SO 和 SE 问题,但没有人回答这个问题。
【问题讨论】:
-
“我正在开发 Firefox 扩展” 从未尝试过,所以您告诉我:在您的代码中,您是否可以将文本文件的内容读入变量(eg: 类型为 String 或类型 Buffer Array)?
-
@VC.One FF 扩展是沙盒化的,因此您仅限于页面上可以访问的内容(请参阅我的 cmets 中的更详细说明),但要给出完整的答案,技术上,应该可以使用 Native Messaging(一个 FF 扩展 API)通过外部应用程序下载脚本并将其读入扩展的内容脚本,但这非常笨拙,需要用户安装其他软件,许多用户不会这样做,所以我避免这样做。
-
...我真的很困惑为什么我不能做像 myVideoPlayer.src = odyseeVideoPlayer.src 这样简单的事情。如果 src 是 contentUrl(例如指向视频流),这可以工作,但如果 src 是 blob,为什么它不起作用?直觉上看起来应该没有区别。
标签: html5-video blob