【问题标题】:Cordova 3.4 Android Local Video files not playingCordova 3.4 Android 本地视频文件不播放
【发布时间】:2014-03-06 16:48:11
【问题描述】:

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

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

这是我尝试过的:

  1. 我按照这里的建议将视频文件放在 assets/res/raw 文件夹中:Loading video failed on html5 phonegap

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

  1. 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):未捕获的类型错误:无法读取未定义的属性“html5Video”:37

我想做的只是在 android 上播放本地视频文件。这真的有那么复杂吗?

任何帮助将不胜感激。

【问题讨论】:

  • 您确实需要一个插件来播放视频,您使用的插件可能与PhoneGap 3+ 不兼容。你可能想试试这个:github.com/dawsonloudon/VideoPlayer
  • @DawsonLoudon 我无法让您的插件正常工作。我是 phonegap 的新手,我不确定如何实现你的插件。我不知道将 VideoPlayer.java 文件放在哪里。
  • 您是否使用 cordova 命令行来构建您的项目?

标签: android html video cordova local


【解决方案1】:

看看this 的帖子。 File 插件(至少

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

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(); 开始视频。

【讨论】:

    【解决方案2】:

    如果上述选项不起作用,请尝试:

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

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

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

    【讨论】:

    • 嗨,当我这样做时,视频播放有声但没有图像!? (当我用 http 调用它时,视频效果很好)你有什么想法吗?也许是权限问题?你的应用有什么权限?非常感谢。
    【解决方案3】:

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

    1. 如果你想全屏显示视频:不要使用 html 标签,因为有一个媒体插件。如果您不需要离线播放:指向网络服务器的视频 src 就可以正常工作。
    2. 如果您需要离线播放并且视频是您的应用程序包的一部分,请查看https://github.com/jaeger25/Html5Video(它有助于自动将视频文件复制到公共位置)
    3. 如果需要播放动态下载的离线视频:(我的情况)
      • 使用文件传输插件
      • 将 cordova.file.externalDataDirectory 中的文件保存为公共文件
      • 在某些情况下,您可能需要强制文件公开
      • 您可以通过添加 'file.setReadable(true, false);' 来做到这一点到 FileTransfer.java 第 820 行

    干杯

    【讨论】:

      【解决方案4】:

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

      记得更新文件插件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多