• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

javascript - Video.js 在 iOS 上的文件加载期间停止

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:12:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个在 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("roblem 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 在模拟器和设备上都失败了。



Best Answer-推荐答案


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

    // 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("roblem with initialisation", error);
    }

HTML 和 JS 初始化似乎有些冲突,但纯 JS 初始化解决了这个问题。

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap