2011-08-24 79 views
2

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

问题是,如果我关闭播放器并重新打开它,它将加载电影(加载状态更改为MPMovieLoadStatePlayable),我播放它,然后立即得到播放完成通知,原因是MPMovieFinishReasonPlaybackEnded,并且视频继续尝试通过AirPlay播放。我肯定电影会停下来,每当我关闭播放器时就会释放它。

如果任何人有任何关于如何处理这个问题的建议,知道一些要听的事件或对此有任何想法,请告诉我。谢谢!

回答

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会进行初始缓冲。另外,如果以前的视频是通过播放播放的,则下一个视频会收到通知,说明视频在启动后会立即完成并出现其他一些不可思议的情况。

长话短说,请按照上述顺序处置您的视频播放器,以避免后续电影播放器​​出现问题。

相关问题