Cordova 3.4 Android本地视频文件无法播放

时间:2014-03-06 16:48:12

标签: android html5 video cordova local

我已经尝试了几天,通过cordova 3.4应用程序在我的galaxy tab 4.2上播放本地视频文件。

当我使用绝对的http网址时,视频播放得很好。

以下是我的尝试:

  1. 我将视频文件放在assets / res / raw文件夹中,如下所示:Loading video failed on html5 phonegap

        

  2. 结果:点击播放后 - >旋转加载图标没有视频

    1. www文件夹中的视频:       
    2. 结果:与#1相同

      <video id="myvideo" controls="controls" width="400">
          <source src="file:///android_asset/www/gruppenruf.mp4" />
       </video>
      

      结果:与#1相同

      我将文件夹的所有权限设置为777

      然后我尝试使用https://github.com/jaeger25/Html5Video插件

      安装插件后,我得到的是:  03-06 18:27:06.953:E / Web Console(22530):未捕获的TypeError:无法读取未定义的属性'html5Video':37

      我想做的就是在Android上播放本地视频文件。这真的很复杂吗?

      任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

查看this帖子。 File插件(至少&lt; = v1.3.1)有一个Android设备的错误。此外,我不确定jaeger25 / Html5Video插件是否仍在使用cordova 3.6.x.

一种工作方法是以编程方式将视频文件从www/gruppenruf.mp4复制到应用程序在运行时可供播放的位置。您可以使用file:///data/data/com.example.MyPackage/files/gruppenruf.mp4FileTransfer cordova插件将处理此问题。

var myFilename = "gruppenruf.mp4";
var myUrl = cordova.file.applicationDirectory + "www/" + myFilename;
var fileTransfer = new FileTransfer();
var filePath = cordova.file.dataDirectory + myFilename;

fileTransfer.download(encodeURI(myUrl), filePath, (function(entry) {
  /*
  res = "download complete:\n"
  res += "fullPath: " + entry.fullPath + "\n"
  res += "localURL: " + entry.localURL + "\n"
  alert(res += "nativeURL: " + entry.nativeURL + "\n")
   */
  var vid = document.getElementById("myvideo");
  vid.src = entry.nativeURL;
  //vid.loop = true;
}), (function(error) {
  alert("Video download error: source " + error.source);
  alert("Video download error: target " + error.target);
}), true, {
  headers: {
    Authorization: "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
  }
});

如果无法播放,您可能需要将点击事件监听器与其关联,或者使用vid.play();启动视频。

答案 1 :(得分:1)

如果提到的选项不起作用,请尝试:

src =“android.resource://com.example.hello/raw/Videofile”(保留扩展名“.mp4”)

将您的视频文件放在“.. \ platforms \ android \ res \ raw”中 请注意,您不要在src中使用视频文件的扩展名。

我在这个问题上遇到了很多困难,但这对我有用=]

答案 2 :(得分:1)

由于我花了一些时间处理类似的问题,我觉得值得分享:

  1. 如果你想全屏显示视频:不要使用html标签,因为有一个媒体插件。如果您不需要离线播放:指向Web服务器的视频src将正常工作。
  2. 如果您需要离线播放且视频是应用套餐的一部分,请查看https://github.com/jaeger25/Html5Video(这有助于在公共场所自动复制视频文件)
  3. 如果您需要动态下载的离线视频:(我的情况)
    • 使用fileTransfer插件
    • 将cordova.file.externalDataDirectory中的文件另存为公共
    • 在某些情况下,您可能需要强制将文件设为公开
    • 你可以通过添加&#39; file.setReadable(true,false);&#39;到FileTransfer.java第820行
  4. 干杯

答案 3 :(得分:0)

您的代码在Cordova 3.4.0中停止工作,因为它们更改了文件路径结构。而不是&#39; file:///&#39;你必须使用&#c; cdvfile://&#39;。

请记住也要更新文件插件。