You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
62 lines
1.9 KiB
//
|
|
// Created by Marco Schmickler on 28.11.21.
|
|
// Copyright (c) 2021 Marco Schmickler. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import AVKit
|
|
import SwiftUI
|
|
|
|
class SVideoModel : ObservableObject {
|
|
@Published var allItems : [MediaItem]
|
|
@Published var currentSnapshot: MediaItem
|
|
@Published var baseItem: MediaItem
|
|
@Published var frames = [KFrame]()
|
|
|
|
// The progress through the video, as a percentage (from 0 to 1)
|
|
@Published var videoPos: Double = 0
|
|
// The duration of the video in seconds
|
|
@Published var videoDuration: Double = 0
|
|
// Whether we're currently interacting with the seek bar or doing a seek
|
|
@Published var seeking = false
|
|
|
|
@Published var paused = false
|
|
|
|
@Published var edit = false
|
|
@Published var dirty = false
|
|
@Published var loop = false
|
|
@Published var slow = false
|
|
@Published var zoomed = false
|
|
@Published var jump = false
|
|
@Published var favorite = false
|
|
|
|
@Published var speed: Float = 1.0
|
|
@Published var height: Int = 0
|
|
@Published var nominalFrameRate: Int = 0
|
|
@Published var bitRate: Int = 0
|
|
@Published var codec: String = "avc1"
|
|
|
|
@Published var currentURL: URL?
|
|
|
|
@Published var scale: CGFloat = 1.0
|
|
@Published var dragOffset: CGSize = CGSize.zero
|
|
|
|
@Published var proxy: GeometryProxy?
|
|
|
|
@Published var observer: Any?
|
|
@Published var observed: AVPlayer?
|
|
|
|
init(allItems: [MediaItem], currentSnapshot: MediaItem, baseItem: MediaItem) {
|
|
self.allItems = allItems
|
|
self.currentSnapshot = currentSnapshot
|
|
self.baseItem = baseItem
|
|
|
|
self.favorite = baseItem.favorite
|
|
}
|
|
|
|
func currentPlayerItem() -> AVPlayerItem {
|
|
let values = currentSnapshot.cookies
|
|
let cookieOptions = ["AVURLAssetHTTPHeaderFieldsKey": ["Cookie": values]]
|
|
return AVPlayerItem(asset: AVURLAsset(url: currentSnapshot.playerURL!, options: cookieOptions))
|
|
}
|
|
}
|