MPVPlayer: Start from playback position
This commit is contained in:
parent
64b86f2b40
commit
1d0f2b3358
3 changed files with 29 additions and 29 deletions
|
@ -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?
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue