美文网首页视频播放器播放器专题
iOS常见视频之AVPlayer介绍

iOS常见视频之AVPlayer介绍

作者: 小王在努力 | 来源:发表于2017-06-07 17:05 被阅读313次

    1、前言

    iOS 开发过程中常见的视频播放器主要有AVPlayer播放器和ijkPlayer播放器。AVPlayer是由苹果内部提供的一套关于点播的播放器,ijkPLayer是Bilibili基于ffmpeg开发并开源的轻量级视频播放器,支持播放本地网络视频,也支持流媒体播放。

    2、AVPlayer的介绍

    Apple为开发者提供两种视频播放方式,一种是使用MPMoviePlayerController,还有一种是使用AVPlayer.关于这两个视频的区别简而言之就是MPMoviePlayerController使用更简单,功能不如AVPlayer强大,而AVPlayer使用稍微麻烦点,不过功能更加强大.

    3、AVPlayer特点

    AVPlayer存在于AVFoundation中,它更加接近于底层,所以灵活性也更强,AVPlayer本身并不能显示视频,而且它也不像MPMoviePlayerController有一个view属性.如果AVPlayer要显示必须创建一个播放器层AVPlayerLayer用于展示,播放器层继承于CALayer,只要把AVPlayerLayer添加到控制器视图的layer中即可.

    4、AVPlayer解码方式

    AVPlayer+httpserver+HLS的组合方案的硬件解码方式

    CPU消耗极低,解码效率极高、但视频有延迟,不适合做视频通讯

    5、AVPlayer三要素

    AVPlayerItem(提供数据,设置数据源)

    AVPlayer(负责控制播放,暂停、播放、指定时间播放等)

    AVPlayerLayer(负责显示如果缺少就只有声音没有视频)

    6、AVPlayer使用步奏

    1、获取数据源url

    2、根据URL创建AVPlayerItem

    3、把AVPlayerItem提供给AVPlayer

    4、AVPlayerLayer显示视频

    5、AVPlayer控制视频播放、暂停、跳转等

    6、添加播放过程中的各种监听等

    7、AVPlayer常见的通知

    [_playerItemaddObserver:selfforKeyPath:@"status"options:NSKeyValueObservingOptionNewcontext:nil];//加载状态改变通知

    [_playerItemaddObserver:selfforKeyPath:@"loadedTimeRanges"options:NSKeyValueObservingOptionNewcontext:nil];//缓冲进度,可有可无,可以增加用户体验

    [_playerItemaddObserver:selfforKeyPath:@"playbackBufferEmpty"options:NSKeyValueObservingOptionNewcontext:nil];//缓冲为空

    [_playerItemaddObserver:selfforKeyPath:@"playbackLikelyToKeepUp"options:NSKeyValueObservingOptionNewcontext:nil];//缓冲可以播放的时候调用

    [_playerItemaddObserver:selfforKeyPath:@"playbackBufferFull"options:NSKeyValueObservingOptionNewcontext:nil];//缓冲完成

    [self.playeraddObserver:selfforKeyPath:@"currentItem"options:NSKeyValueObservingOptionNewcontext:nil];/*监听AVPlayer "currentItem"属性*/

    [self.playeraddObserver:selfforKeyPath:@"rate"options:NSKeyValueObservingOptionNewcontext:nil];/*监听AVPlayer "rate"属性以便我们去更新播放进度控件. rate = 0暂停rate = 1播放*/

    [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(playbackFinished:)name:AVPlayerItemDidPlayToEndTimeNotificationobject:nil];//播放结束通知

    8、AVPlayer demo

    AVPlayerDemo

    相关文章

      网友评论

        本文标题:iOS常见视频之AVPlayer介绍

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