iOS 视频播放从零开始(一)

之前很少有时间看视频这块,赶在现在比较闲,从零开始拾起。
iOS 中关于视频播放框架已更新换代多次,先从最开始的走起。

iOS9之前,iOS播放视频文件一般使用MPMoviePlayerViewController 和 MPMoviePlayerController。

区别:
1、MPMoviePlayerViewController继承自
2、UIViewControllerMPMoviePlayerController继承NSObject。
3、MPMoviePlayerViewController里面包含了一个MPMoviePlayerController。

要想使用上述两者,首先要导入MediaPlayer.framework,包含 @import MediaPlayer;

MPMoviePlayerController从写的例子来看目前支持有些问题,不过还是记录一下:

#pragma mark - MPMoviePlayerController
- (void)createMPPlayerController:(NSString *)filePath {
    //目前播放有问题
    NSURL *movieURL = [NSURL fileURLWithPath:filePath];
    MPMoviePlayerController *movewController =[[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    //准备播放
    [movewController prepareToPlay];
    // 这里是addSubView
    [self.view addSubview:movewController.view];
    //设置写在添加之后
    [movewController.view setBackgroundColor:[UIColor clearColor]];
    //自动播放
    movewController.shouldAutoplay=YES;
    //播放控件的样式
    [movewController setControlStyle:MPMovieControlStyleDefault];
    //全屏播放
    [movewController setFullscreen:YES];
    //播放视图frame
    [movewController.view setFrame:self.view.bounds];
    //这里注册相关操作的通知
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(movieFinishedCallback:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                            object:movewController]; //播放完后的通知

}


-(void)movieFinishedCallback:(NSNotification*)notify {
    MPMoviePlayerController* player = [notify object];
    [player stop];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [player.view removeFromSuperview];
}

MPMoviePlayerViewController 视频播放控制

#pragma mark - MPMoviePlayerViewController
- (void)createMPPlayerViewController:(NSString *)filePath {

    MPMoviePlayerViewController *moviePlayer =[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:filePath]];
    [moviePlayer.moviePlayer prepareToPlay];
    [self presentViewController:moviePlayer animated:YES completion:nil];
    //全屏显示
    [moviePlayer.moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
    //设置背景色
    [moviePlayer.view setBackgroundColor:[UIColor clearColor]];
    //设置frame
    [moviePlayer.view setFrame:self.view.bounds];
    //注册播放完毕通知
    [[NSNotificationCenter defaultCenter] addObserver:self
                                            selector:@selector(movieFinishedToCallback:)
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:moviePlayer.moviePlayer];
    //注册播放状态发生改变通知
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(movieStateChangeCallback:)
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification
                                               object:moviePlayer.moviePlayer];

}

#pragma mark - MPMoviePlayerViewController NSNotificationCenter
-(void)movieStateChangeCallback:(NSNotification*)notify  {
    //点击播放器中的播放/ 暂停按钮响应的通知
    MPMoviePlayerController* player = [notify object];
    switch (player.playbackState) {
        case MPMoviePlaybackStateStopped:
            NSLog(@"MPMoviePlaybackStateStopped");
            break;
        case MPMoviePlaybackStatePlaying:
            NSLog(@"MPMoviePlaybackStatePlaying");
            break;
        case MPMoviePlaybackStatePaused:
            NSLog(@"MPMoviePlaybackStatePaused");
            break;
        case MPMoviePlaybackStateInterrupted:
            NSLog(@"MPMoviePlaybackStateInterrupted");
            break;
        case MPMoviePlaybackStateSeekingForward:
            NSLog(@"MPMoviePlaybackStateSeekingForward");
            break;
        case MPMoviePlaybackStateSeekingBackward:
            NSLog(@"MPMoviePlaybackStateSeekingBackward");
            break;
        default:
            break;
    }
}

#pragma mark - 视频播放完毕
-(void)movieFinishedToCallback:(NSNotification*)notify{
    MPMoviePlayerController* player = [notify object];
    [player stop];
    //视频播放完或者在presentMoviePlayerViewControllerAnimated下的Done按钮被点击响应的通知。
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [self dismissMoviePlayerViewControllerAnimated];
}

总结:

MPMoviePlayerViewController播放的简单步骤

1、初始化
- (instancetype)initWithContentURL:(NSURL *)contentURL

2、把这个VC Present出来
- (void)presentMoviePlayerViewControllerAnimated:(MPMoviePlayerViewController *)moviePlayerViewController

3、播放完毕,把这个VC dismiss掉
- (void)dismissMoviePlayerViewControllerAnimated

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值