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

标签 objective-c ios

我有一个使用自定义控件设置的自定义视频播放器,并且利用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/

相关文章:

ios - 使用 Google Maps iOS SDK 1.4 设置 mapView.delegate

ios - 如何在 UIMenuItem 中显示多行?

ios xcode GPUimage 视频录制和静态图像捕捉

ios - 在Objective C中合并数组及其计数

ios - viewDidUnload 弃用和向后兼容性

iOS 9 将 UITextView 滚动到顶部

ios - 取消 NSOperation 并立即将其从队列中移除

iphone - 如何在呈现弹出窗口之前获取触摸坐标?

android - android和ios设备之间的apprtc

ios - 向 UIAlert 添加操作以引导用户进行设置