Merge pull request #651 from stonerl/time-reset-on-stream-change

preserve time on stream change
This commit is contained in:
Arkadiusz Fal 2024-05-16 18:20:19 +02:00 committed by GitHub
commit b9649b6356
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 7 deletions

View File

@ -134,7 +134,7 @@ final class AVPlayerBackend: PlayerBackend {
_ stream: Stream, _ stream: Stream,
of video: Video, of video: Video,
preservingTime: Bool, preservingTime: Bool,
upgrading _: Bool upgrading: Bool
) { ) {
isLoadingVideo = true isLoadingVideo = true
@ -145,7 +145,7 @@ final class AVPlayerBackend: PlayerBackend {
_ = url.startAccessingSecurityScopedResource() _ = url.startAccessingSecurityScopedResource()
} }
loadSingleAsset(url, stream: stream, of: video, preservingTime: preservingTime) loadSingleAsset(url, stream: stream, of: video, preservingTime: preservingTime, upgrading: upgrading)
} else { } else {
model.logger.info("playing stream with many assets:") model.logger.info("playing stream with many assets:")
model.logger.info("composition audio asset: \(stream.audioAsset.url)") model.logger.info("composition audio asset: \(stream.audioAsset.url)")
@ -226,7 +226,8 @@ final class AVPlayerBackend: PlayerBackend {
_ url: URL, _ url: URL,
stream: Stream, stream: Stream,
of video: Video, of video: Video,
preservingTime: Bool = false preservingTime: Bool = false,
upgrading: Bool = false
) { ) {
asset?.cancelLoading() asset?.cancelLoading()
asset = AVURLAsset(url: url) asset = AVURLAsset(url: url)
@ -235,7 +236,7 @@ final class AVPlayerBackend: PlayerBackend {
switch self?.asset?.statusOfValue(forKey: "duration", error: &error) { switch self?.asset?.statusOfValue(forKey: "duration", error: &error) {
case .loaded: case .loaded:
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
self?.insertPlayerItem(stream, for: video, preservingTime: preservingTime) self?.insertPlayerItem(stream, for: video, preservingTime: preservingTime, upgrading: upgrading)
} }
case .failed: case .failed:
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
@ -310,7 +311,8 @@ final class AVPlayerBackend: PlayerBackend {
private func insertPlayerItem( private func insertPlayerItem(
_ stream: Stream, _ stream: Stream,
for video: Video, for video: Video,
preservingTime: Bool = false preservingTime: Bool = false,
upgrading: Bool = false
) { ) {
removeItemDidPlayToEndTimeObserver() removeItemDidPlayToEndTimeObserver()
@ -394,7 +396,7 @@ final class AVPlayerBackend: PlayerBackend {
} }
if preservingTime { if preservingTime {
if model.preservedTime.isNil { if model.preservedTime.isNil || upgrading {
model.saveTime { model.saveTime {
replaceItemAndSeek() replaceItemAndSeek()
startPlaying() startPlaying()

View File

@ -345,7 +345,7 @@ final class MPVBackend: PlayerBackend {
} }
if preservingTime { if preservingTime {
if model.preservedTime.isNil { if model.preservedTime.isNil || upgrading {
model.saveTime { model.saveTime {
replaceItem(self.model.preservedTime) replaceItem(self.model.preservedTime)
} }