iOS と Blackberry で実行されている PhoneGap/Cordova (あえて 2.3.0 にアップグレードするまでは 1.8.1) で作成されたアプリがあります。
ビデオの再生を開始しようとすると、アプリはビデオ プレーヤー (JQuery と JQuery Mobile を使用しています) でビデオの "ページ" div に切り替わり、ターゲット ビデオの URL を設定します。
プレーヤーは、以前にローカル ファイル システムにダウンロードされたファイルを再生することを目的としていますが、現在、Web からストリーミングされたものも再生しません。
ビデオ プレーヤーのすべてのイベントにリスナーを追加しました。単一の「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 はすべてシミュレーターとデバイスで失敗します。