使用Ti.Media.VideoPlayer视频不会在iPhone 4上循环

使用Ti.Media.VideoPlayer视频不会在iPhone 4上循环,iphone,ios7,titanium,appcelerator,titanium-alloy,Iphone,Ios7,Titanium,Appcelerator,Titanium Alloy,我的应用程序有一个奇怪的问题 尝试在循环中播放视频(请参阅下面的代码)。视频播放器repeatMode设置为Ti.Media.VIDEO\u REPEAT\u MODE\u ONE 在模拟器上工作,在iPhone 4s上工作,在iPad Air上工作。。。无法在iPhone 4上运行(除模拟器-7.1外,所有iPhone都运行iOS 7.1.1) 确切症状:播放一次后,视频应该从头开始重新启动,但会停止。如果控件可用,我可以按play重新开始播放,然后在播放结束后再次停止 我可以发誓它在7.1升

我的应用程序有一个奇怪的问题

尝试在循环中播放视频(请参阅下面的代码)。视频播放器
repeatMode
设置为
Ti.Media.VIDEO\u REPEAT\u MODE\u ONE

在模拟器上工作,在iPhone 4s上工作,在iPad Air上工作。。。无法在iPhone 4上运行(除模拟器-7.1外,所有iPhone都运行iOS 7.1.1)

确切症状:播放一次后,视频应该从头开始重新启动,但会停止。如果控件可用,我可以按play重新开始播放,然后在播放结束后再次停止

我可以发誓它在7.1升级之前在iPhone4上运行,但不知怎的它停止了

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

系统信息:

  • 钛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>


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

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

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

我发现一些论坛板上的开发者在ipad1st-gen上的MPMoviePlayerController上遇到了非常类似的问题。循环视频在循环中或多或少是随机冻结的。因此,我认为苹果视频播放器在某些设备上存在问题,而钛合金的实现并不需要

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

到目前为止还不错。第一次就成功了,耶!但是幸福是短暂的。在对事件
complete
videoPlayer.play()
进行一个小时的测试期间,视频有时会重复10-30次,然后突然冻结。有什么好处?结果视频播放器有点小毛病

正常的事件顺序如下:

  • 视频结束,
    playbackstate
    更改为2
  • complete
    事件被触发
  • 我在完成后重新启动视频
  • playbackstate
    更改为1,视频一直播放到结束
出于一个神秘的原因,有时这个序列会发生一些额外的事情:

  • 视频到达末尾-
    playbackstate
    更改为2
  • complete
    事件被触发
  • 视频在完成后重新启动
  • playbackstate
    更改为1,视频开始播放
  • 突然
    playbackstate
    变为1,视频停止,但未触发
    complete
    事件
解决方案

所以,知道了所有这些,我设置了监听器来听
playbackstate
,而不是complete,当我听到
playbackstate:1
时,我会重新启动视频和tadaaa!一切正常

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

希望这能帮助别人