fix: exo / subtitle improvements (#335)

This commit is contained in:
TwistedUmbrellaX 2024-04-07 22:19:50 -04:00 committed by GitHub
parent 3666758e6e
commit 47d05e737d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -215,6 +215,11 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
companion object { companion object {
var initialized = false var initialized = false
lateinit var media: Media lateinit var media: Media
private const val DEFAULT_MIN_BUFFER_MS = 600000
private const val DEFAULT_MAX_BUFFER_MS = 600000
private const val BUFFER_FOR_PLAYBACK_MS = 2500
private const val BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS = 5000
} }
private lateinit var episode: Episode private lateinit var episode: Episode
@ -372,16 +377,31 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
6 -> ResourcesCompat.getFont(this, R.font.blocky) 6 -> ResourcesCompat.getFont(this, R.font.blocky)
else -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold) else -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold)
} }
playerView.subtitleView?.setStyle( val fontSize = PrefManager.getVal<Int>(PrefName.FontSize).toFloat()
CaptionStyleCompat(
primaryColor, playerView.subtitleView?.let { subtitles ->
subBackground, subtitles.setApplyEmbeddedStyles(false)
subWindow, subtitles.setApplyEmbeddedFontSizes(false)
outline,
secondaryColor, subtitles.setStyle(
font CaptionStyleCompat(
primaryColor,
subBackground,
subWindow,
outline,
secondaryColor,
font
)
) )
)
subtitles.alpha =
when (PrefManager.getVal<Boolean>(PrefName.Subtitles)) {
true -> PrefManager.getVal(PrefName.SubAlpha)
false -> 0f
}
subtitles.setFixedTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize)
}
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -484,14 +504,6 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
setupSubFormatting(playerView) setupSubFormatting(playerView)
playerView.subtitleView?.alpha = when (PrefManager.getVal<Boolean>(PrefName.Subtitles)) {
true -> PrefManager.getVal(PrefName.SubAlpha)
false -> 0f
}
val fontSize = PrefManager.getVal<Int>(PrefName.FontSize).toFloat()
playerView.subtitleView?.setFixedTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize)
if (savedInstanceState != null) { if (savedInstanceState != null) {
currentWindow = savedInstanceState.getInt(resumeWindow) currentWindow = savedInstanceState.getInt(resumeWindow)
playbackPosition = savedInstanceState.getLong(resumePosition) playbackPosition = savedInstanceState.getLong(resumePosition)
@ -903,7 +915,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
isFastForwarding = true isFastForwarding = true
exoPlayer.setPlaybackSpeed(exoPlayer.playbackParameters.speed * 2) exoPlayer.setPlaybackSpeed(exoPlayer.playbackParameters.speed * 2)
fastForward.visibility = View.VISIBLE fastForward.visibility = View.VISIBLE
fastForward.text = "${exoPlayer.playbackParameters.speed}x" val speed = "${exoPlayer.playbackParameters.speed}x"
fastForward.text = speed
} }
fun stopFastForward() { fun stopFastForward() {
@ -1554,11 +1567,6 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
private fun buildExoplayer() { private fun buildExoplayer() {
//Player //Player
val DEFAULT_MIN_BUFFER_MS = 600000
val DEFAULT_MAX_BUFFER_MS = 600000
val BUFFER_FOR_PLAYBACK_MS = 2500
val BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS = 5000
val loadControl = DefaultLoadControl.Builder() val loadControl = DefaultLoadControl.Builder()
.setBackBuffer(1000 * 60 * 2, true) .setBackBuffer(1000 * 60 * 2, true)
.setBufferDurationsMs( .setBufferDurationsMs(
@ -1878,25 +1886,28 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
override fun onTracksChanged(tracks: Tracks) { override fun onTracksChanged(tracks: Tracks) {
tracks.groups.forEach { tracks.groups.forEach {
println("Track__: $it") println("Track__: $it\nTrack__: ${it.length}\nTrack__: ${it.isSelected}\n" +
println("Track__: ${it.length}") "Track__: ${it.type}\nTrack__: ${it.mediaTrackGroup.id}")
println("Track__: ${it.isSelected}") when (it.type) {
println("Track__: ${it.type}") C.TRACK_TYPE_AUDIO -> { }
println("Track__: ${it.mediaTrackGroup.id}") C.TRACK_TYPE_TEXT -> {
if (it.type == 3 && it.mediaTrackGroup.id == "1:") { if (it.mediaTrackGroup.id == "1:") {
playerView.player?.trackSelectionParameters = playerView.player?.trackSelectionParameters =
playerView.player?.trackSelectionParameters?.buildUpon() playerView.player?.trackSelectionParameters?.buildUpon()
?.setOverrideForType( ?.setOverrideForType(
TrackSelectionOverride(it.mediaTrackGroup, it.length - 1) TrackSelectionOverride(it.mediaTrackGroup, it.length - 1)
) )
?.build()!! ?.build()!!
} else if (it.type == 3) { } else {
playerView.player?.trackSelectionParameters = playerView.player?.trackSelectionParameters =
playerView.player?.trackSelectionParameters?.buildUpon() playerView.player?.trackSelectionParameters?.buildUpon()
?.addOverride( ?.addOverride(
TrackSelectionOverride(it.mediaTrackGroup, listOf()) TrackSelectionOverride(it.mediaTrackGroup, listOf())
) )
?.build()!! ?.build()!!
}
}
C.TRACK_TYPE_VIDEO -> { }
} }
} }
println("Track: ${tracks.groups.size}") println("Track: ${tracks.groups.size}")