gpt4 book ai didi

Swift - UISlider 作为视频洗涤器的平滑度问题

转载 作者:行者123 更新时间:2023-11-28 08:38:09 25 4
gpt4 key购买 nike

所以我一直在使用 UISlider 开发视频删除器,并且在大多数情况下效果很好。它能够通过视频 FORWARD 逐帧平滑地移动,但是当我向后移动时它变得不稳定并且不那么平滑。下面是我删除视频的代码:

func sliderBeganTracking(slider: CustomUISlider!) {
if isPlaying == true {
self.touchCount += 1
pauseVideo()
}
}

func sliderValueChanged(slider: CustomUISlider!) {
let videoDuration = CMTimeGetSeconds(player.currentItem!.duration)
let elapsedTime: Float64 = videoDuration * Float64(chosePosSlider.value)
let time: CMTime = CMTimeMakeWithSeconds(elapsedTime, self.player.currentTime().timescale)

self.player.seekToTime(time, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
}

任何人都知道为什么当我尝试向后滑动时它停止流畅地运行和/或是否有更好的解决方案或方法来创建一个平滑滑动视频的 UISlider?

最佳答案

这里的问题(双关语不是故意的)与视频编码播放的方式有关。几乎所有视频标准都使用“关键帧”模型,其中对单个帧的整个图像进行编码,然后进行一系列较小的增量更改,以记录从最后一个关键帧开始更改的像素。这使您可以存储整个视频,而无需存储每一帧的每个像素。

虽然这在视频向前播放时效果很好,因为操作系统只能将增量更改应用到内存中已有的像素,但在播放时效果不佳向后,因为不可能以相同的方式“撤销”增量。这就是为什么您可以流畅地向前播放,但当您向后播放时,事情会变得不稳定,因为操作系统正在向后跳到最近的关键帧。

您的解决方案与this question about negative playback rates中的解决方案相同. TLDR;是将有问题的视频重新编码为每帧都是关键帧的格式。您可以在视频软件中执行此操作,也可以将视频转换为 PhotoJPEG 等格式。

关于Swift - UISlider 作为视频洗涤器的平滑度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176061/

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