Browse Source

change time video

marinofaggiana 3 years ago
parent
commit
712428ed86

+ 1 - 1
iOSClient/Data/NCDatabase.swift

@@ -508,7 +508,7 @@ class tableUserStatus: Object {
 class tableVideo: Object {
     
     @objc dynamic var account = ""
-    @objc dynamic var durationSeconds: Double = 0
+    @objc dynamic var duration: Int64 = 0
     @objc dynamic var ocId = ""
     @objc dynamic var time: Int64 = 0
     

+ 10 - 8
iOSClient/Data/NCManageDatabase.swift

@@ -25,6 +25,7 @@ import UIKit
 import RealmSwift
 import NCCommunication
 import SwiftyJSON
+import CoreMedia
 
 class NCManageDatabase: NSObject {
     @objc static let shared: NCManageDatabase = {
@@ -3127,7 +3128,7 @@ class NCManageDatabase: NSObject {
     //MARK: -
     //MARK: Table Video
     
-    func addVideoTime(metadata: tableMetadata, time: CMTime?, durationSeconds: Double?) {
+    func addVideoTime(metadata: tableMetadata, time: CMTime?, duration: CMTime?) {
         
         if metadata.livePhoto { return }
         let realm = try! Realm()
@@ -3136,8 +3137,8 @@ class NCManageDatabase: NSObject {
             try realm.safeWrite {
                 if let result = realm.objects(tableVideo.self).filter("account == %@ AND ocId == %@", metadata.account, metadata.ocId).first {
                     
-                    if let durationSeconds = durationSeconds {
-                        result.durationSeconds = durationSeconds
+                    if let duration = duration {
+                        result.duration = Int64(CMTimeGetSeconds(duration)) * 1000
                     }
                     if let time = time {
                         result.time = Int64(CMTimeGetSeconds(time)) * 1000
@@ -3149,8 +3150,8 @@ class NCManageDatabase: NSObject {
                     let addObject = tableVideo()
                    
                     addObject.account = metadata.account
-                    if let durationSeconds = durationSeconds {
-                        addObject.durationSeconds = durationSeconds
+                    if let duration = duration {
+                        addObject.duration = Int64(CMTimeGetSeconds(duration)) * 1000
                     }
                     addObject.ocId = metadata.ocId
                     if let time = time {
@@ -3164,7 +3165,7 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    func getVideoDurationSeconds(metadata: tableMetadata?) -> Double? {
+    func getVideoDuration(metadata: tableMetadata?) -> CMTime? {
         guard let metadata = metadata else { return nil }
 
         if metadata.livePhoto { return nil }
@@ -3174,8 +3175,9 @@ class NCManageDatabase: NSObject {
             return nil
         }
         
-        if result.durationSeconds == 0 { return nil }
-        return result.durationSeconds
+        if result.duration == 0 { return nil }
+        let duration = CMTimeMake(value: result.duration, timescale: 1000)
+        return duration
     }
     
     func getVideoTime(metadata: tableMetadata) -> CMTime? {

+ 1 - 1
iOSClient/NCGlobal.swift

@@ -79,7 +79,7 @@ class NCGlobal: NSObject {
     // Database Realm
     //
     let databaseDefault                             = "nextcloud.realm"
-    let databaseSchemaVersion: UInt64               = 210
+    let databaseSchemaVersion: UInt64               = 211
     
     // Intro selector
     //

+ 4 - 2
iOSClient/Utility/NCUtility.swift

@@ -27,6 +27,7 @@ import KTVHTTPCache
 import NCCommunication
 import PDFKit
 import Accelerate
+import CoreMedia
 
 class NCUtility: NSObject {
     @objc static let shared: NCUtility = {
@@ -692,9 +693,10 @@ class NCUtility: NSObject {
         return isEqual
     }
     
-    func stringFromTimeInterval(interval: TimeInterval) -> String {
+    func stringFromTime(_ time: CMTime) -> String {
     
-        let interval = Int(interval)
+        let interval = Int(CMTimeGetSeconds(time))
+        
         let seconds = interval % 60
         let minutes = (interval / 60) % 60
         let hours = (interval / 3600)

+ 7 - 6
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -30,7 +30,6 @@ class NCPlayer: NSObject {
    
     private let appDelegate = UIApplication.shared.delegate as! AppDelegate
     private var imageVideoContainer: imageVideoContainerView?
-    private var durationSeconds: Double = 0
     private var playerToolBar: NCPlayerToolBar?
     private var observerAVPlayerItemDidPlayToEndTime: Any?
     
@@ -88,8 +87,10 @@ class NCPlayer: NSObject {
                             imageVideoContainer.playerLayer = self.videoLayer
                             imageVideoContainer.metadata = self.metadata
                         }
-                        self.durationSeconds = CMTimeGetSeconds(duration)
-                        self.saveDurationSeconds(self.durationSeconds)
+                        NCManageDatabase.shared.addVideoTime(metadata: metadata, time: nil, duration: duration)
+
+//                        self.durationSeconds = CMTimeGetSeconds(duration)
+//                        self.saveDurationSeconds(self.durationSeconds)
                         self.playerToolBar?.setBarPlayer(ncplayer: self)
                         self.generatorImagePreview()
                     }
@@ -141,14 +142,14 @@ class NCPlayer: NSObject {
     func saveTime(_ time: CMTime) {
         guard let metadata = self.metadata else { return }
 
-        NCManageDatabase.shared.addVideoTime(metadata: metadata, time: time, durationSeconds: nil)
+        NCManageDatabase.shared.addVideoTime(metadata: metadata, time: time, duration: nil)
         generatorImagePreview()
     }
     
-    func saveDurationSeconds(_ durationSeconds: Double) {
+    func saveDurationSecondsxx(_ duration: CMTime) {
         guard let metadata = self.metadata else { return }
 
-        NCManageDatabase.shared.addVideoTime(metadata: metadata, time: nil, durationSeconds: durationSeconds)
+        NCManageDatabase.shared.addVideoTime(metadata: metadata, time: nil, duration: duration)
     }
     
     func videoSeek(time: CMTime) {

+ 3 - 3
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift

@@ -73,9 +73,9 @@ class NCPlayerToolBar: UIView {
         playbackSlider.isContinuous = true
         playbackSlider.tintColor = .lightGray
         
-        labelCurrentTime.text = NCUtility.shared.stringFromTimeInterval(interval: 0)
+        labelCurrentTime.text = NCUtility.shared.stringFromTime(.zero)
         labelCurrentTime.textColor = .lightGray
-        labelOverallDuration.text = NCUtility.shared.stringFromTimeInterval(interval: 0)
+        labelOverallDuration.text = NCUtility.shared.stringFromTime(.zero)
         labelOverallDuration.textColor = .lightGray
         
         backButton.setImage(NCUtility.shared.loadImage(named: "gobackward.15", color: .lightGray), for: .normal)
@@ -97,7 +97,7 @@ class NCPlayerToolBar: UIView {
         playbackSlider.maximumValue = Float(ncplayer.getVideoDurationSeconds())
         playbackSlider.addTarget(self, action: #selector(onSliderValChanged(slider:event:)), for: .valueChanged)
 
-        labelCurrentTime.text = NCUtility.shared.stringFromTimeInterval(interval: 0)
+        labelCurrentTime.text = NCUtility.shared.stringFromTime(.zero)
         labelOverallDuration.text = "-" + NCUtility.shared.stringFromTimeInterval(interval:ncplayer.getVideoDurationSeconds())
                 
         updateToolBar()

+ 2 - 2
iOSClient/Viewer/NCViewerMedia/NCViewerMediaDetailView.swift

@@ -155,9 +155,9 @@ class NCViewerMediaDetailView: UIView {
                 dimValue.text = "\(Int(image.size.width)) x \(Int(image.size.height))"
             }
         } else if metadata?.classFile == NCCommunicationCommon.typeClassFile.video.rawValue || metadata?.classFile == NCCommunicationCommon.typeClassFile.audio.rawValue  {
-            if let durationSeconds = NCManageDatabase.shared.getVideoDurationSeconds(metadata: metadata) {
+            if let duration = NCManageDatabase.shared.getVideoDuration(metadata: metadata) {
                 self.dimLabel.text = NSLocalizedString("_duration_", comment: "")
-                self.dimValue.text = NCUtility.shared.stringFromTimeInterval(interval: durationSeconds)
+                self.dimValue.text = NCUtility.shared.stringFromTime(duration)
             }
         }