美文网首页关注程序员iOS开发攻城狮的集散地
iOS四种源生视频播放器框架比较(二)

iOS四种源生视频播放器框架比较(二)

作者: 葱花思鸡蛋 | 来源:发表于2016-11-04 19:30 被阅读275次

    下面介绍苹果重点推荐大家使用的框架类:AVPlayer和AVPlayerViewController

    提供iOS四种源生视频播放器框架比较(一)的连接:点击跳转

    AVPlayer存在于AVFoundation中,它更加接近于底层,所以灵活性极高。主要用来实现自定义播放器功能,没有控制界面,显示时需要借助AVPlayerLayer来进行显示,该播放器图层继承于CALayer。

    代码实现:

    //导入头文件

    #import<AVFoundation/AVFoundation.h>

    // 强引用

    @property(nonatomic,strong)AVPlayer * player;

    //懒加载

    - (AVPlayer *)player

    {

    if (_player == nil) {

    // 加载网络资源

    //    NSString *urlString = @"http://baobab.wdjcdn.com/14676170652191(23).mp4";

    //    NSURL *url = [NSURL URLWithString:urlString];

    //设置资源文件路径 //可以播放网络资源,

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"minion_01.mp4" ofType:nil];

    NSURL *url = [NSURL fileURLWithPath:filePath];

    AVAsset *asset = [AVAsset assetWithURL:url];

    AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];

    _player = [[AVPlayer alloc] initWithPlayerItem:item];

    //注意点:此方法不能使用构造方法,不然不会显示,只会有声音

    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];

    [self.view.layer addSublayer:playerLayer];

    playerLayer.frame = [UIScreen mainScreen].bounds;

    self.layer = playerLayer;

    }

    return _player;

    }

    实现播放,暂停,结束功能

    - (IBAction)pauseAction:(id)sender {

    [self.player pause];

    }

    - (IBAction)playMovieAction:(id)sender {

    [self.player play];

    }

    - (IBAction)endAction:(id)sender {

    //注意此时self.player 一定要释放,不然再次播放无法开启

    self.player = nil;

    [self.layer removeFromSuperlayer];

    //注意释放内存

    self.layer = nil;

    }

    自定义播放器有许多非常好的框架,可以满足我们的开发需要,向大家推荐一篇使用AVPlayer自定义播放器的文章,有开发需要的可以学习一下:链接

    下面介绍一下AVPlayerViewController,苹果在iOS8.0推出的集成度非常高,推荐大家使用,下面介绍一下它的优点:自带的播放控制UI, 不需要手动添加,此控制器是视图控制器, 可以弹出, 可以压栈也可以手动调整视图大小, 添加到其他视图上。

    实现代码:

    # 导入头文件

    #import<AVFoundation/AVFoundation.h>

    #import<AVKit/AVKit.h>

    //注意强引用

    @property(nonatomic,strong)AVPlayerViewController * playerVC;

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"minion_01.mp4" ofType:nil];

    NSURL *url = [NSURL fileURLWithPath:filePath];

    AVPlayer *player = [[AVPlayer alloc] initWithURL:url];

    self.playerVC = [[AVPlayerViewController alloc] init];

    self.playerVC.player = player;

    // 设置缩放模式

    self.playerVC.videoGravity = AVLayerVideoGravityResizeAspect;

    // 是否显示媒体播放组件

    self.playerVC.showsPlaybackControls = YES;

    //界面实现时开始播放

    [self.playerVC.player play];

    //播放方式有两种,任选其中一种即可

    //第一种方式:可以选择在本控制器里播放,可以自定义播放器的位置和大小

    //    self.playerVC.view.frame = CGRectMake(0, 150, self.view.frame.size.width, 300);

    //    [self addChildViewController:self.playerVC];

    //    [self.view addSubview:self.playerVC.view];

    // 第二种方式:可以模态视频控制器进行播放

    [self presentViewController:self.playerVC animated:YES completion:nil];

    最后附上四种框架的全部测试demo:https://github.com/conghuasijidan/MoviePlayer.git

    相关文章

      网友评论

        本文标题:iOS四种源生视频播放器框架比较(二)

        本文链接:https://www.haomeiwen.com/subject/aelwuttx.html