视频播放AVPlayer的使用

在视频播放方面,可以使用MPMoviePlayerController,但是如果需要高度自定义视频播放的时候,就需要使用AVPlayer,AVPlayer属于AVFoundation框架,AVPlayer自己不能播放视频,如果想播放视频,需要创建一个AVPlayerLayer,继承于CALayer, 然后将AVPlayerLayer添加到view的layer属性上。

AVPlayer中涉及到的类有:

(1)AVAsset:是一个抽象类,主要用于获取多媒体信息,不能直接使用。

(2)AVURLAsset:AVAsset的子类,可以根据一个URL路径创建一个包含媒体信息的AVURLAsset对象。

(3)AVPlayerItem:一个媒体资源管理对象,管理者视频的一些基本信息和状态,一个AVPlayerItem对应着一个视频资源。

有两个功能:播放和暂停,对应着AVPlayer的两个方法,pause和play。AVPlayer 不能判断当前视频是否在播放,可以通过视频播放的速度来判断视频的播放状态:输赢rate如果为0表明是停止,为1表明视频正常播放。

1:如果想要获得视频的播放进度:播放网络视频的时候,需要获得视频的加载和缓冲信息,AVPlayer中的属性currentItem表示当前播放的视频对象,属于AVPlayerItem类型的,可以通过KVO来监控currentItem的 status 和 loadedTimeRanges属性来获得。

status属性为AVPlayerStatusReadyToPlay说明正在播放,处于这个状态才能获得视频时长等信息

loadedTimeRanges属性改变时可以获得本次缓冲加载的视频范围(起始时间和本次加载时长),可以获得实时的缓冲情况

2:获取播放进度:通过AVPlayer的获得播发进度,- (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time)),此代理方法会在设定的时间间隔,定时更新播放进度,通过block的参数time获得

3: 获得视频播放结束,播放完成之后会有通知:AVPlayerItemDidPlayToEndTimeNotification,可以监听此通知

AVPlayer虽然播放视频很强大,但是支持的视频编码格式只有:H.264、MPEG-4,扩展名(压缩格式):.mp4、.mov、.m4v、.m2v、.3gp、.3g2等。如果想支持更多的视频编码格式,可以使用使用第三方的框架,常用的视频编码和解码框架有VLC和ffmpeg。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸿蒙AVPlayer是一款功能强大的音视频播放器,它可以用于播放各种格式的音频和视频文件,包括字节流视频。要在鸿蒙AVPlayer播放字节流视频,可以按照以下步骤进行: 1. 获取字节流视频数据:首先需要从某个来源获取字节流视频数据,可以是网络请求、本地文件读取或其他方式获取。 2. 创建AVPlayer对象:使用AVPlayer类创建一个AVPlayer对象,用于管理视频播放控制和状态。 3. 创建AVDataSource:根据获取到的字节流视频数据,创建AVDataSource对象,用于提供数据源给AVPlayer使用。可以使用AVMemoryDataSource或AVStreamDataSource来创建。 4. 设置AVPlayer的数据源:将创建的AVDataSource对象设置给AVPlayer,用于播放器解析和播放字节流视频数据。 5. 设置AVPlayer的Surface:在鸿蒙系统中,AVPlayer需要一个Surface控件来展示视频画面。可以通过创建一个SurfaceView或SurfaceBridge对象,并将其与AVPlayer关联起来。 6. 开始播放:调用AVPlayer的start方法,开始播放字节流视频。 7. 监听播放器状态:可以监听播放器的状态变化,如播放结束、错误等,以便及时处理相应的操作或提示用户。 8. 播放控制:可根据需要添加一些播放控制功能,如暂停、继续播放、快进、快退等。 总结:通过以上步骤,可以在鸿蒙AVPlayer中成功播放字节流视频。需要获取字节流视频数据,创建AVDataSource对象并设置给AVPlayer,设置Surface用于展示画面,然后调用start方法开始播放即可。同时,还可以根据需求监听和控制播放器的状态和行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值