美文网首页
iOS AVPlayer 播放本地视频

iOS AVPlayer 播放本地视频

作者: 飛天江郎 | 来源:发表于2018-12-17 21:26 被阅读72次

AVPlayer 这个自iOS 4.0+ 就有了的东西,随着iOS系统的不断优化而变得更强大,目前不止支持本地的音视频播放还指出网络的音视频播放。
但他仅仅是一个播放器,并未提供显示和其他的状态回调,所以在播放视频的时候一般都会伴随着其他的两个类一并使用:AVPlayerItem、AVPlayerLayer
AVPlayerItem它是对播放器要播放的内容进行时间监听以及状态监听等等的对象建模。简单的来说就是为了监听状态的。
AVPlayerLayer则是为为AVPLayer提供layer显示的。所以整个东西调度起来其实很简单。

   //读取本地视频路径
   NSString *path = [[NSBundle mainBundle] pathForResource:@"VID_507" ofType:@"MOV"];
    //为即将播放的视频内容进行建模
    AVPlayerItem *avplayerItem = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:path]];
//创建监听(这是一种KOV的监听模式)
    [avplayerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
    //给播放器赋值要播放的对象模型
    AVPlayer *avplayer = [AVPlayer playerWithPlayerItem:avplayerItem];
//指定显示的Layer
    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:avplayer];
    layer.frame = CGRectMake(0, 100, self.view.frame.size.width, 200);
    [self.view.layer addSublayer:layer];

下面这里是状态的监听

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    
    AVPlayerItem *item = object;
    //判断监听对象的状态
    if ([keyPath isEqualToString:@"status"]) {
    
        if (item.status == AVPlayerItemStatusReadyToPlay) {//准备好的
            NSLog(@"AVPlayerItemStatusReadyToPlay");
        } else if(item.status ==AVPlayerItemStatusUnknown){//未知的状态
           NSLog(@"AVPlayerItemStatusUnknown");
        }else if(item.status ==AVPlayerItemStatusFailed){//有错误的
            NSLog(@"AVPlayerItemStatusFailed");
        }
        
    }
    
}

其中AVPlayer的主要功能在于控制,其提供的控制方法大致如下:
- play 播放
- pause 暂停
- rate 播放的速率
更多的内容还是需要查看文档
AVPlayerItem 则提供了更多关于播放过程中的参数获取
tracks 播放数组的跟踪对象
status 播放状态
AVPlayer<wbr style="box-sizing: inherit;">Item<wbr style="box-sizing: inherit;">Status 播放器当前的状态分为三种

AVPlayerItemStatusUnknown//状态未知
AVPlayerItemStatusReadyToPlay//准备就绪
AVPlayerItemStatusFailed// 由于错误,不再播放

duration 视频的总时长
timebase播放器的timebase信息
更多的状态内容相关可以根据需求查看文档

相关文章

  • iOS AVPlayer 播放本地视频

    AVPlayer 这个自iOS 4.0+ 就有了的东西,随着iOS系统的不断优化而变得更强大,目前不止支持本地的音...

  • 播放音频

    AVAudioplayer ->只能播放本地音乐AVPlayer ->(本地音乐.远程音乐,本地视频,远程视频) ...

  • iOS 音频

    iOS 音频播放 本地音频文件 AVPlayer / AVAudioPlayer 在线音频流 AVPlayer i...

  • AVPlayer播放本地视频

    AVPlayer播放本地视频,代码如下 本地视频的加载很简单,可以直接构造出AVPlayer,自把AVPlaerL...

  • iOS使用AVPlayer自定义视频播放器

    上一篇:iOS使用AVPlayer自定义音频播放器iOS内部提供的有三种视频播放的方式,且都能播放本地、远程的音频...

  • iOS-音频播放

    1 iOS的播放音频方式: 1 AVAudioPlayer(只支持本地音乐播放)2 AVPlayer (既支持本地...

  • 竹影音乐——iOS实现网络音乐播放器

    AVPlayer AVPlayer播放器存在于AVFoundation中, 能够播放网络和本地视频/音频, 和Me...

  • avplayer

    参考1.iOS通过AVPlayer打造自己的视频播放器2.基于 AVPlayer 自定义播放器3.AVPlayer...

  • AVPlayer 播放本地视频

  • 技术集合

    相机开发 iOS开发--AVFoundation自定义相机 iOS视频播放AVPlayer的视频内容拉伸设置 状态...

网友评论

      本文标题:iOS AVPlayer 播放本地视频

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