zoukankan      html  css  js  c++  java
  • 获取视频停止播放时已经播放的时间

    获取停止,暂停时视频已经播放的时间主要靠注册通知,当暂停或停止时响应通知时间,获取当前已经播放的时间,同时也可以在视频开始播放时给一个播放时间,从当前播放时间播放视频,用此方法来达到播放视频从上次播放时间开始播放

    主要代码

      MPMoviePlayerViewController *mPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:self.itemVideoUrl]];
                [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:mPlayer.moviePlayer];
                [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:mPlayer.moviePlayer];
    
    
    
    #pragma mark - 视频停止播放的通知,用来获取视频停止播放时已经播放的时间
    - (void)playbackDidFinish:(NSNotification *)aNote
    {
        MPMoviePlayerController *moviePlayer = [aNote object];
        NSDictionary *userInfo = [aNote userInfo];
        int reason = [[userInfo objectForKey:@"MPMoviePlayerPlaybackDidFinishReasonUserInfoKey"] intValue];
        switch (reason) {
            case MPMovieFinishReasonPlaybackEnded:
                break;
            case MPMovieFinishReasonPlaybackError:
                break;
            case MPMovieFinishReasonUserExited:
                break;
            default:
                break;
        }
        
        
        CGFloat playtime = [moviePlayer currentPlaybackTime];
        NSLog(@"%f", playtime);
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
    }
    - (void)playbackStateDidChange:(NSNotification *)aNote
    {
        MPMoviePlayerController *moviePlayer = [aNote object];
        switch (moviePlayer.playbackState) {
            case MPMoviePlaybackStateStopped:
                NSLog(@"self.moviePlayer Stopped");
                break;
            case MPMoviePlaybackStatePlaying:
    //设置开始播放视频时的时间
                moviePlayer.currentPlaybackTime = 300.07;
                NSLog(@"self.moviePlayer Playing");
                break;
            case MPMoviePlaybackStatePaused:
                NSLog(@"self.moviePlayer Paused");
                break;
            case MPMoviePlaybackStateInterrupted:
                NSLog(@"self.moviePlayer Interrupted");
                break;
            case MPMoviePlaybackStateSeekingForward:
                NSLog(@"self.moviePlayer Forward");
                break;
            case MPMoviePlaybackStateSeekingBackward:
                NSLog(@"self.moviePlayer Backward");
                break;
            default:
                break;
        }
        
        CGFloat playtime = [moviePlayer currentPlaybackTime];
        NSLog(@"%f", playtime);
    }

    1.视频什么时候开始播放

    当视频开始播放时会发送MPMediaPlaybackIsPreparedToPlayDidChangeNotification,所以你只需要在注册

    MPMediaPlaybackIsPreparedToPlayDidChangeNotification通知,当接收到此通知说明视频开始播放。

    2.自定义播放器视图时怎么自定义声音控件

    使用MPVolumeView控制系统的声音大小。通过改变MPVolumeView slider的值可以改变系统的声音,同时通过调节系统的声音按钮,slider的值也会跟着改变。

    volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(310, 180, 100, 20)];

    volumeView.showsVolumeSlider = YES;

    [backView addSubview:volumeView];

    [volumeView release];

    3.通过presentModalViewController调出MPMoviePlayer所在控制器,当通过dismissModalViewController移除控制器时,手机的状态栏可能会消失。解决办法:在dismissModalViewController调用函数

    movieplayer.controlStyle = MPMovieControlStyleFullScreen;

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_current_queue(), ^{

            [UIApplication sharedApplication].statusBarHidden = NO;

        });

  • 相关阅读:
    专职DBA-MySQL体系结构与基本管理
    JSON
    MIME类型
    文件上传下载
    response常用的方法
    2020.11.27小记
    HTTP请求状态码
    1561. Maximum Number of Coins You Can Get
    1558. Minimum Numbers of Function Calls to Make Target Array
    1557. Minimum Number of Vertices to Reach All Nodes
  • 原文地址:https://www.cnblogs.com/limicheng/p/4089370.html
Copyright © 2011-2022 走看看