方式1:AVPlayer
通过AVPlayer播放视频,视频播放样式如上图所示。可以看到没有对视频播放的控制(暂停、播放进度、全屏等操作),只是简单的播放视频。不过可以自己封装成一个视频播放的小Demo,可参考BuzzLightYear23童鞋的这篇简书 ,在此不再赘述。
代码实现:
声明一个视频播放器属性(
别忘了导入<AVFoundation.h>头文件
)
@interface ViewController ()
/** 播放器属性 */
@property (nonatomic, strong) AVPlayer * player;
@end
创建并懒加载视频播放器,保证唯一性
-(AVPlayer *)player
{
if (_player == nil)
{
//获取视频URL(远程、本地视频URL都可以)
NSURL * url = [NSURL URLWithString:@"http://v1.mukewang.com/19954d8f-e2c2-4c0a-b8c1-a4c826b5ca8b/L.mp4"];
//根据URL创建播放曲目
AVPlayerItem * item = [AVPlayerItem playerItemWithURL:url];
//将曲目添加到播放器
_player = [AVPlayer playerWithPlayerItem:item];
//创建一个视频播放图层
AVPlayerLayer * playLayer = [AVPlayerLayer playerLayerWithPlayer:_player];
//设置视频播放图层的frame(宽高比最好是16:9)
CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
playLayer.frame = CGRectMake(0, 200, screenWidth, screenWidth * 9 / 16 );
//将视频播放图层添加到父控件图层
[self.view.layer addSublayer:playLayer];
}
return _player;
}
视频播放控制
//开始播放
- (IBAction)startPlay
{
[self.player play];
}
//暂停播放
- (IBAction)pausePlay
{
[self.player pause];
}
方式2: AVPlayerViewController
由于通过AVPlayer播放视频无法控制视频播放,所以可以给AVPlayer包装一个控制器,这样就可以控制视频播放进度,暂停、全屏等操作。其实MPMoviePlayerController和MPMoviePlayerViewController控制器也可以控制视频播放,但在ios9之后都过期了,所以这里只用AVPlayerViewController这个控制器。
代码实现:
声明播放控制器属性
记得导入<AVFoundation.h>和<AVKit.h>两个框架的头文件
@interface ViewController ()
/** 播放控制器属性 */
@property (nonatomic, strong) AVPlayerViewController * playerVC;
@end
懒加载视频播放控制器
-(AVPlayerViewController *)playerVC
{
if (_playerVC == nil)
{
//创建一个视频播放控制器
_playerVC = [[AVPlayerViewController alloc] init];
//获取视频URL(远程、本地视频URL都可以)
NSURL * url = [NSURL URLWithString:@"视频链接"];
//根据URL创建播放曲目
AVPlayerItem * item = [AVPlayerItem playerItemWithURL:url];
//创建一个视频播放器
AVPlayer * player = [AVPlayer playerWithPlayerItem:item];
//创建一个视频播放图层
AVPlayerLayer * playLayer = [AVPlayerLayer playerLayerWithPlayer:player];
//将视频播放图层添加到父控件图层
[_playerVC.view.layer addSublayer:playLayer];
//设置视频播放控制器的播放器为player
_playerVC.player = player;
}
return _playerVC;
}
弹出视频播放的控制器
[self showViewController:self.playerVC sender:nil];
以上为个人做笔记整理资料,如有错误,希望大神不吝斧正!