自己在看到同事使用AVPlayer就想學習下,在網(wǎng)上看到很多這類資料疾掰,照著寫啦一個簡單的Demo搂誉,也給以后的自己看,用到也不用再苦苦尋找静檬。這個簡單Demo還有待繼續(xù)開發(fā)和優(yōu)化炭懊,先把基本內(nèi)容展示下;
在使用AVPlayer過程中發(fā)現(xiàn)拂檩,這個控件蘋果官方設(shè)置有自動布局大小侮腹,所以在使用時,會根據(jù)你設(shè)置的寬高去適配它自己的寬高稻励,這樣就造成不是你想要的界面效果父阻,我自己研究下愈涩,系統(tǒng)AVPlayer布局寬高比應(yīng)該是320:180,不知道對不對加矛,你們也可以自己看下履婉,根據(jù)這個比例,我在界面也按照這個比例去設(shè)置視頻播放的區(qū)域斟览,代碼如下:
_playViewHeight = 180*self.view.bounds.size.width/320;
PlayView *playView = [[PlayView alloc]init];
playView.bounds = CGRectMake(0, 0, self.view.bounds.size.width, _playViewHeight);
playView.center = self.view.center;
[playView.fullButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
//本地視頻
// NSString *path = [[NSBundle mainBundle] pathForResource:@"環(huán)保小視頻.mp4" ofType:nil];
// NSURL *url = [NSURL fileURLWithPath:path];
//網(wǎng)絡(luò)視頻
NSURL *url = [NSURL URLWithString:URL];
[playView updateVideoItem:url];
[self.view addSubview:playView];
self.playView = playView;
在第一個界面毁腿,我強制讓它只支持豎屏,全屏是present到另外一個界面苛茂,退出全屏是dismiss到前面界面已烤,尺寸都要在跳轉(zhuǎn)前設(shè)置好,代碼如下:
- (void)buttonClick:(UIButton *)sender{
sender.selected = !sender.selected;
FullViewController *fullVC = [[FullViewController alloc]init];
fullVC.playView = self.playView;
__weak ViewController *vc = self;
if (sender.isSelected) {
[self presentViewController:fullVC animated:YES completion:^{
vc.playView.frame = fullVC.view.bounds;
[fullVC.view addSubview:vc.playView];
}];
}
fullVC.dismissAction = ^(CGSize viewSize){
vc.playView.bounds = CGRectMake(0, 0, viewSize.height, _playViewHeight);
vc.playView.center = CGPointMake(viewSize.height/2, viewSize.width/2);
[vc.view addSubview:vc.playView];
};
}
還有控制進度妓羊,暫停開始播放等功能胯究,想了解可以看我的demo,播放進度和時間是通過定時器實時獲取的侍瑟,播放進度和播放時間代碼如下:
//計算播放進度和時間
- (void)calculateProgress{
CGFloat currentTime = CMTimeGetSeconds(self.playerItem.currentTime);
CGFloat totalTime = CMTimeGetSeconds(self.playerItem.duration);
CGFloat value = currentTime/totalTime;
self.progressSlider.value = value;
NSString *currentTimeStr = [self calculateTimeWithTime:currentTime];
NSString *totalTimeStr = [self calculateTimeWithTime:totalTime];
self.timeLabel.text = [NSString stringWithFormat:@"%@/%@",currentTimeStr,totalTimeStr];
}
暫時簡單寫到這里唐片,還有別的小功能,想了解的可以下載我的小Demo涨颜。