最近研究一个AVPlayer seekTime方法的 问题.这个方法虽然可以跳到指定的帧,但是如果你用拖动框去调动这个方法,你会发现这个方法会延迟.

我们查看系统的播放器,你会发现他是不会延迟.拖到哪就能显示当前帧.

我们查找API发现seekTime 还有一个

- (void)seekToTime:(CMTime)time toleranceBefore:(CMTime)toleranceBefore toleranceAfter:(CMTime)toleranceAfter completionHandler:(void (^)(BOOL finished))completionHandler

这个方法发现官方的解释是:

在指定的时间范围内移动回放光标,并在查找操作完成或中断时调用指定的块。

使用此方法可以查找当前播放器项目的指定时间,并在查找操作完成时收到通知。

要求的时间将在[时间容差前,时间+容差后]范围内,并且可能与指定的效率时间不同。

将kCMTimeZero传递给toleranceBefore和toleranceAfter以请求采样精确搜索,这可能会导致额外的解码延迟。

使用beforeTolerance消息传递此方法:kCMTimePositiveInfinity和afterTolerance:kCMTimePositiveInfinity与消息传递seekToTime:直接相同。

任何之前正在处理的查找请求的完成处理程序将立即调用,并将完成的参数设置为NO。如果新的

请求完成而不被另一个查找请求或任何其他操作中断,指定的完成处理程序将被调用

完成参数设置为YES。

没错这个就是我们要找个.但是当你换成这个方法的时候,你会发现,没什么**用.

我们深究官方的解释我们要理解

任何之前正在处理的查找请求的完成处理程序将立即调用,并将完成的参数设置为NO。如果新的

请求完成而不被另一个查找请求或任何其他操作中断,指定的完成处理程序将被调用

完成参数设置为YES。

这几句话.是说completionHandler 没有完成的情况下不调用这个方法.如果你不间断调用seekTime的 话,则会造成前个seekTime操作的中断.我们只需要加个BOOL值就可以了.

上代码

- (void)processMovie:(NSURL*)assetURL{

AVAsset *asset = [AVAsset assetWithURL:assetURL];

float totalTime = CMTimeGetSeconds(asset.duration);

process = self.selectView.frame.origin.x / self.selectImageView.frame.size.width;

NSLog(@"%f",process);

[self.player pause];

CMTime newChaseTime = CMTimeMake(totalTime * process * asset.duration.timescale, asset.duration.timescale);

if (CMTIME_COMPARE_INLINE(newChaseTime, !=, chaseTime)) {

chaseTime = newChaseTime;

if (!isSeekInProgress) {

[self trySeekToChaseTime];

}

}

[self onVideoPlayerProgressUpdate];

}

- (void)trySeekToChaseTime{

if (_player.currentItem.status == AVPlayerItemStatusUnknown) {

} else if (_player.currentItem.status == AVPlayerItemStatusReadyToPlay){

[self actuallySeekToTime];

}

}

- (void)actuallySeekToTime{

isSeekInProgress = YES;

CMTime seekTimeInProgress = chaseTime;

[self.player seekToTime:seekTimeInProgress

toleranceBefore:kCMTimeZero

toleranceAfter:kCMTimeZero

completionHandler:^(BOOL finished) {

if (CMTIME_COMPARE_INLINE(seekTimeInProgress, ==, chaseTime)) {

isSeekInProgress = NO;

} else {

[self trySeekToChaseTime];

}

}];

}

效果:

原创文章转载需获授权并注明出处

请在后台留言联系转载

html倒放播放器,AVPlayer 的无缝快进和倒放.相关推荐

  1. Windows自带的播放器Media Player实现快进

    1.如何在Windows自带的播放器Media Player上实现快进 操作流程 使用Media Player打开视频 -> 右击选择enhancements -> 选择Play spee ...

  2. iOS播放器 - AVPlayer

    之前有说到在播放器中一点点小技巧,现在正式记录一下AVPlayer. 这里主要是说明用AVPlayer做音乐播放器的功能实现,所以不介绍AVPlayer中那个图层类. 首先我们要声明一下播放器,这里有 ...

  3. 详解51单片机播放音乐、电子琴、快进

    这是在学习完51之后做的一个实验,现在再来看有些寄存器都不记得了.不过我还是想要把它记录下来--因为我热爱音乐. 1.效果 先来看看实验的仿真图吧: 从按键就可以看到,这个实验可以实现播放音乐,暂停音 ...

  4. android无缝切换播放器,android 视频 无缝切换 无缝播放 surfaceview

    android 视频 无缝切换 无缝播放 surfaceview 最近做一个app,其中有一个控件要不断的播放视频,切换视频,然后遇到每次切换视频都会黑屏一会. baidu,google没有找到有效的 ...

  5. android 音乐播放器论文,Android音乐播放器论文-Android文档类资源

    基于android系统的音乐播放器论文.里边有详细的介绍,没有代码.只是单独的一个论文. XXX科技大学本科生毕业设计(论文) 摘要 当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们 对 ...

  6. 基于QtAV的简易播放器(开源)

    这个开源代码,是我利用QtAV源码,提取其中一部分代码,进行整合到我自己项目中,做的一个小型播放器测试,至于怎么安装一些环境以及QtAV源码编译在我以前写的一篇博客中可以看到(Qt第三方库QtAV-- ...

  7. ffmpeg播放器实现详解 - 音频同步控制

    ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...

  8. JavaScript 音乐播放器

    JavaScript 音乐播放器 主要功能:快进.快退.暂停.上下一首.禁音.鼠标控制音量.自动下一首.显示歌名 <html> <head>@*不提供音频*@<meta ...

  9. VC++ 繁星音乐播放器

    繁星音乐播放器是本人第二次使用VC++编写的小应用.主要实现音乐的导入,删除和现实歌词,另外有一些特效 一.功能需求: 1.实现基本的音乐播放器的播放.暂停.继续.停止.上一首.下一首. 2.实现音乐 ...

  10. FFplay播放器分析

    FFplay 是 FFmpeg 官方提供的一个播放器的实现,全部的逻辑代码都在 ffplay.c 里面,只有不到 4 千行代码,麻雀虽小,五脏俱全. FFplay 播放器支持大部分常见的播放器功能,例 ...

最新文章

  1. 练习2-13 求N分之一序列前N项和 (15 分)
  2. shell批量插入数据
  3. Sinon.JS Sinon.JS
  4. hiho 1318 非法二进制数 dp
  5. 计算机录入员考试题及答案,计算机录入员理论考题及答案.docx
  6. “写画”与“惊春”:王艾画展和当代诗人朗诵会
  7. c3p0 0.9.1.2 配套mysql_连接数据库,使用c3p0技术连接MySQL数据库
  8. zlib库compress和uncompress函数的使用方法
  9. Android 10 正式版本或将于 9 月 3 日推出
  10. tensor.view(*shape) 函数
  11. 6.王道考研数据结构-栈
  12. matlab 图像特征 代码,数字图像特征提取+matlab源代码
  13. ArcView GIS 应用与开发技术(5)-统计图
  14. 蓝桥杯13-20届真题答案和解析(Java 大学 B 组)2013年省赛真题4_黄金连分数
  15. 【136天】尚学堂高淇Java300集视频精华笔记(77-78)
  16. ramda 为 占位符 添加类型
  17. 应用层协议和传输层协议
  18. HTML+CSS 简易搜索框
  19. Ms Sql Server 2000 个人绿色版 5.62
  20. 闲聊----Simulation,MSaaS到SaaS

热门文章

  1. firedrake求解NS方程
  2. Qt 5.14.1 最新版下载
  3. ADS 2022 软件下载与安装教程
  4. QImage、QPainter绘图
  5. Python 之 pip安装 及 使用详解
  6. 《商务与经济统计》练习:案例2-1:Pelican商店促销活动效果评估
  7. 莫烦 Matplotlib
  8. MAC 终端git提交代码步骤
  9. CSS面试题汇总(三)
  10. svn回退到指定版本