美文网首页技术文档iOS点点滴滴iOS 开发
获取MPMoviePlayerController当前播放状态

获取MPMoviePlayerController当前播放状态

作者: Lonely__M | 来源:发表于2015-12-19 15:50 被阅读1860次

使用MPMoviePlayerController播放视频时,需要监听当前视频的播放状态,从而做相应的逻辑判断,比如在当前网络环境不好的状况下,需要显示加载状态提示用户,当网速良好的情况下,自动进行播放视频,其实MPMoviePlayerController中已经有相关属性可以监听,具体的请看如下代码

loadState
  • 上图为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播放状态改变时会发出通知
Paste_Image.png
  • 基于以上的知识,那么我们想实现获取到当前视频播放状态就很容易了

在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

相关文章

网友评论

  • yambs_d199:获取不到MPMovieLoadStatePlaythroughOK和MPMovieLoadStateStalled状态是什么原因?
  • 超_iOS:还需要移除通知吧?

本文标题:获取MPMoviePlayerController当前播放状态

本文链接:https://www.haomeiwen.com/subject/umaphttx.html