marinofaggiana 3 years ago
parent
commit
f2c1aee158

+ 4 - 2
iOSClient/Viewer/NCViewerImage/NCViewerImageZoom.swift

@@ -115,8 +115,10 @@ class NCViewerImageZoom: UIViewController {
         
         delegate?.didAppearImageZoom(viewerImageZoom: self, metadata: metadata)
         
-        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
-            NCViewerVideo.shared.initVideoPlayer(imageView: self.imageView, viewerVideoToolBar: self.videoToolBar, metadata: self.metadata)
+        if metadata.classFile == NCCommunicationCommon.typeClassFile.video.rawValue || metadata.classFile == NCCommunicationCommon.typeClassFile.audio.rawValue {
+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
+                NCViewerVideo.shared.initVideoPlayer(imageView: self.imageView, viewerVideoToolBar: self.videoToolBar, metadata: self.metadata)
+            }
         }
     }
     

+ 17 - 61
iOSClient/Viewer/NCViewerVideo/NCViewerVideo.swift

@@ -33,8 +33,8 @@ class NCViewerVideo: NSObject {
     
     private let appDelegate = UIApplication.shared.delegate as! AppDelegate
     private var imageView: UIImageView?
-    private var timeObserver: Any?
-    private var rateObserver: Any?
+//    private var timeObserver: Any?
+//    private var rateObserver: Any?
     private var durationSeconds: Double = 0
     private var viewerVideoToolBar: NCViewerVideoToolBar?
 
@@ -55,10 +55,6 @@ class NCViewerVideo: NSObject {
         guard let imageView = imageView else { return }
         if self.metadata == metadata { return }
         
-        self.imageView = imageView
-        self.viewerVideoToolBar = viewerVideoToolBar
-        self.metadata = metadata
-                
         func initPlayer(url: URL) {
                         
             self.player = AVPlayer(url: url)
@@ -77,7 +73,6 @@ class NCViewerVideo: NSObject {
                     self.viewerVideoToolBar?.showToolBar()
                 }
             }
-            rateObserver = self.player?.addObserver(self, forKeyPath: "rate", options: [], context: nil)
             
             // save durationSeconds on database
             if let duration: CMTime = (player?.currentItem?.asset.duration) {
@@ -85,8 +80,8 @@ class NCViewerVideo: NSObject {
                 NCManageDatabase.shared.addVideoTime(metadata: metadata, time: nil, durationSeconds: durationSeconds)
             }
             
-            // seek to datamebase ti
-            if let time = NCManageDatabase.shared.getVideoTime(metadata: metadata) {
+            // NO Live Photo, seek to datamebase time
+            if !metadata.livePhoto, let time = NCManageDatabase.shared.getVideoTime(metadata: metadata) {
                 self.player?.seek(to: time)
             }
             
@@ -94,6 +89,11 @@ class NCViewerVideo: NSObject {
         }
         
         if let url = NCKTVHTTPCache.shared.getVideoURL(metadata: metadata) {
+            
+            self.imageView = imageView
+            self.viewerVideoToolBar = viewerVideoToolBar
+            self.metadata = metadata
+            
             initPlayer(url: url)
         }        
     }
@@ -110,30 +110,22 @@ class NCViewerVideo: NSObject {
         
         self.player?.pause()
         NCKTVHTTPCache.shared.stopProxy(metadata: metadata)
+        if let time = self.player?.currentTime() {
+            NCManageDatabase.shared.addVideoTime(metadata: metadata, time: time, durationSeconds: nil)
+        }
     }
     
     func videoSeek(time: CMTime) {
+        guard let metadata = self.metadata else { return }
+        
         self.player?.seek(to: time)
+        NCManageDatabase.shared.addVideoTime(metadata: metadata, time: time, durationSeconds: nil)
     }
     
     func videoRemoved() {
-        guard let metadata = self.metadata else { return }
         
-        self.player?.pause()
-        self.player?.seek(to: CMTime.zero)
-        
-        if let timeObserver = timeObserver {
-            self.player?.removeTimeObserver(timeObserver)
-            self.timeObserver = nil
-        }
-        
-        if rateObserver != nil {
-            self.player?.removeObserver(self, forKeyPath: "rate")
-            NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
-            NCKTVHTTPCache.shared.stopProxy(metadata: metadata)
-            self.rateObserver = nil
-        }
-               
+        videoPause()
+                       
         self.videoLayer?.removeFromSuperlayer()
     }
     
@@ -149,41 +141,5 @@ class NCViewerVideo: NSObject {
         
         return self.durationSeconds
     }
-    
-    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
-        
-        guard let metadata = self.metadata else { return }
-        
-        if keyPath != nil && keyPath == "rate" {
-            
-            self.viewerVideoToolBar?.updateToolBar()
-            
-            if self.player?.rate == 1 {
-                
-                if let time = NCManageDatabase.shared.getVideoTime(metadata: metadata) {
-                    self.player?.seek(to: time)
-                    self.player?.isMuted = CCUtility.getAudioMute()
-                    let timeSecond = Double(CMTimeGetSeconds(time))
-                    print("Play video at: \(timeSecond)")
-                }
-                
-            } else if !metadata.livePhoto {
-                
-                if let time = self.player?.currentTime(), let duration = self.player?.currentItem?.asset.duration {
-                    let timeSecond = Double(CMTimeGetSeconds(time))
-                    let durationSeconds = Double(CMTimeGetSeconds(duration))
-                    if timeSecond < durationSeconds {
-                        if let time = self.player?.currentTime() {
-                            NCManageDatabase.shared.addVideoTime(metadata: metadata, time: time, durationSeconds: nil)
-                            let timeSecond = Double(CMTimeGetSeconds(time))
-                            print("Save video time: \(timeSecond)")
-                        }
-                    } else {
-                        NCManageDatabase.shared.deleteVideoTime(metadata: metadata)
-                    }
-                }
-            }
-        }
-    }
 }