|
@@ -36,9 +36,8 @@ class NCPlayer: NSObject {
|
|
internal var width: Int?
|
|
internal var width: Int?
|
|
internal var height: Int?
|
|
internal var height: Int?
|
|
internal var length: Int?
|
|
internal var length: Int?
|
|
- internal let fileNameSnapshotLocalPath: String
|
|
|
|
- internal let fileNamePreviewLocalPath: String
|
|
|
|
internal let userAgent = CCUtility.getUserAgent()!
|
|
internal let userAgent = CCUtility.getUserAgent()!
|
|
|
|
+ internal var pauseAfterPlay: Bool = false
|
|
|
|
|
|
internal weak var playerToolBar: NCPlayerToolBar?
|
|
internal weak var playerToolBar: NCPlayerToolBar?
|
|
internal weak var viewerMediaPage: NCViewerMediaPage?
|
|
internal weak var viewerMediaPage: NCViewerMediaPage?
|
|
@@ -56,9 +55,6 @@ class NCPlayer: NSObject {
|
|
self.metadata = metadata
|
|
self.metadata = metadata
|
|
self.viewerMediaPage = viewerMediaPage
|
|
self.viewerMediaPage = viewerMediaPage
|
|
|
|
|
|
- fileNameSnapshotLocalPath = CCUtility.getDirectoryProviderStorageSnapshotOcId(metadata.ocId, etag: metadata.etag)!
|
|
|
|
- fileNamePreviewLocalPath = CCUtility.getDirectoryProviderStoragePreviewOcId(metadata.ocId, etag: metadata.etag)!
|
|
|
|
-
|
|
|
|
super.init()
|
|
super.init()
|
|
}
|
|
}
|
|
|
|
|
|
@@ -84,7 +80,6 @@ class NCPlayer: NSObject {
|
|
if let result = NCManageDatabase.shared.getVideo(metadata: metadata),
|
|
if let result = NCManageDatabase.shared.getVideo(metadata: metadata),
|
|
let resultPosition = result.position {
|
|
let resultPosition = result.position {
|
|
position = resultPosition
|
|
position = resultPosition
|
|
- player.position = position
|
|
|
|
}
|
|
}
|
|
|
|
|
|
player.drawable = imageVideoContainer
|
|
player.drawable = imageVideoContainer
|
|
@@ -93,21 +88,33 @@ class NCPlayer: NSObject {
|
|
view.addGestureRecognizer(singleTapGestureRecognizer)
|
|
view.addGestureRecognizer(singleTapGestureRecognizer)
|
|
}
|
|
}
|
|
|
|
|
|
- playerToolBar?.setBarPlayer(position: position, ncplayer: self, metadata: metadata, viewerMediaPage: viewerMediaPage)
|
|
|
|
|
|
+ player.play()
|
|
|
|
+ player.position = position
|
|
|
|
|
|
if autoplay {
|
|
if autoplay {
|
|
- player.play()
|
|
|
|
|
|
+ pauseAfterPlay = false
|
|
} else {
|
|
} else {
|
|
- if position == 0 {
|
|
|
|
- imageVideoContainer?.image = UIImage(contentsOfFile: fileNamePreviewLocalPath)
|
|
|
|
- } else {
|
|
|
|
- imageVideoContainer?.image = UIImage(contentsOfFile: fileNameSnapshotLocalPath)
|
|
|
|
- }
|
|
|
|
|
|
+ pauseAfterPlay = true
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ playerToolBar?.setBarPlayer(position: position, ncplayer: self, metadata: metadata, viewerMediaPage: viewerMediaPage)
|
|
|
|
+
|
|
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground(_:)), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterApplicationDidEnterBackground), object: nil)
|
|
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground(_:)), name: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterApplicationDidEnterBackground), object: nil)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ func restartAVPlayer(url: URL) {
|
|
|
|
+
|
|
|
|
+ DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
|
|
|
+ NCManageDatabase.shared.addVideo(metadata: self.metadata, position: 0)
|
|
|
|
+ self.player.media = VLCMedia(url: url)
|
|
|
|
+ self.player.position = 0
|
|
|
|
+ self.playerToolBar?.setBarPlayer(position: 0)
|
|
|
|
+ self.viewerMediaPage?.changeScreenMode(mode: .normal)
|
|
|
|
+ self.pauseAfterPlay = true
|
|
|
|
+ self.player.play()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// MARK: - UIGestureRecognizerDelegate
|
|
// MARK: - UIGestureRecognizerDelegate
|
|
|
|
|
|
@objc func didSingleTapWith(gestureRecognizer: UITapGestureRecognizer) {
|
|
@objc func didSingleTapWith(gestureRecognizer: UITapGestureRecognizer) {
|
|
@@ -170,9 +177,6 @@ class NCPlayer: NSObject {
|
|
|
|
|
|
guard metadata.isVideo, isPlay() else { return }
|
|
guard metadata.isVideo, isPlay() else { return }
|
|
NCManageDatabase.shared.addVideo(metadata: metadata, position: player.position)
|
|
NCManageDatabase.shared.addVideo(metadata: metadata, position: player.position)
|
|
- if let width = width, let height = height {
|
|
|
|
- player.saveVideoSnapshot(at: fileNameSnapshotLocalPath, withWidth: Int32(width), andHeight: Int32(height))
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
func jumpForward(_ seconds: Int32) {
|
|
func jumpForward(_ seconds: Int32) {
|
|
@@ -206,13 +210,7 @@ extension NCPlayer: VLCMediaPlayerDelegate {
|
|
break
|
|
break
|
|
case .ended:
|
|
case .ended:
|
|
if let url = self.url {
|
|
if let url = self.url {
|
|
- NCManageDatabase.shared.addVideo(metadata: metadata, position: 0)
|
|
|
|
- self.player.media = VLCMedia(url: url)
|
|
|
|
- self.player.position = 0
|
|
|
|
- self.playerToolBar?.setBarPlayer(position: 0)
|
|
|
|
- self.viewerMediaPage?.changeScreenMode(mode: .normal)
|
|
|
|
- NCUtilityFileSystem.shared.deleteFile(filePath: fileNameSnapshotLocalPath)
|
|
|
|
- imageVideoContainer?.image = UIImage(contentsOfFile: fileNamePreviewLocalPath)
|
|
|
|
|
|
+ restartAVPlayer(url: url)
|
|
}
|
|
}
|
|
print("Played mode: ENDED")
|
|
print("Played mode: ENDED")
|
|
break
|
|
break
|
|
@@ -223,6 +221,11 @@ extension NCPlayer: VLCMediaPlayerDelegate {
|
|
print("Played mode: ERROR")
|
|
print("Played mode: ERROR")
|
|
break
|
|
break
|
|
case .playing:
|
|
case .playing:
|
|
|
|
+ if pauseAfterPlay {
|
|
|
|
+ player.pause()
|
|
|
|
+ pauseAfterPlay = false
|
|
|
|
+ print(player.position)
|
|
|
|
+ }
|
|
let size = player.videoSize
|
|
let size = player.videoSize
|
|
if let mediaLength = player.media?.length.intValue {
|
|
if let mediaLength = player.media?.length.intValue {
|
|
self.length = Int(mediaLength)
|
|
self.length = Int(mediaLength)
|
|
@@ -258,8 +261,7 @@ extension NCPlayer: VLCMediaPlayerDelegate {
|
|
}
|
|
}
|
|
|
|
|
|
func mediaPlayerSnapshot(_ aNotification: Notification) {
|
|
func mediaPlayerSnapshot(_ aNotification: Notification) {
|
|
- imageVideoContainer?.image = UIImage(contentsOfFile: fileNameSnapshotLocalPath)
|
|
|
|
- print("Snapshot saved")
|
|
|
|
|
|
+ // Handle other states...
|
|
}
|
|
}
|
|
|
|
|
|
func mediaPlayerStartedRecording(_ player: VLCMediaPlayer) {
|
|
func mediaPlayerStartedRecording(_ player: VLCMediaPlayer) {
|