直接上代码:参考前辈的demo,做了一个优化
注意点:1,全屏播放 2,循环播放
@interface STLVideoViewController ()
@property (nonatomic,strong) AVPlayer *avplayer;
@property (nonatomic,strong) AVAudioSession *avaudioSession;
@property (nonatomic,assign) BOOL isLoop;
@end
@implementation STLVideoViewController
#pragma mark - allow background music still play
- (void)preparePlayback {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[STLVideoFunctions getVideoUrl] ofType:[STLVideoFunctions getVideoType]]];
AVAsset *avAsset = [AVAsset assetWithURL:url];
AVPlayerItem *avPlayerItem =[[AVPlayerItem alloc] initWithAsset:avAsset];
_avplayer = [[AVPlayer alloc]initWithPlayerItem:avPlayerItem];
_avplayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; // set this
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_avplayer];
playerLayer.backgroundColor = [UIColor redColor].CGColor;
playerLayer.frame = self.view.bounds;
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:playerLayer];
}
#pragma mark - Notifications
- (void)playerItemDidPlayToEndTimeNotification:(NSNotification *)notification {
[_avplayer seekToTime:kCMTimeZero]; // 设置从头继续播放
}
#pragma mark - life cycle
- (void)viewDidLoad {
[super viewDidLoad];
[self preparePlayback];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//视频播放完发通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidPlayToEndTimeNotification:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:nil];
[self.avplayer play];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//视频播放完发通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
[self.avplayer pause];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
}
@end
有什么好的建议可以留言 一起学习 探讨,谢谢!