loadState使用MPMoviePlayerController播放视频时,需要监听当前视频的播放状态,从而做相应的逻辑判断,比如在当前网络环境不好的状况下,需要显示加载状态提示用户,当网速良好的情况下,自动进行播放视频,其实MPMoviePlayerController中已经有相关属性可以监听,具体的请看如下代码
- 上图为MPMoviePlayerController中视频加载状态属性
loadState
它是一个枚举,有以下四种状态,分别是
typedef NS_OPTIONS(NSUInteger, MPMovieLoadState) {
MPMovieLoadStateUnknown = 0, /*未知状态*/
MPMovieLoadStatePlayable = 1 << 0, /*加载完成,可以播放*/
MPMovieLoadStatePlaythroughOK = 1 << 1, /*缓冲完成,可以连续播放*/
MPMovieLoadStateStalled = 1 << 2, /*缓冲中*/
} NS_DEPRECATED_IOS(3_2, 9_0) __TVOS_PROHIBITED;
Paste_Image.png
- 此外 MPMoviePlayerController播放状态改变时会发出通知
- 基于以上的知识,那么我们想实现获取到当前视频播放状态就很容易了
在Controller中注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateDidChange) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
在通知中实现方法完成具体的逻辑
/**
* 视频播放状态改变
*/
- (void)moviePlayerLoadStateDidChange
{
switch (self.krVideoPlayer.loadState)
{
case MPMovieLoadStatePlayable:
{
/** 可播放 */;
NSLog(@"可以播放");
}
break;
case MPMovieLoadStatePlaythroughOK:
{
/** 状态为缓冲几乎完成,可以连续播放 */;
NSLog(@"状态为缓冲几乎完成,可以连续播放");
}
break;
case MPMovieLoadStateStalled:
{
/** 缓冲中 */
NSLog(@"缓冲中");
}
break;
case MPMovieLoadStateUnknown:
{
/** 未知状态 */
NSLog(@"未知状态");
}
break;
}
}
记录点滴,与君共勉。
Tip
学习的路上总是曲折的,每个人都是从菜鸟过来的,遇到问题总是希望能够与他人沟通交流,而在各种群里问了问题就石沉大海,所以想建一个技术交流为主的群,遇到的问题可以记录下来分享给他人,方便了自己,也造就了他人,不管怎样,记录点滴,但愿与君共勉
*QQ群号:527377492 *
Paste_Image.png
网友评论