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

View File

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

View File

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