gpt4 book ai didi

ios - 使用 AVPlayer 实现流畅的视频擦洗

转载 作者:IT王子 更新时间:2023-10-29 05:27:09 24 4
gpt4 key购买 nike

我正在尝试通过 UISlider 使用 AVPlayer 实现流畅的视频擦洗我已经搜索过,Apple 似乎有一个 Technical Q&A并解释了如何实现这一点,但我的问题是我应该如何使用此方法并使用 UISlider 更改播放器当前时间:stopPlayingAndSeekSmoothlyToTime(newChaseTime:CMTime)

这是我的代码:

//Play Intro Movie
let videoURL = Bundle.main.url(forResource: "intro", withExtension: "mp4")
player = AVPlayer(url:videoURL!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.frame
view.layer.addSublayer(playerLayer)
//videoPlayer.play()


view.addSubview(slider)
slider.maximumValue = 0
slider.maximumValue = Float(CMTimeGetSeconds((player.currentItem?.asset.duration)!))

这是 Apple 示例代码:

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.seek(to: seekTimeInProgress, toleranceBefore: kCMTimeZero,
toleranceAfter: kCMTimeZero, completionHandler:
{ (isFinished:Bool) -> Void in

if CMTimeCompare(seekTimeInProgress, self.chaseTime) == 0
{
self.isSeekInProgress = false
}
else
{
self.trySeekToChaseTime()
}
})
}

最佳答案

虽然我没有使用与您相同的方法,即 stopPlayingAndSeekSmoothlyToTime,但我认为我应该帮助您处理播放器的搜索操作。

func sliderValueChanged() {
var timeToSeek = player.currentItem?.asset.duration.seconds
timeToSeek = timeToSeek * Double(slider.value)
player.seek(to: CMTimeMake(Int64(timeToSeek), 1))
}

您还应该将 slider.maximumValue 设置为 1。希望这对您有所帮助。

注意:请不要忘记处理currentItem可选值。如果它是 nil,您应该将 timeToSeek 变量的值设置为 0。

关于ios - 使用 AVPlayer 实现流畅的视频擦洗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44434586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com