MediaPlayer类实现播放器

  1. iOS自带的一个音视频类库,封装了另一个偏底层的音视频类库 - AVFoundation。
  2. MPMoviePlayerViewController类,制作视频播放器最简单的方法,类名中带有“view”字段,说明这个类把视图相关的东西都集成好了,只需按照视图控制器的套路执行就行了,套路是:①创建控制器;②设置属性/代理;③modal展示。
    MediaPlayer类实现播放器_第1张图片
    • 此类只有一个属性和一个构造方法。
    • UIViewController的名为MPMoviePlayerViewController的分类,为其提供了两个方法:一个是present方法,一个是dismiss方法。
    • 官方.h文件上说:使用分类方法present,会默认全屏展示,转场为默认效果。
    • 代码实现:
- (IBAction)playClick:(id)sender {

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"minion_01" ofType:@"mp4"];
    // 1. 创建视图控制器
    MPMoviePlayerViewController *viewCtl = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:filePath]];
    // 2. 设置属性&代理(这里不设置任何属性&代理)

    // 3. Modal展示
    [self presentViewController:viewCtl animated:YES completion:nil];   
}
  1. MPMoviePlayerController类,类名中不含“view”字段,表名此播放器控制器没有为我们自动添加播放视图,需要我们手动添加视图,可以自定义视图的frame。
    • 实测中显示,iOS9和iOS10中底部控制条会根据播放视图的宽度决定是否显示播放进度条和currentTime,而且,iOS9和iOS10中,右下角控制条上全屏按钮的图标的是不一样的,不要认为是bug。
    • 此类提供了许多可以自定义的属性:1)scalingMode;2)backgroundView.backgroundColor;3)controlStyle;4)repeatMode;5)shouldAutoplay;等
    • 不是通过present展示的,所以需要全局的属性进行强引用。
- (IBAction)startClick:(id)sender {
    // 视频URL
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"minion_01.mp4" ofType:nil];
    NSURL *fileURL = [NSURL fileURLWithPath:filePath];
    // 初始化播放控制器
    _playerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
    // 添加到父视图
    [self.view addSubview:_playerController.view];
    // --- 属性 ---
    // Frame设置
    _playerController.view.frame = CGRectMake(0, 0, 300, 400);
    // 背景颜色
    _playerController.backgroundView.backgroundColor = [UIColor redColor];
    // 填充样式
    _playerController.scalingMode = MPMovieScalingModeAspectFit;
    // 填充样式
    [_playerController prepareToPlay]; 
}

你可能感兴趣的:(音视频,mediaplayer,视频,ios)