HTML 5video播放器使用emulater而不是实际的设备

好吧,过去几天我一直试图在我的angular度应用程序上实现video。

以下是自己的video的一些事实:

  • 所有video都是MP4文件
  • video正在使用节点js进行stream式传输
  • 使用谷歌浏览器设备模拟器来testing这个即时通讯

现在到实际的代码:

首先在我的node.js应用程序,我有以下代码来获取video:

 router.route('/resource/:encodedString') .all(function (req, res) { var decoded = jwt.decode(req.params.encodedString, require('../secret')()); var mediaObject = decoded.mediaObject; if (mediaObject.file.extension == 'pdf') { res.set('Content-Type', 'application/pdf'); } else { res.set('Content-Type', 'application/octet-stream'); } res.header('mimetype', mediaObject.file.mimetype); res.header('content-disposition', 'filename=' + mediaObject.file.originalname); // res.header('content-disposition', 'filename=' + mediaObject.file.originalname); var stream = fs.createReadStream(mediaObject.targetDir + mediaObject.file.originalname); stream.pipe(res); stream.on('end', function () { console.log("Reading operation completed."); res.end(); }); }); 

基本上, encodedStringvariables包含一个包含所有文件信息的对象

然后在我的HTML我有以下几点:

  <video width="459" height="320" controls> <source src="{{LRM.getResourceUrl(resourceToken,null) | trustUrl}}" type="video/mp4"> Your browser does not support the video tag. </video> 

LRM.getResourceUrl看起来像这样:

  app.factory('LRM', function () { var LRM = {}; $.getJSON("config.json", function (json) { LRM.env = json.app_url; // this will show the info it in firebug console }); LRM.getResourceUrl = function (resourceString, type) { if (resourceString.indexOf('/') >= 0) { //Legacy method return resourceString; } else { if(type == null){ return LRM.env + '/resource/' + resourceString; } else { return LRM.env+'/resource/'+resourceString+'/'+type; } } }; LRM.getDeviceResource = function (resourceString, os) { if (resourceString.indexOf('/') >= 0) { //Legacy method return resourceString; } else { if(os == null){ return LRM.env + '/deviceResource/' + resourceString; } else { return LRM.env+'/deviceResource/'+resourceString+'/'+os; } } }; LRM.getUploadUrl = function (method) { if(LRM.env){ return LRM.env + method; } }; return LRM; }); 

现在,当我在桌面上运行这个我得到的电影,没有问题。

然后,当我运行这个使用模拟器和模拟iPhone 5或iPad的工作正常

但是,当我使用我的手机(实际设备)video不会播放,它只显示我的video播放button。

谁能告诉我可能是什么原因造成的?

我认为你只在iOS设备上看到这个问题? 如果是这样的话,这可能是iOS中的浏览器在已经authentication的链接后面不回放video的已知问题。 请参阅下面的链接,了解最新的苹果论坛视图,尤其是从最好的摘要(恕我直言)之一的post摘录:

在iOS 8中,Apple在Safari中引入了一个问题,在该问题下存储在HTTP基本身份validation之后的媒体文件无法播放。 浏览器内的媒体播放器似乎不共享浏览器的authentication会话。 这对我来说是一个问题,因为我一直使用我的iPhone上的Safari来播放我的服务器上的音乐。 随着Safari不工作在iOS 8中,我尝试了Chrome和Opera,但他们似乎共享Safari Web视图和行为。 primefaces没有authentication的问题,但有一个单独的问题,当播放媒体没有声音。 我尝试过的唯一两个浏览器是水星和海豚。 这些现在是我的服务器上播放音乐的替代select。“