Javascript 文件API-用于存储视频的HTML5应用程序

Javascript 文件API-用于存储视频的HTML5应用程序,javascript,html,video,local-storage,Javascript,Html,Video,Local Storage,我想知道HTML5 API是否适合此用例: 一些视频出现在公共服务器上(例如) JS/html5应用程序应该在本地存储视频,以便能够离线播放(视频是公开的,没有安全性) (警告) 在我的初始测试中,我无法通过“No‘Access Control Allow Origin’”错误 根据我的理解,以下脚本应该: 请求,并获取位于给定URL的内容 在某个地方准备1Mb文件(我想我在这里会有其他错误,但我会在看到它们时到达那里:) 现在我想了解为什么会发生这种错误,客户端(移动浏览器)查询不在其

我想知道HTML5 API是否适合此用例:

  • 一些视频出现在公共服务器上(例如)
  • JS/html5应用程序应该在本地存储视频,以便能够离线播放(视频是公开的,没有安全性) (警告)
在我的初始测试中,我无法通过“No‘Access Control Allow Origin’”错误

根据我的理解,以下脚本应该:

  • 请求,并获取位于给定URL的内容
  • 在某个地方准备1Mb文件(我想我在这里会有其他错误,但我会在看到它们时到达那里:)
现在我想了解为什么会发生这种错误,客户端(移动浏览器)查询不在其上的资源不是很正常吗

window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://videosanbox.me/video.mpg', true);

xhr.responseType = 'blob';

xhr.onload = function(e) {

  window.requestFileSystem(TEMPORARY, 1024 * 1024, function(fs) {
    fs.root.getFile('video.mpg', {create: true}, function(fileEntry) {
      fileEntry.createWriter(function(writer) {

        writer.onwrite = function(e) { alert('writing'); };
        writer.onerror = function(e) { alert('error'); };

        var blob = new Blob([xhr.response], {type: 'video/mpg'});

       writer.write(blob);

      }, onError);
    }, onError);
  }, onError);
};

xhr.send();

OneError只是在发生错误时执行一些操作:函数OneError(e){console.log('error',e);}

解决方案1

在服务器端,需要传递此标头:

标题('Access-Control-Allow-Origin:')

不幸的是,如果你不能控制videosanbox.me,这可能是不可能的。如果没有,联系他们,看看他们是否愿意这样做。如果没有,请不要担心,还有第二种解决方案:

解决方案2


在您自己的服务器上创建网页并允许跨站点脚本(但使用安全性限制谁可以使用此网页)。在该页面的代码中,它将接收请求并打开HTTP连接,检索mpg文件并将其作为Blob吐回PhoneGap应用程序。您的PhoneGap将通过Ajax连接到此页面(在您的服务器上),而不是。

这是在同一台服务器上托管的吗?这个网页也在videosanbox.me吗?不,由于PhoneGap,这个网页将被包装在一个移动应用程序中,谢谢