【iOS开发进阶】-AVPlayer视频播放

1.AVPlayer介绍

iOS提供了多种方法来实现视频播放,包括MPMoviePlayerController,MPMoviePlayerViewController,AVPlayer,AVPlayerViewController等。其中MPMoviePlayerController,MPMoviePlayerViewController在iOS9.0之后被弃用。四种播放方式的区别如下:

其中公司内项目使用的是AVPlayer实现视频播放,AVPlayer使用十分灵活,也更加接近底层,但是AVPlayer本身是不能直接显示视频,必须创建一个播放层AVPlayerLayer并将其添加到其他的视图Layer上才能显示

AVAsset:

  • 一个用于获取多媒体信息的抽象类,不能直接使用。

  • 为定时试听媒体定义AVFoundation模型的抽象的,不可变的类。

  • 每个asset包含想要一起呈现或处理的统一的媒体类型轨道的集合。

  • asset中的每个媒体数据片段都是统一的类型,称为轨道(track)。

  • AVAsset是一个容器对象,由一个或多个AVAssetTrack实例组成,最常用的track类型是音频和视频track,AVAssetTrack还可以模拟其他辅助轨道,如隐藏式字幕,字幕和定时元数据。

  • AVAsset通常通过具体的子类AVURLAsset通过NSURL实例化,该NSURL引用试听媒体资源,如流(包括HTTP实时流),QuickTime电影文件,MP3文件和其他类型的文件。

 

AVPlayerItem:

  • 一个媒体资源管理对象,用于管理视频的基本信息和状态,一个AVPlayerItem对应一个视频资源。

  • AVPlayerItem会建立媒体资源动态视角的数据模型并保存AVPlayer在播放资源时呈现状态。

  • AVPlayerItem由一个或多个媒体曲目组成,由AVPlayerItemTrack类建立模型。

  • AVPlayerItemTrack实例用于表示播放器条目中的类型统一的媒体流,比如音频或视频。

  • AVPlayerItem中的曲目直接与基础AVAsset中的AVAssetTrack实例相对应。

  • AVPlayerItem 播放完成时,会发送一个AVPlayerItemDidPlayToEndTimeNotification通知,可以监听此通知做些相应的处理.

 

AVPlayer:

  • 一个用来播放基于时间的视听媒体的控制器对象,支持播放从本地,分布下载或通过HTTP Live Streaming协议得到的流媒体。

  • AVPlayer是一个不可见组件,要将视频资源导出到用户界面目标位置,需要用到AVPlayerLayer类。

  • AVPlayer只管理一个单独资源的播放,AVQueuePlayer是AVPlayer的子类,可以管理一个资源队列。

  • 负责视频播放、暂停、时间控制等操作。

 

AVPlayerLayer:

  • 相对简单的类,负责显示视频的图层,如果不设置此属性,视频就只有声音没有图像。

  • 创建AVPlayerLayer需要一个指向AVPlayer实例的指针,将图层和播放器绑定在一起,保证了当播放器基于事件的方法出现时使二者保持同步。

2.AVPlayer使用

1.引入AVFoundation框架,添加播放器属性

#import <AVFoundation/AVFoundation.h>
@property (nonatomic, strong) AVPlayer *player;//播放器对象
@property (nonatomic, strong) AVPlayerItem *currentPlayerItem;//播放资源管理对象

2.获取需要播放的视频地址

    //本地视频路径
    NSString *localFilePath = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"];
    NSURL *localVideoUrl = [NSURL fileURLWithPath:localFilePath];
    
    //网络视频路径
//    NSString *webVideoPath = &
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值