AVFoundation (一) AVPlayer播放视频,暂停,继续播放

32 阅读1分钟

AVFoundation介绍

AVFoundation是iOS/macOS原生唯一官方音视频核心框架,属于系统级底层框架,所有iOS端音视频相关功能均基于此框架实现,无替代方案。区别于第三方播放器(IJKPlayer、KSYPlayer),原生框架具备低功耗、低延迟、系统兼容最优、支持裸流操作、可深度定制编辑的核心优势,是企业级音视频开发、短视频App、直播辅助、视频剪辑工具的底层基石。

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()
@property (nonatomic, strong) AVPlayer *player;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"1" withExtension:@"mp4"];
    NSLog(@"%@", url);
    AVAsset *asset = [AVAsset assetWithURL:url];

    AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];

    self.player = [AVPlayer playerWithPlayerItem:item];
    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.player];
    layer.videoGravity = AVLayerVideoGravityResizeAspect;
    layer.frame = self.view.bounds;
    [self.view.layer addSublayer:layer];
    [self.player play];

    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
    [button1 setTitle:@"切换" forState:UIControlStateNormal];
    button1.frame = CGRectMake(100, 100, 100, 40);
    button1.backgroundColor = [UIColor redColor];
    [self.view addSubview:button1];
    [button1 addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside];
}
- (void)pause{
    // rate是0表示停止状态,1表示播放状态
    if ([self isPlaying]) {
        [self.player play];
    }else{
        [self.player pause];
    }
}
// 是否正在播放
- (BOOL)isPlaying {
    AVPlayerItem *item = self.player.currentItem;
    return item.status == AVPlayerItemStatusReadyToPlay && self.player.rate != 0;
}


@end