我有一个在 iOS 和 Blackberry 上运行的用 PhoneGap/Cordova(1.8.1 直到我敢升级到 2.3.0)编写的应用程序。
当我尝试启动视频播放时,应用程序会使用视频播放器(我们使用 JQuery 和 JQuery Mobile)切换到视频“页面”div,并设置目标视频的 URL。
该播放器旨在播放以前下载到本地文件系统的文件,但目前甚至无法播放从网络流式传输的内容。
我已经为视频播放器上的所有事件添加了侦听器,我可以看到一个“loadstart”事件,然后什么也没有。
初始化如下:
HTML:
<video id="video_player" class="video-js vjs-default-skin noscroll" controls preload="none">
JavaScript - 初始化:
var DEFAULT_OPTIONS = { controls: true, autoplay: false, preload: "none", loop: false };
var videoPlayer = null;
try {
videoPlayer = _V_("video_player", DEFAULT_OPTIONS, function() {
log("Video ready");
});
} catch (error) {
dumpError("Problem with initialisation", error);
}
try {
log("DEBUG: Setting up video");
videoPlayer.addEvent("loadstart", function() {
try {
dumpArguments("loadstart", arguments);
} catch (error) {
dumpError("Failed to process loadstart", error);
}
});
videoPlayer.addEvent("loadedmetadata", function() {
try {
dumpArguments("loadedmetadata", arguments);
} catch (error) {
dumpError("Failed to process loadedmetadata", error);
}
});
videoPlayer.addEvent("loadeddata", function() {
try {
dumpArguments("loadeddata", arguments);
} catch (error) {
dumpError("Failed to process loadeddata", error);
}
});
videoPlayer.addEvent("loadedalldata", function() {
try {
dumpArguments("loadedalldata", arguments);
} catch (error) {
dumpError("Failed to process loadedalldata", error);
}
});
videoPlayer.addEvent("progress", function() {
try {
dumpArguments("progress", arguments);
} catch (error) {
dumpError("Failed to process progress", error);
}
});
videoPlayer.addEvent("error", function() {
try {
dumpArguments("error", arguments);
} catch (error) {
dumpError("Failed to process error", error);
}
});
} catch (error) {
dumpError("Error setting up video controller", error);
}
JavaScript - 设置播放视频
APP.avPlayer.video.src(cachedFileRecord.URL);
APP.avPlayer.video 是在初始化结束时创建的视频播放器的全局参考。
有时视频会启动,并且对于该会话有好处,但重新启动应用程序,问题会再次出现。
我是移动开发和 JavaScript(以及 iOS、Cordova 等)世界的新手,但对开发不熟悉,是我做错了什么,还是我长期使用 Java 的历史导致我JavaScript 行为的错误假设?
哦,最后一个事实,代码在 BlackBerry 上运行良好,所以这肯定与 iOS 平台有关,但 5.1、6.0 和 6.1 在模拟器和设备上都失败了。