ios 视频播放有以下4种方法:
1、AVPlayer
2、MPMoviePlayerController
3、MPMoviePlayerViewController
4、AVPlayerViewController
其中,第一种AVPlayer 定制化程度最高,自由度最高。
第二种和第三种已经过时,ios 9 之后已经弃用。第四种ios 8之后可以使用。第二种和第三种不再讲述了,主要讲第一种和第四种。
AVPlayerViewController 自带的有播放控件,是一个完整的视图,使用起来比较简单。代码如下:
AVPlayerViewController *videoVC = [[AVPlayerViewController alloc] init];
videoVC.player= [[AVPlayeralloc]initWithURL:url];//此处url可以是本地也可以是网络的
videoVC.videoGravity = @"AVLayerVideoGravityResizeAspect";//视图尺寸
[videoVC.playerplay];//自动播放
dispatch_async(dispatch_get_main_queue(), ^(void){
[self presentViewController:videoVC animated:YES completion:nil];
});
AVPlayer 继承自NSObject,所以要播放视频,还需要把视频图层加入当前视图。
涉及到的类有:
AVPlayerLayer :播放显示视频的图层界面
AVPlayerItem :资源管理对象,包括音视频的基本信息和状态等
AVAsset:专门用于获取多媒体的相关信息,包括获取多媒体的画面、声音等信息
AVURLAsset:AVAsset的子类,可以根据一个URL路径创建一个包含媒体信息的AVURLAsset对象。代码如下:
NSString*file = [[NSBundlemainBundle] pathForResource:@"test.mp4"ofType:nil];
NSURL*url = [NSURLfileURLWithPath:file];
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:url];
AVPlayer *player = [AVPlayer playerWithPlayerItem:item];
AVPlayerLayer *layer = [AVPlayerLayerplayerLayerWithPlayer:player];
layer.frame =CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.width );
[self.view.layer addSublayer:layer];
[player play];