当前位置:   article > 正文

使用AVPlayer遇到的那些坑_不用播放器av

不用播放器av

使用AVPlayer遇到的那些坑

最近做了一个短视频相关的功,主要是列表页,页面里面都是mp4的视频,需求是同一时间内,只能有一个视频在播放,视频播放器内部的功能也很简单,包含展示播放时间和总时长、全屏功能、进度条拖拽、播放、暂停功能。想要自定义播放器,那肯定就是要用到AVPlayer了,简单的用法有太多教程可以看,这里就不再赘述,主要是来说说都遇到了哪些坑。

调用了[self.player play]时,就能保证视频正常播放么?

首先当status变为了AVPlayerStatusReadyToPlay后,我们就可以调用[self.player play]方法来播放视频了。但并不是调用了play方法之后就真的在播放了。在性能差的机器上表现的尤为明显,开始的时候会显示黑屏。原因是AVPlayer在进行播放的时候,会预先解码一些内容,但在这个时候系统就已经告诉我们可以播放了,其实并不是真正的在播放,可能黑屏之后一两秒之后,就会自动播放了。

如何精准的跳转到某一时刻?

在应用进入后台的时候,我们需要记录当前的播放进度,并且停止播放视频,等到用户回到我们的app之后,继续播放。这里就会遇到一个问题,在这种情况下,根据视频的总时长的不同,会有不同情况的不一致,差值在-5~5秒之间。也就是在回到应用继续播放时,不一定是在压入后台时候的那个时间点。同样在进度条拖拽到最右侧的时候,也会倒退回去几秒钟,如何处理呢?

其实主要的方法是使用系统API的问题,系统提供了定位到某一时刻的API如下:

[self.player seekToTime:self.lastPlayTime toleranceBefore: toleranceAfter: completionHandler:];
  • 1

如果需要精准定位,那么把toleranceBefore:toleranceAfter:的参数都设置为kCMTimeZero即可。
所以在进入后台返回的时候就可以通过一下代码进行处理

    @try
    {
        DEF_WEAKSELF;
        [self.playerseekToTime:self.lastPlayTimetoleranceBefore:kCMTimeZerotolerance
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/282645
推荐阅读
相关标签
  

闽ICP备14008679号