美文网首页技术文档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