我有一个使用自定义控件设置的自定义视频播放器,并且利用MPVolumeView提供了一个airplay按钮。当用户选择使用AirPlay时,他们将与该Apple UI进行交互,并且没有任何事件(我可以找到)说“嘿,视频现在正在通过AirPlay播放”。
问题是,如果我关闭播放器并重新打开它,它将加载电影(加载状态更改为MPMovieLoadStatePlayable),然后播放它,并且立即收到播放完成通知,原因是MPMovieFinishReasonPlaybackEnded,并且视频继续尝试通过AirPlay播放。我敢肯定,每当我关闭播放器时,电影都会停止播放并释放。
如果有人对如何处理有任何建议,知道要听的事件或对此有任何想法,请告诉我。谢谢!
最佳答案
答案是,至少达到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会进行初始缓冲。另外,如果上一个视频是通过播放播放的,则下一个视频将在开始播放后立即通知您该视频已结束,并且出现了其他一些怪异现象。
长话短说,请按照上述顺序处理视频播放器,以避免以后的电影播放器出现问题。
关于objective-c - 您如何知道用户何时选择通过AirPlay播放视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169005/