【问题标题】:Putting a video to pause state before playing在播放前将视频置于暂停状态
【发布时间】:2011-08-04 12:51:46
【问题描述】:

我正在使用 MVMoviePlayer 在应用中播放视频。现在,点击播放按钮后出现黑屏,视频开始播放。但是,从用户端的角度来看,黑屏是令人不快的。所以,我想从暂停状态开始视频。 为了做到这一点,我想在播放之前将播放器置于暂停状态..

有没有办法做到这一点???

【问题讨论】:

    标签: ios ipad video mpmovieplayercontroller mpmovieplayer


    【解决方案1】:

    您可以隐藏您的MPMoviePlayer,直到烦人的黑色闪烁消失为止。

    为确保黑色闪烁消失,您可以检查MPMoviePlayerloadState是否为3(表示MPMovieLoadStatePlayable | MPMovieLoadStatePlaythroughOK)和playbackState是否为1(表示MPMoviePlaybackStatePlaying )

    先隐藏你的MPMoviePlayer

    yourMPMoviePlayer.view.hidden = YES;
    

    只需添加一个观察者即可在 loadState 发生变化时得到通知:

    [NSNotificationCenter.defaultCenter addObserver:self
                                           selector:@selector(loadStateChanged:) 
                                               name:MPMoviePlayerLoadStateDidChangeNotification
                                             object:nil];
    

    当您收到通知并满足条件时,让您的 MPMoviePlayer 再次可见:

    - (void)loadStateChanged:(NSNotification *)sentNotification
    {
        if (player.loadState == (MPMovieLoadStatePlaythroughOK | MPMovieLoadStatePlayable) && player.playbackState == MPMoviePlaybackStatePlaying)
            yourMPMoviePlayer.view.hidden = NO;
    }
    

    【讨论】:

    • 你真的应该使用枚举标识符,而不是它们的值:if (player.loadState == (MPMovieLoadStatePlaythroughOK | MPMovieLoadStatePlayable) && player.playbackState == MPMoviePlaybackStatePlaying);
    • 你是对的,但是对于 MPMoviePlaybackState,没有像 3 这样的枚举。你必须按位或它们(MPMovieLoadStatePlayable | MPMovieLoadStatePlaythroughOK)。我只是懒惰。
    • 完美地添加了 if (player.loadState == (MPMovieLoadStatePlaythroughOK | MPMovieLoadStatePlayable)
    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2012-05-06
    • 2013-04-05
    相关资源
    最近更新 更多