Fix video scrubbing

This commit is contained in:
Ilya Laktyushin 2023-06-03 10:44:34 +04:00
parent ac22a38230
commit 3c39e2c0ce
3 changed files with 5 additions and 7 deletions

View File

@ -460,7 +460,6 @@ public final class MediaEditor {
let targetPosition = CMTime(seconds: position, preferredTimescale: CMTimeScale(60.0))
if self.targetTimePosition?.0 != targetPosition {
self.targetTimePosition = (targetPosition, play)
print("targetchange")
if !self.updatingTimePosition {
self.updateVideoTimePosition()
}
@ -483,10 +482,8 @@ public final class MediaEditor {
return
}
self.updatingTimePosition = true
print("seekupdate")
self.player?.currentItem?.seek(to: targetPosition, toleranceBefore: .zero, toleranceAfter: .zero, completionHandler: { [weak self] _ in
self.player?.seek(to: targetPosition, toleranceBefore: .zero, toleranceAfter: .zero, completionHandler: { [weak self] _ in
if let self {
print("done")
if let (currentTargetPosition, _) = self.targetTimePosition, currentTargetPosition == targetPosition {
self.updatingTimePosition = false
self.targetTimePosition = nil

View File

@ -127,7 +127,7 @@ final class VideoTextureSource: NSObject, TextureSource, AVPlayerItemOutputPullD
]
let output = AVPlayerItemVideoOutput(outputSettings: outputSettings)
//output.suppressesPlayerRendering = true
output.suppressesPlayerRendering = true
output.setDelegate(self, queue: self.queue)
playerItem.add(output)
self.playerItemOutput = output
@ -163,7 +163,7 @@ final class VideoTextureSource: NSObject, TextureSource, AVPlayerItemOutputPullD
if self.player.rate != 0 {
self.forceUpdate = true
}
self.update(forced: true) //self.forceUpdate)
self.update(forced: self.forceUpdate)
self.forceUpdate = false
}

View File

@ -612,9 +612,10 @@ final class MediaEditorScreenComponent: Component {
framesUpdateTimestamp: playerState.framesUpdateTimestamp,
trimUpdated: { [weak mediaEditor] start, end, updatedEnd, done in
if let mediaEditor {
mediaEditor.setVideoTrimRange(start..<end)
if done {
mediaEditor.seek(start, andPlay: true)
mediaEditor.setVideoTrimRange(start..<end)
} else {
mediaEditor.seek(updatedEnd ? end : start, andPlay: false)
}