• 获取视频停止播放时已经播放的时间


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

    主要代码

      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;

        });

  • 相关阅读:
    Django基础
    XSS BOT编写
    Weblogic ssrf+Redis Getshell学习
    CORS与JSONP配置不当所导致的信息泄露
    VulnHub FristLeaks 1.3
    攻防世界--REVERSE新手练习区writeup
    2019第三届强网杯线下3道RW
    SCTF2019--WEB 2题复现
    文件上传--利用.htaccess绕过黑名单
    CEF 与 QML 对比
  • 原文地址:https://www.cnblogs.com/limicheng/p/4089370.html
Copyright © 2020-2023  润新知