Marino Faggiana 1 年之前
父節點
當前提交
1c07259d0c

+ 19 - 23
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -30,7 +30,7 @@ class NCPlayer: NSObject {
 
     internal let appDelegate = UIApplication.shared.delegate as! AppDelegate
     internal var url: URL?
-    internal var player: VLCMediaPlayer?
+    internal var player = VLCMediaPlayer()
     internal var metadata: tableMetadata
     internal var singleTapGestureRecognizer: UITapGestureRecognizer!
     internal var width: Int?
@@ -74,30 +74,27 @@ class NCPlayer: NSObject {
         self.singleTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didSingleTapWith(gestureRecognizer:)))
 
         print("Play URL: \(url)")
-        player = VLCMediaPlayer()
-        player?.media = VLCMedia(url: url)
-        player?.delegate = self
+        player.media = VLCMedia(url: url)
+        player.delegate = self
 
         // player?.media?.addOption("--network-caching=500")
-        player?.media?.addOption(":http-user-agent=\(userAgent)")
+        player.media?.addOption(":http-user-agent=\(userAgent)")
 
         if let result = NCManageDatabase.shared.getVideo(metadata: metadata), let position = result.position {
             positionSliderToolBar = position
-            player?.position = positionSliderToolBar
+            player.position = positionSliderToolBar
         }
 
-        player?.drawable = imageVideoContainer
-        if let view = player?.drawable as? UIView {
+        player.drawable = imageVideoContainer
+        if let view = player.drawable as? UIView {
             view.isUserInteractionEnabled = true
             view.addGestureRecognizer(singleTapGestureRecognizer)
         }
 
         playerToolBar?.setBarPlayer(ncplayer: self, position: positionSliderToolBar, metadata: metadata, viewerMediaPage: viewerMediaPage)
 
-        player?.play()
-        if !autoplay {
-            player?.pause()
-            player?.position = 0
+        if autoplay {
+            player.play()
         }
 
         NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground(_:)), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterApplicationDidEnterBackground), object: nil)
@@ -123,17 +120,17 @@ class NCPlayer: NSObject {
 
     func isPlay() -> Bool {
 
-        return player?.isPlaying ?? false
+        return player.isPlaying
     }
 
     func playerPlay() {
 
         playerToolBar?.playbackSliderEvent = .began
-        player?.play()
+        player.play()
         playerToolBar?.playButtonPause()
 
         if let result = NCManageDatabase.shared.getVideo(metadata: metadata), let position = result.position {
-            player?.position = position
+            player.position = position
             playerToolBar?.playbackSliderEvent = .moved
         }
 
@@ -145,44 +142,43 @@ class NCPlayer: NSObject {
     @objc func playerStop() {
 
         savePosition()
-        player?.stop()
+        player.stop()
         playerToolBar?.playButtonPlay()
     }
 
     @objc func playerPause() {
 
         savePosition()
-        player?.pause()
+        player.pause()
         playerToolBar?.playButtonPlay()
     }
 
     func playerPosition(_ position: Float) {
 
         NCManageDatabase.shared.addVideo(metadata: metadata, position: position)
-        player?.position = position
+        player.position = position
     }
 
     func savePosition() {
 
-        guard let position = player?.position, metadata.isVideo, isPlay() else { return }
-        NCManageDatabase.shared.addVideo(metadata: metadata, position: position)
+        guard metadata.isVideo, isPlay() else { return }
+        NCManageDatabase.shared.addVideo(metadata: metadata, position: player.position)
     }
 
     func jumpForward(_ seconds: Int32) {
 
-        player?.jumpForward(seconds)
+        player.jumpForward(seconds)
     }
 
     func jumpBackward(_ seconds: Int32) {
 
-        player?.jumpBackward(seconds)
+        player.jumpBackward(seconds)
     }
 }
 
 extension NCPlayer: VLCMediaPlayerDelegate {
 
     func mediaPlayerStateChanged(_ aNotification: Notification) {
-        guard let player = self.player else { return }
 
         switch player.state {
         case .stopped:

+ 11 - 10
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift

@@ -129,8 +129,8 @@ class NCPlayerToolBar: UIView {
 
         playbackSlider.value = position
 
-        labelCurrentTime.text = ncplayer.player?.time.stringValue
-        labelLeftTime.text = ncplayer.player?.remainingTime?.stringValue
+        labelCurrentTime.text = ncplayer.player.time.stringValue
+        labelLeftTime.text = ncplayer.player.remainingTime?.stringValue
 
         if viewerMediaScreenMode == .normal {
             show()
@@ -142,17 +142,18 @@ class NCPlayerToolBar: UIView {
     public func update() {
 
         guard let ncplayer = self.ncplayer,
-              let length = ncplayer.player?.media?.length.intValue,
-              let position = ncplayer.player?.position
+              let length = ncplayer.player.media?.length.intValue
         else { return }
+
+        let position = ncplayer.player.position
         let positionInSecond = position * Float(length / 1000)
 
         // SLIDER & TIME
         if playbackSliderEvent == .ended {
             playbackSlider.value = position
         }
-        labelCurrentTime.text = ncplayer.player?.time.stringValue
-        labelLeftTime.text = ncplayer.player?.remainingTime?.stringValue
+        labelCurrentTime.text = ncplayer.player.time.stringValue
+        labelLeftTime.text = ncplayer.player.remainingTime?.stringValue
         MPNowPlayingInfoCenter.default().nowPlayingInfo?[MPMediaItemPropertyPlaybackDuration] = length / 1000
         MPNowPlayingInfoCenter.default().nowPlayingInfo?[MPNowPlayingInfoPropertyElapsedPlaybackTime] = positionInSecond
     }
@@ -292,7 +293,7 @@ extension NCPlayerToolBar {
 
         var actions = [NCMenuAction]()
 
-        if self.subTitleIndex == nil, let idx = ncplayer?.player?.currentVideoSubTitleIndex {
+        if self.subTitleIndex == nil, let idx = ncplayer?.player.currentVideoSubTitleIndex {
             self.subTitleIndex = idx
         }
 
@@ -309,7 +310,7 @@ extension NCPlayerToolBar {
                     selected: (self.subTitleIndex ?? -9999) == idx,
                     on: (self.subTitleIndex ?? -9999) == idx,
                     action: { _ in
-                        self.ncplayer?.player?.currentVideoSubTitleIndex = idx
+                        self.ncplayer?.player.currentVideoSubTitleIndex = idx
                         self.subTitleIndex = idx
                     }
                 )
@@ -323,7 +324,7 @@ extension NCPlayerToolBar {
 
         var actions = [NCMenuAction]()
 
-        if self.audioIndex == nil, let idx = ncplayer?.player?.currentAudioTrackIndex {
+        if self.audioIndex == nil, let idx = ncplayer?.player.currentAudioTrackIndex {
             self.audioIndex = idx
         }
 
@@ -340,7 +341,7 @@ extension NCPlayerToolBar {
                     selected: (self.audioIndex ?? -9999) == idx,
                     on: (self.audioIndex ?? -9999) == idx,
                     action: { _ in
-                        self.ncplayer?.player?.currentAudioTrackIndex = idx
+                        self.ncplayer?.player.currentAudioTrackIndex = idx
                         self.audioIndex = idx
                     }
                 )

+ 3 - 3
iOSClient/Viewer/NCViewerMedia/NCViewerMediaPage.swift

@@ -69,7 +69,7 @@ class NCViewerMediaPage: UIViewController {
     var timerAutoHideSeconds: Double {
         get {
             if NCUtility.shared.isSimulator() {
-                return 4
+                return 40
             } else {
                 return 4
             }
@@ -441,7 +441,7 @@ class NCViewerMediaPage: UIViewController {
             skipForwardCommand = MPRemoteCommandCenter.shared().skipForwardCommand.addTarget { event in
 
                 let seconds = Int32((event as! MPSkipIntervalCommandEvent).interval)
-                ncplayer.player?.jumpForward(seconds)
+                ncplayer.player.jumpForward(seconds)
                 return.success
             }
 
@@ -449,7 +449,7 @@ class NCViewerMediaPage: UIViewController {
             skipBackwardCommand = MPRemoteCommandCenter.shared().skipBackwardCommand.addTarget { event in
 
                 let seconds = Int32((event as! MPSkipIntervalCommandEvent).interval)
-                ncplayer.player?.jumpBackward(seconds)
+                ncplayer.player.jumpBackward(seconds)
                 return.success
             }
         }