您如何知道用户何时选择通过AirPlay播放视频?

时间:2011-08-24 00:11:09

标签: objective-c ios

我有自定义视频播放器设置自定义控件,我利用MPVolumeView提供播放按钮。当用户选择使用AirPlay时,他们会与Apple UI进行交互,并且没有任何事件(我可以找到)说“嘿,视频现在通过AirPlay播放”。

问题在于,如果我关闭播放器并重新打开它,它会加载电影(加载状态更改为MPMovieLoadStatePlayable),我播放它,我立即得到播放完成通知,原因是MPMovieFinishReasonPlaybackEnded和视频继续尝试通过AirPlay播放。我确定电影会停止,并且每当我关闭播放器时都会取消分配。

如果有人对如何处理此事有任何建议,知道要听的事件,或者对此有任何想法,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

这里的答案结果是,至少高达4.3,没有办法通过代码得到答案。

这种情况下的问题是当你完成它时你如何处理MPMoviePlayerController。即使视频播放,在你最终发布之前,你必须调用暂停然后停止。像这样:

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] init];

// use the player.  then when done with it:

[mp pause];
[mp stop];
[mp release];

如果你不这样做,那么下次你创建一个MPMoviePlayerController时,某些属性会在框架中以某种方式出现。在新的mp进行初始缓冲时,逐渐播放视频会导致前一个mp的音频播放。此外,如果之前的视频是通过airplay播放的,那么下一个视频会在视频播放完成后立即收到通知以及其他一些奇怪的内容。

长话短说,请按照以上顺序处理您的视频播放器,以避免与后来的电影播放器​​发生问题。