Video.js在iOS上的文件加载期间暂停

我有一个用PhoneGap / Cordova编写的应用程序(1.8.1,直到我敢升级到2.3.0)在iOS和Blackberry上运行。

当我尝试启动video播放时,应用程序会切换到video播放器(我们使用JQuery和JQuery Mobile)的video“页面”div,并设置目标video的URL。

播放器的目的是播放以前下载到本地文件系统的文件,但目前甚至不会播放来自networking的文件。

我已经为video播放器上的所有事件添加了监听器,我可以看到一个“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 – 设置video进行播放

 APP.avPlayer.video.src(cachedFileRecord.URL); 

APP.avPlayer.video是在初始化结束时创build的video播放器的全局引用。

有时候video会启动,对于那个会话会很好,但重启应用程序,问题就会重演。

我对移动开发和JavaScript(以及iOS和Cordova等)的世界是陌生的,但不是为了开发,我是按照错误的顺序做事,还是因为我的Java历史悠久, JavaScript行为的错误假设?

哦,最后一件事是后代,代码在黑莓手机上工作得很好,所以这绝对是与iOS平台相关的东西,但5.1,6.0和6.1都在模拟器和设备上都失败了。

我无法深究这个问题,所以为了将来的参考,如果有其他人有这个问题,我解决了dynamic构build一切如下:

  // Get the place we will mount the video var home = $("#videoInsert"); // Remove previous player, TODO Release first home.empty(); // Create the new content var player = $('<video></video>'); var videoId = "video" + playerCounter++; player.attr("id", videoId); player.attr("class", "video-js vjs-default-skin noscroll"); player.attr("controls", "true"); player.attr("autoplay", "false"); player.attr("preload", "auto"); player.attr("data-setup", "{}"); // Add the optional poster if supplied if (arguments.length > 2) { player.attr("poster", posterUrl); } // Set the media up var media = $("<source />"); media.attr("src", "file://" + videoUrl); media.attr("type", mimeType); player.append(media); // Finally add the player to the page home.append(player); try { target = _V_(videoId, null, function() { log("Video ready"); attachEventListeners(this); resize(this); }); } catch (error) { dumpError("Problem with initialisation", error); } 

似乎有关HTML和JS初始化的东西是相互冲突的,但是一个纯粹的JS init解决了这个问题。