MPVPlayer: Start from playback position

This commit is contained in:
jarnedemeulemeester 2021-09-18 21:11:45 +02:00
parent 64b86f2b40
commit 1d0f2b3358
No known key found for this signature in database
GPG key ID: B61B7B150DB6A6D2
3 changed files with 29 additions and 29 deletions

View file

@ -10,10 +10,6 @@ import dev.jdtech.jellyfin.R
class InitializingFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?

View file

@ -293,6 +293,7 @@ class MPVPlayer(
}
seekTo(C.TIME_UNSET)
if (playWhenReady) {
Log.d("mpv", "Starting playback...")
MPVLib.setPropertyBoolean("pause", false)
}
for (videoListener in videoListeners) {
@ -586,7 +587,8 @@ class MPVPlayer(
* bounds of the list of media items.
*/
override fun setMediaItems(mediaItems: MutableList<MediaItem>, startWindowIndex: Int, startPositionMs: Long) {
TODO("Not yet implemented")
internalMediaItems = mediaItems
initialSeekTo = startPositionMs / 1000
}
/**
@ -658,7 +660,7 @@ class MPVPlayer(
trackSelectionArray = TrackSelectionArray()
playbackParameters = PlaybackParameters.DEFAULT
initialCommands.clear()
initialSeekTo = 0L
//initialSeekTo = 0L
}
/** Prepares the player. */
@ -814,6 +816,7 @@ class MPVPlayer(
val seekTo = if (positionMs != C.TIME_UNSET) positionMs / C.MILLIS_PER_SECOND else initialSeekTo
if (isPlayerReady) {
MPVLib.command(arrayOf("seek", "$seekTo", "absolute"))
initialSeekTo = 0L
} else {
initialSeekTo = seekTo
}

View file

@ -58,20 +58,30 @@ constructor(
val preferredSubtitleLanguage = sp.getString("subtitle_language", null) ?: ""
if (useMpv) {
val preferredLanguages = mapOf(TrackType.AUDIO to preferredAudioLanguage, TrackType.SUBTITLE to preferredSubtitleLanguage)
player = MPVPlayer(application, false, preferredLanguages, sp.getBoolean("mpv_disable_hwdec", false))
val preferredLanguages = mapOf(
TrackType.AUDIO to preferredAudioLanguage,
TrackType.SUBTITLE to preferredSubtitleLanguage
)
player = MPVPlayer(
application,
false,
preferredLanguages,
sp.getBoolean("mpv_disable_hwdec", false)
)
} else {
val renderersFactory =
DefaultRenderersFactory(application).setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON)
DefaultRenderersFactory(application).setExtensionRendererMode(
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON
)
trackSelector.setParameters(
trackSelector.buildUponParameters()
.setTunnelingEnabled(true)
.setPreferredAudioLanguage(preferredAudioLanguage)
.setPreferredTextLanguage(preferredSubtitleLanguage)
)
player = SimpleExoPlayer.Builder(application, renderersFactory)
.setTrackSelector(trackSelector)
.build()
player = SimpleExoPlayer.Builder(application, renderersFactory)
.setTrackSelector(trackSelector)
.build()
}
}
@ -99,18 +109,9 @@ constructor(
Timber.e(e)
}
when (player) {
is MPVPlayer -> {
player.setMediaItems(mediaItems)
player.prepare()
player.play()
}
is SimpleExoPlayer -> {
player.setMediaItems(mediaItems, currentWindow, items[0].playbackPosition)
player.playWhenReady = playWhenReady
player.prepare()
}
}
player.setMediaItems(mediaItems, currentWindow, items[0].playbackPosition)
player.prepare()
player.play()
}
pollPosition(player)
@ -130,11 +131,11 @@ constructor(
}
}
playWhenReady = player.playWhenReady
playbackPosition = player.currentPosition
currentWindow = player.currentWindowIndex
player.removeListener(this)
player.release()
playWhenReady = player.playWhenReady
playbackPosition = player.currentPosition
currentWindow = player.currentWindowIndex
player.removeListener(this)
player.release()
}
private fun pollPosition(player: BasePlayer) {