首页 文章

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

提问于
浏览
2

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

当我使用绝对的http url时,视频播放就好了 .

这是我尝试过的:

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

  • www文件夹中的视频:

结果:与#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控制台(22530):未捕获的TypeError:无法读取未定义的属性'html5Video':37

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

任何帮助,将不胜感激 .

4 回答

  • 2

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

    一种工作方法是以编程方式将视频文件从 www/gruppenruf.mp4 复制到应用程序在运行时可以播放的位置 . 您可以使用 file:///data/data/com.example.MyPackage/files/gruppenruf.mp4 . FileTransfer 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=="
      }
    });
    

    如果它不播放,您可能希望将click事件侦听器链接到它或使用 vid.play(); 启动视频 .

  • 1

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

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

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

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

  • 0

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

    • 如果你想全屏显示视频:不要使用html标签,因为有一个媒体插件 . 如果您不需要离线播放:指向Web服务器的视频src将正常工作 .

    • 如果您需要离线播放且视频是应用包的一部分,请查看https://github.com/jaeger25/Html5Video(它有助于在公共场所自动复制视频文件)

    • 如果你需要动态下载的离线视频:(我的情况)

    • 使用fileTransfer插件

    • 将cordova.file.externalDataDirectory中的文件另存为公共文件

    • 在某些情况下,您可能需要强制将文件公开

    • 你可以通过将'file.setReadable(true, false);'添加到FileTransfer.java第820行来实现

    干杯

  • 1

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

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

相关问题