视频播放-AVFoundation - (Obj-C)

MediaPlayer类库中的MPMoviePlayerController和MPMoviePlayerViewController在iOS 9下已经过期,本质上就是基于AVFoundation的封装,接下来演示AVFoundation实现视频播放

1.首先导入头文件

2.创建播放器

// 与MPMoviePlayerController情况类似,需要强引用,防止被释放
@property (nonatomic,strong) AVPlayer *player;

AVFoundation创建播放器有两种方式:
方式一:与MediaPlayer方式一样,通过资源URL实例化对象

AVPlayer *player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:filePath]];

方式二:创建一个播放项目,通过播放项目实例化播放器对象

// 创建资源
AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:filePath]];
// 创建播放项目
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
// 创建播放器
self.player = [AVPlayer playerWithPlayerItem:playerItem];

3.自定义播放Layer

//  自定义播放Layer (根据AVPlayer创建播放Layer)
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];

4.设置自定义播放Layer尺寸

playerLayer.frame = self.view.bounds;

5.添加Layer

[self.view.layer addSublayer:playerLayer];

6.进行播放

[self.player play];

这样就实现了视频的播放:

视频播放_1.png

AVPlayer本身不带媒体控制视图,比较偏底层,需要我们手动实现媒体功能

完整示例代码:

#import "ViewController.h"
#import  // 1. 导入头文件

@interface ViewController ()

@property (nonatomic,strong) AVPlayer *player;

@end

@implementation ViewController


// 开始播放按钮
- (IBAction)clickStartButtton:(UIButton *)sender{
    
    // 本地资源文件
    NSString *filePath = [[NSBundle mainBundle]pathForResource:@"minion_01.mp4" ofType:nil];
    
    // 2. 创建播放器
    
    // 方式一: 根据资源URL
    // 获取视频路径 (这里使用了本地视频文件,如果使用网络视频,设置网络视频URL即可)
    // AVPlayer *player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:filePath]];
    
    // 方式二: 根据播放项目创建播放器
    // 创建资源
    AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:filePath]];
    // 创建播放项目
    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
    // 创建播放器
    self.player = [AVPlayer playerWithPlayerItem:playerItem];
    
    // 3. 自定义播放Layer (根据AVPlayer创建播放Layer)
    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
    
    // 4. 设置自定义播放Layer尺寸
    playerLayer.frame = self.view.bounds;
    
    // 5. 添加Layer
    [self.view.layer addSublayer:playerLayer];
    
    // 6. 进行播放
    [self.player play];

}
// 停止播放按钮
- (IBAction)clickStopButton:(UIButton *)sender {
    [self.player pause];
}
- (void)viewDidLoad {
    [super viewDidLoad];

}


@end

你可能感兴趣的:(视频播放-AVFoundation - (Obj-C))