首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用avplayer时提高seek的性能

如何在使用avplayer时提高seek的性能
EN

Stack Overflow用户
提问于 2015-05-25 19:32:29
回答 2查看 1.1K关注 0票数 3

我正在使用AVPlayer创建视频播放器,但seekToTime方法相当慢。苹果应用程序"Photos“的搜索性能给我留下了深刻的印象。有人知道苹果是怎么做到这么快的搜索的吗?

这跟线程有什么关系吗?我试着把seekToTime在调度队列中调用,也无济于事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-02 11:08:58

我已经找到了解决方案。

如果我使用seekToTime做擦洗,它是相当慢的。我应该使用的是一个名为stepByCount来自AVPlayerItem..。

票数 0
EN

Stack Overflow用户

发布于 2021-02-23 22:30:21

此代码取自:

https://developer.apple.com/library/archive/qa/qa1820/_index.html

它有一点帮助,向前看起来很顺利。但是向后寻找仍然花费了太多的时间(这里SeekToTime向前平滑地工作,而freezy向后工作是解释为什么)。

代码语言:javascript
运行
复制
import AVFoundation
 
class MyClass {
 
    var isSeekInProgress = false
    let player = <#A valid player object #>
    var chaseTime = kCMTimeZero
    // your player.currentItem.status
    var playerCurrentItemStatus:AVPlayerItemStatus = .Unknown
 
    ...
 
    func stopPlayingAndSeekSmoothlyToTime(newChaseTime:CMTime)
    {
        player.pause()
 
        if CMTimeCompare(newChaseTime, chaseTime) != 0
        {
            chaseTime = newChaseTime;
 
            if !isSeekInProgress
            {
                trySeekToChaseTime()
            }
        }
    }
 
    func trySeekToChaseTime()
    {
        if playerCurrentItemStatus == .Unknown
        {
            // wait until item becomes ready (KVO player.currentItem.status)
        }
        else if playerCurrentItemStatus == .ReadyToPlay
        {
            actuallySeekToTime()
        }
    }
 
    func actuallySeekToTime()
    {
        isSeekInProgress = true
        let seekTimeInProgress = chaseTime
        player.seekToTime(seekTimeInProgress, toleranceBefore: kCMTimeZero,
                toleranceAfter: kCMTimeZero, completionHandler:
        { (isFinished:Bool) -> Void in
 
            if CMTimeCompare(seekTimeInProgress, chaseTime) == 0
            {
                isSeekInProgress = false
            }
            else
            {
                trySeekToChaseTime()
            }
        })
    }
 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30437407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档