mirror of
https://github.com/yattee/yattee.git
synced 2025-08-06 10:44:06 +00:00
AVPlayer background music mode
This commit is contained in:
@@ -588,6 +588,42 @@ final class AVPlayerBackend: PlayerBackend {
|
||||
controlsUpdates = false
|
||||
}
|
||||
|
||||
func startMusicMode() {
|
||||
if model.playingInPictureInPicture {
|
||||
closePiP()
|
||||
}
|
||||
|
||||
playerLayer.player = nil
|
||||
|
||||
toggleVisualTracksEnabled(false)
|
||||
}
|
||||
|
||||
func stopMusicMode() {
|
||||
playerLayer.player = avPlayer
|
||||
|
||||
toggleVisualTracksEnabled(true)
|
||||
}
|
||||
|
||||
func toggleVisualTracksEnabled(_ value: Bool) {
|
||||
if let item = avPlayer.currentItem {
|
||||
for playerItemTrack in item.tracks {
|
||||
if let assetTrack = playerItemTrack.assetTrack,
|
||||
assetTrack.hasMediaCharacteristic(AVMediaCharacteristic.visual)
|
||||
{
|
||||
playerItemTrack.isEnabled = value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func didChangeTo() {
|
||||
if model.musicMode {
|
||||
startMusicMode()
|
||||
} else {
|
||||
stopMusicMode()
|
||||
}
|
||||
}
|
||||
|
||||
func setNeedsDrawing(_: Bool) {}
|
||||
func setSize(_: Double, _: Double) {}
|
||||
func setNeedsNetworkStateUpdates(_: Bool) {}
|
||||
|
@@ -512,4 +512,36 @@ final class MPVBackend: PlayerBackend {
|
||||
networkStateTimer.pause()
|
||||
}
|
||||
}
|
||||
|
||||
func startMusicMode() {
|
||||
setVideoToNo()
|
||||
}
|
||||
|
||||
func stopMusicMode() {
|
||||
addVideoTrackFromStream()
|
||||
setVideoToAuto()
|
||||
|
||||
controls.resetTimer()
|
||||
}
|
||||
|
||||
func addVideoTrackFromStream() {
|
||||
if let videoTrackURL = model.stream?.videoAsset?.url,
|
||||
tracks < 2
|
||||
{
|
||||
logger.info("adding video track")
|
||||
addVideoTrack(videoTrackURL)
|
||||
}
|
||||
|
||||
setVideoToAuto()
|
||||
}
|
||||
|
||||
func didChangeTo() {
|
||||
setNeedsDrawing(model.presentingPlayer)
|
||||
|
||||
if model.musicMode {
|
||||
startMusicMode()
|
||||
} else {
|
||||
stopMusicMode()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -47,10 +47,15 @@ protocol PlayerBackend {
|
||||
|
||||
func closePiP()
|
||||
|
||||
func startMusicMode()
|
||||
func stopMusicMode()
|
||||
|
||||
func updateControls()
|
||||
func startControlsUpdates()
|
||||
func stopControlsUpdates()
|
||||
|
||||
func didChangeTo()
|
||||
|
||||
func setNeedsNetworkStateUpdates(_ needsUpdates: Bool)
|
||||
|
||||
func setNeedsDrawing(_ needsDrawing: Bool)
|
||||
|
Reference in New Issue
Block a user