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