fix: exo / subtitle improvements (#335)
This commit is contained in:
parent
3666758e6e
commit
47d05e737d
1 changed files with 53 additions and 42 deletions
|
@ -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}")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue