diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..17869e6 --- /dev/null +++ b/Package.swift @@ -0,0 +1,21 @@ +// swift-tools-version:5.7 +import PackageDescription + +let package = Package( + name: "PlayerKit", + platforms: [ + .iOS(.v13) + ], + products: [ + .library( + name: "PlayerKit", + targets: ["PlayerKit"] + ) + ], + targets: [ + .target( + name: "PlayerKit", + path: "Sources" + ) + ] +) diff --git a/Sources/Player.swift b/Sources/Player.swift index 9df3beb..a0be890 100644 --- a/Sources/Player.swift +++ b/Sources/Player.swift @@ -62,6 +62,10 @@ public enum PlayerError: Int { var bufferedTime: TimeInterval { get } + var isMuted: Bool { get set } + + var isSeekInProgress: Bool { get } + var playing: Bool { get } var ended: Bool { get } @@ -76,6 +80,9 @@ public enum PlayerError: Int { /// Play the video func play() + /// Set Rate of video + func setRate(_ rate: Float) + /// Pause the video func pause() } @@ -107,6 +114,7 @@ public enum PlayerError: Int { @objc public enum FillMode: Int { case fit case fill + case scaleToFit } /// The metadata that should be attached to any type of text track. diff --git a/Sources/RegularPlayer.swift b/Sources/RegularPlayer.swift index 33de027..ef12d55 100644 --- a/Sources/RegularPlayer.swift +++ b/Sources/RegularPlayer.swift @@ -18,6 +18,7 @@ extension AVMediaSelectionOption: TextTrackMetadata { /// A RegularPlayer is used to play regular videos. @objc open class RegularPlayer: NSObject, Player, ProvidesView { + public struct Constants { public static let TimeUpdateInterval: TimeInterval = 0.1 } @@ -35,7 +36,7 @@ extension AVMediaSelectionOption: TextTrackMetadata { private var seekTolerance: CMTime? private var seekTarget: CMTime = CMTime.invalid - private var isSeekInProgress: Bool = false + public var isSeekInProgress: Bool = false // MARK: - Public API @@ -115,6 +116,12 @@ extension AVMediaSelectionOption: TextTrackMetadata { } } + public var isMuted: Bool = true { + didSet { + player.isMuted = isMuted + } + } + public var playing: Bool { return self.player.rate > 0 } @@ -136,6 +143,10 @@ extension AVMediaSelectionOption: TextTrackMetadata { self.player.play() } + open func setRate(_ rate: Float) { + self.player.rate = rate + } + open func pause() { self.player.pause() } @@ -424,6 +435,9 @@ extension RegularPlayer: FillModeCapable { case .fill: gravity = .resizeAspectFill + case .scaleToFit: + + gravity = .resize } (self.view.layer as! AVPlayerLayer).videoGravity = gravity