gpt4 book ai didi

javascript - Video.js 在 iOS 上加载文件时停滞

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:46 26 4
gpt4 key购买 nike

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

当我尝试启动视频播放时,应用会切换到带有视频播放器的视频“页面”div(我们使用的是 JQuery 和 JQuery Mobile)并设置目标视频的 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 是在初始化结束时创建的视频播放器的全局引用。

有时视频会启动,这对那个 session 来说很好,但是重新启动应用程序,问题又会出现。

我是移动开发和 JavaScript(以及 iOS、Cordova 等...)领域的新手,但不是开发领域的新手,我是在按错误的顺序做某事,还是我长期使用 Java 导致我对 JavaScript 行为做出错误的假设?

对后代来说,最后一个事实是,代码在 BlackBerry 上运行良好,所以这绝对与 iOS 平台有关,但 5.1、6.0 和 6.1 在模拟器和设备上都失败了。

最佳答案

我无法找到问题的根源,所以为了将来如果其他人遇到这个问题作为引用,我通过像这样动态构建所有内容来解决它:

    // 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 初始化解决了这个问题。

关于javascript - Video.js 在 iOS 上加载文件时停滞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com