Cordova iOS:使用下载的html和视频文件加载视频

时间:2014-11-22 18:50:39

标签: ios cordova video html5-video inappbrowser

我有以下问题:

  • 我有一个iOS Cordova应用程序。
  • 应用程序下载一个zip文件并将其解压缩到" cdvfile:// localhost / persistent / content / myfolder"通过使用以下Cordova插件:org.apache.cordova.file-transfer,org.apache.cordova.file和https://github.com/MobileChromeApps/zip.git
  • 在拉链内有一个" index.html"带有"视频标签的文件"在它上面。
  • 我能够成功加载并执行" index.html"文件,但视频无法加载。

我知道视频文件已成功解压缩,因为:

  • 我检查了我的iPad内的文件。
  • 我按照以下方式将视频嵌入到cordova应用程序的索引中(而不是下载的应用程序)并且可以正常工作:

     var videocontainer = document.getElementsByTagName('video')[0];
     var videosource = document.getElementsByTagName('source')[0];
     var newmp4 = cordova.file.documentsDirectory + 'content/myfolder/videos/myvideo.mp4';
     videosource.setAttribute('src', newmp4);
     videocontainer.load();
     videocontainer.play();
    

但是,视频未在下载的HTML文件中加载/播放。为了理解我在做什么,我必须开发一个应用程序,通过从拉链下载其内容来更新,内容包括嵌入了视频的页面。它适用于PC和Android,但不适用于iOS。

我尝试了以下事项:

  • 在" _self"中加载页面。显示页面但不显示视频。
  • 在iframe中加载页面。结果相同。
  • 在inAppBrowser(插件)中加载页面。结果相同。
  • 带有源src ="视频/ myvideo.mp4"的视频标签(适用于Web和Android)。结果相同。
  • 带有源src =" ./ videos / myvideo.mp4"的视频标签(适用于Web和Android)。结果相同。
  • 带有源src = cordova.file.documentsDirectory +' content / myfolder / videos / myvideo.mp4'的视频标签(使用JS,通过在查询字符串中传递路径,在我之前描述的根index.html中工作的路径相同)。结果相同。
  • 带有源src = cordova.file.documentsDirectory +' cdvfile://localhost/persistent/content/myfolder/videos/myvideo.mp4'的视频标签。结果相同。
  • 以前所有的组合。同样的结果......

将下载的资源加载到DIV中是不可取的,因为资源(图像,CSS,javascripts,音频,视频等)都会下载到其他iOS设备的文件夹中:应用程序文档'文件夹(cdvfile:// localhost / persistent /)。

我的事情我几乎尝试了所有内容......为什么在html中播放视频标签并不是一件容易的事情,这些视频标签都在应用程序的文档中。文件夹???

: - (

编辑1:科尔多瓦版本= 3.6.3

2 个答案:

答案 0 :(得分:5)

解决方案成立!!

在几乎所有的Android和iOS示例中,下载的内容都是从" cordova.file.documentsDirectory" 执行的。

然后,当您在a或(通过使用AJAX)链接此内容时,一切正常(CSS,图像,链接),但媒体标签(和)。

同样,我不知道为什么,但几乎所有示例都使用此路径下载和解压缩内容。

经过几天被这个问题阻止了(我发现很多论坛,开发者必须通过使用Cordova Media,jaeger25 Html5Video等插件修改所有项目),我尝试使用以下路径:<强>&#34; cordova.file.dataDirectory&#34;

我从这条路径下载,解压缩并执行HTML,一切正常,不对HTML文件进行解析/修改(在我的情况下是数千个)。 与相关来源的100%兼容性和标签&#39; IFRAME中的路径!!!!!!

答案 1 :(得分:0)

我猜您将视频链接编码到您在设备上解压缩的zip中的index.html。

在您实际加载或导航到手机差距应用中的此页面之前,需要使用某些javascript解析器“更新”这些链接。

如果您的示例是在Android中引起的,那么您肯定需要在此处添加HTML5视频插件:

https://github.com/jaeger25/Html5Video

在iOS上,该标记适用于本地文件。但链接必须是绝对的。

如果您重新编译应用程序或重新安装它,链接将会更改。 这些文件可用,但APP ID也会改变,绝对路径也会改变。

iOS路径示例:

/var/mobile/Applications/<application UUID>/Documents/path/to/file

希望你解决了问题。