0

我试图让 MPMoviePlayerController 达到编程的 endPlaybackTime,然后重新分配初始、当前和结束时间并“恢复”播放

所以首先播放,比如说,从开始到 4 秒,停止/暂停,然后从 4 到 8 继续播放,等等......

但是在我重新分配 current、initial 和 endPlaybackTimes 并运行 [mplayer play] 后,视频会从最初的时间(开始到 4 秒)重新开始并播放到原来的结束时间,即使调试消息在第二次播放后确认了新的时间

NSURL *fileURL = [NSURL fileURLWithPath:filepath];
_mplayer3 = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
_mplayer3.controlStyle = MPMovieControlStyleNone;
[_mplayer3.view setFrame: self.view.bounds];
[self.view insertSubview:_mplayer3.view belowSubview:_TopBrag];
_mplayer3.endPlaybackTime = 4.0;
[_mplayer3 setShouldAutoplay:NO];
[_mplayer3 prepareToPlay];
[_mplayer3 view].userInteractionEnabled=YES;
[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(parallaxDownDidFinish)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:_mplayer3];
[_mplayer3 play];

在结束通知上,创建了一个似乎可以正常工作的手势识别器。在手势识别器中:

_mplayer3.initialPlaybackTime=_mplayer3.endPlaybackTime;
_mplayer3.currentPlaybackTime=_mplayer3.endPlaybackTime;
_mplayer3.endPlaybackTime+=4.0;
if (_mplayer3.endPlaybackTime > _mplayer3.duration)
    _mplayer3.endPlaybackTime = _mplayer3.duration;
[_mplayer3 play]

并且视频从 0 到 4 而不是 4 到 8 播放,即使播放后的 NSLogs 表明时间是所需的

感谢任何帮助

4

2 回答 2

1

MPMoviePlayerController不遵守initialPlaybackTimeif not used on a new instance。您将需要释放并重新分配/分配播放器以使其正常工作。您需要做的就是在播放器继续时重用问题中显示的初始代码。


更新:

由于您似乎热衷于保持播放器视图处于活动状态并且您没有使用标准用户界面,因此我建议您AVPlayer改用。它更加灵活,对于您的工作来说,它似乎是正确的选择。

于 2013-03-21T14:08:31.870 回答
0

我不确定是什么问题,因为它应该可以工作,我认为问题是您在 IOS 6 中,IOS 6 不允许您进行如此小的更改,但是如果在您的滑动中您将初始播放时间更改为9或更高应该可以工作....

试试看,然后告诉我;)

于 2013-03-21T16:23:53.170 回答