【问题标题】:Using Ti.Media.VideoPlayer video does not loop on iPhone 4使用 Ti.Media.VideoPlayer 视频不会在 iPhone 4 上循环播放
【发布时间】:2014-05-17 09:26:32
【问题描述】:

我的应用出现了奇怪的问题。

尝试循环播放视频(请参阅下面的代码)。 VideoPlayer repeatMode 设置为 Ti.Media.VIDEO_REPEAT_MODE_ONE。

适用于模拟器、适用于 iPhone 4s、适用于 iPad Air...不适用于 iPhone 4(除模拟器 - 7.1 外,它们都运行 iOS 7.1.1)。 p>

具体症状:播放一次后,视频应该从头开始重新开始,但它停止了。如果控件可用,我可以按播放重新开始播放,然后在到达结束后再次停止。

我可以发誓它在 7.1 升级之前可以在 iPhone 4 上运行,但不知何故停止了。

任何人都可以复制这个问题吗?或者有什么想法?

系统信息:

  • Titanium SDK:使用 3.2.3.GA 测试; 3.2.2.GA; 3.2.1.GA; 3.2.0.GA
  • 平台和版本:iOS 7.1.1 (11D201)
  • 设备:在 iPhone 4s、iPad Air、模拟器上工作; 失败在 iPhone 4 上
  • 主机操作系统:OSX 10.9.2
  • 钛工作室:3.2.3.201404181442
  • Xcode:5.1.1 (5B1008)
  • 合金:1.3.1

要复制的基本合金项目的代码:

index.js

var videoPlayer = Titanium.Media.createVideoPlayer({
    autoplay : true,
    fullscreen : false,
    mediaControlStyle : Titanium.Media.VIDEO_CONTROL_DEFAULT,
    repeatMode: Ti.Media.VIDEO_REPEAT_MODE_ONE,
    scalingMode : Titanium.Media.VIDEO_SCALING_ASPECT_FIT
});

//Video is 12s long so it is easy to notice that it does not loop.
videoPlayer.url = "video/candles.mp4"; 
$.index.add(videoPlayer);
$.index.open();

index.xml

<Alloy>
    <Window class="container">
    </Window>
</Alloy>

如果有任何建议,我将不胜感激。

【问题讨论】:

    标签: iphone ios7 titanium appcelerator titanium-alloy


    【解决方案1】:

    我已经进行了一些研究并使用了Titanium.Media.VideoPlayer 并设法解决了这个问题。如果其他人遇到此问题,您可以在下面找到解决方案。

    首先,关于这个问题的一些信息。

    我发现了一些论坛版块,开发人员在第一代 iPad 上遇到了与 MPMoviePlayerController 非常相似的问题。循环播放的视频在循环播放时或多或少随机冻结。所以我认为某些设备上的 Apple 视频播放器存在问题,而 Titanium 实现则没有必要。

    我的第一种方法是尝试在视频停止播放时触发的complete 事件上重放视频,而不是使用repeatMode。

    到目前为止一切顺利。第一次就成功了,呵呵!但幸福是相当短暂的。在videoPlayer.play() 事件complete 的一个小时测试中,视频有时会重复10-30 次,然后突然冻结。是什么赋予了?原来视频播放器出了点问题。

    正常的事件顺序如下:

    • 视频结束,playbackstate 变为 2,
    • complete 事件被触发
    • 我重新开始播放视频
    • playbackstate 变为 1,视频一直播放到结束。

    由于一个神秘的原因,这个序列偶尔会发生额外的事情:

    • 视频结束 - playbackstate 更改为 2,
    • complete 事件被触发。
    • 视频完成后重新启动
    • playbackstate 变为 1,视频开始播放
    • 突然playbackstate 变为1,视频停止,没有触发complete 事件。

    解决方案

    所以,知道这一切后,我设置了听众来收听 playbackstate 而不是完整的,当我听到 playbackstate: 1 时,我会重新启动视频和 tadaaa!一切正常!

    警告:不幸的是,不是“一切”。我正在使用自定义视频控件,因此我失去了暂停和停止功能(每次视频播放状态更改为“停止”时,我都会强行重新启动它)。为了让它工作,我必须记住每次按下“暂停/停止”按钮时都要删除监听器,然后再重新附加它。

    希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-12-26
      • 1970-01-01
      • 2012-06-28
      • 2015-09-24
      • 2013-04-18
      • 2018-08-15
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      相关资源
      最近更新 更多