Skip to content

Commit eefae42

Browse files
committed
v1.4.2(56)
Add artwork image on ffplayer
1 parent c47f16b commit eefae42

File tree

3 files changed

+63
-10
lines changed

3 files changed

+63
-10
lines changed

ccViewer/CryptCloudViewer.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@
813813
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
814814
CODE_SIGN_ENTITLEMENTS = ccViewer/ccViewer.entitlements;
815815
CODE_SIGN_STYLE = Automatic;
816-
CURRENT_PROJECT_VERSION = 55;
816+
CURRENT_PROJECT_VERSION = 56;
817817
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
818818
DEVELOPMENT_TEAM = 7A9X38B4YU;
819819
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;
@@ -848,7 +848,7 @@
848848
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
849849
CODE_SIGN_ENTITLEMENTS = ccViewer/ccViewer.entitlements;
850850
CODE_SIGN_STYLE = Automatic;
851-
CURRENT_PROJECT_VERSION = 55;
851+
CURRENT_PROJECT_VERSION = 56;
852852
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
853853
DEVELOPMENT_TEAM = 7A9X38B4YU;
854854
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;

ffplayer/ffplayer/player.swift

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ class StreamBridge {
149149
var soundPTS: Double
150150
var videoPTS: Double
151151
var mediaDuration: Double
152-
152+
var image: MPMediaItemArtwork?
153+
153154
var selfref: UnsafeMutableRawPointer!
154155
var player: FFPlayerViewController!
155156
var sound: AudioQueuePlayer!
@@ -434,6 +435,35 @@ class StreamBridge {
434435
}
435436
}
436437

438+
func setupArtwork() {
439+
var basename = remote.name
440+
var parentId = remote.parent
441+
if let subid = remote.subid, let subbase = CloudFactory.shared[remote.storage]?.get(fileId: subid) {
442+
basename = subbase.name
443+
parentId = subbase.parent
444+
}
445+
var components = basename.components(separatedBy: ".")
446+
if components.count > 1 {
447+
components.removeLast()
448+
basename = components.joined(separator: ".")
449+
}
450+
451+
if let imageitem = CloudFactory.shared.data.getImage(storage: remote.storage, parentId: parentId, baseName: basename) {
452+
if let imagestream = CloudFactory.shared[remote.storage]?.get(fileId: imageitem.id ?? "")?.open() {
453+
imagestream.read(position: 0, length: Int(imageitem.size)) { data in
454+
if let data = data, let image = UIImage(data: data) {
455+
self.image = MPMediaItemArtwork(boundsSize: image.size) { size in
456+
return image
457+
}
458+
DispatchQueue.main.async {
459+
self.player.artworkView.image = image
460+
}
461+
}
462+
}
463+
}
464+
}
465+
}
466+
437467
func run(parent: UIViewController, onFinish: @escaping (Int, Double)->Void) {
438468
var ret = -1
439469
var userBreak = false
@@ -499,6 +529,7 @@ class StreamBridge {
499529
}
500530
return t
501531
}
532+
setupArtwork()
502533
var timer1: Timer?
503534
DispatchQueue.main.async {
504535
UIApplication.shared.isIdleTimerDisabled = true
@@ -739,11 +770,22 @@ class StreamBridge {
739770
}
740771

741772
func updateMediaInfo() {
742-
MPNowPlayingInfoCenter.default().nowPlayingInfo = [
743-
MPMediaItemPropertyTitle: name,
744-
MPNowPlayingInfoPropertyPlaybackRate: get_pause(param) == 1 ? 0.0: 1.0,
745-
MPNowPlayingInfoPropertyElapsedPlaybackTime: soundPTS.isNaN ? videoPTS : soundPTS,
746-
MPMediaItemPropertyPlaybackDuration: mediaDuration,
747-
]
773+
if let image = image {
774+
MPNowPlayingInfoCenter.default().nowPlayingInfo = [
775+
MPMediaItemPropertyTitle: name,
776+
MPMediaItemPropertyArtwork: image,
777+
MPNowPlayingInfoPropertyPlaybackRate: get_pause(param) == 1 ? 0.0: 1.0,
778+
MPNowPlayingInfoPropertyElapsedPlaybackTime: soundPTS.isNaN ? videoPTS : soundPTS,
779+
MPMediaItemPropertyPlaybackDuration: mediaDuration,
780+
]
781+
}
782+
else {
783+
MPNowPlayingInfoCenter.default().nowPlayingInfo = [
784+
MPMediaItemPropertyTitle: name,
785+
MPNowPlayingInfoPropertyPlaybackRate: get_pause(param) == 1 ? 0.0: 1.0,
786+
MPNowPlayingInfoPropertyElapsedPlaybackTime: soundPTS.isNaN ? videoPTS : soundPTS,
787+
MPMediaItemPropertyPlaybackDuration: mediaDuration,
788+
]
789+
}
748790
}
749791
}

ffplayer/ffplayer/playerView.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class FFPlayerViewController: UIViewController {
2727
var progressView: UIProgressView!
2828
var slider: UISlider!
2929
var imageView: UIImageView!
30+
var artworkView: UIImageView!
3031
var button_close: UIButton!
3132
var play_image: UIImage!
3233
var pause_image: UIImage!
@@ -80,7 +81,17 @@ public class FFPlayerViewController: UIViewController {
8081
if bsec > 0 {
8182
skip_prevsec = bsec
8283
}
83-
84+
85+
artworkView = UIImageView()
86+
artworkView.contentMode = .scaleAspectFit
87+
view.addSubview(artworkView)
88+
89+
artworkView.translatesAutoresizingMaskIntoConstraints = false
90+
artworkView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
91+
artworkView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
92+
artworkView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
93+
artworkView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
94+
8495
imageView = UIImageView()
8596
imageView.contentMode = .scaleAspectFit
8697
view.addSubview(imageView)

0 commit comments

Comments
 (0)