forked from recloudstream/cloudstream
Possible fix for audio track decoding on some devices
This commit is contained in:
parent
afb35f73b3
commit
e1758e6346
2 changed files with 8 additions and 9 deletions
|
@ -427,7 +427,7 @@ class CS3IPlayer : IPlayer {
|
||||||
/**
|
/**
|
||||||
* Setting this variable is permanent across app sessions.
|
* Setting this variable is permanent across app sessions.
|
||||||
**/
|
**/
|
||||||
private var preferredAudioTrackLanguage: String? = null
|
var preferredAudioTrackLanguage: String? = null
|
||||||
get() {
|
get() {
|
||||||
return field ?: getKey(PREFERRED_AUDIO_LANGUAGE_KEY, field)?.also {
|
return field ?: getKey(PREFERRED_AUDIO_LANGUAGE_KEY, field)?.also {
|
||||||
field = it
|
field = it
|
||||||
|
@ -559,10 +559,7 @@ class CS3IPlayer : IPlayer {
|
||||||
// This will not force higher quality videos to fail
|
// This will not force higher quality videos to fail
|
||||||
// but will make the m3u8 pick the correct preferred
|
// but will make the m3u8 pick the correct preferred
|
||||||
.setMaxVideoSize(Int.MAX_VALUE, maxVideoHeight ?: Int.MAX_VALUE)
|
.setMaxVideoSize(Int.MAX_VALUE, maxVideoHeight ?: Int.MAX_VALUE)
|
||||||
.setPreferredAudioLanguage(preferredAudioTrackLanguage)
|
.setPreferredAudioLanguage(null)
|
||||||
|
|
||||||
// This would also clear preferred audio
|
|
||||||
// .clearSelectionOverrides()
|
|
||||||
.build()
|
.build()
|
||||||
return trackSelector
|
return trackSelector
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,11 +18,7 @@ import androidx.core.view.isGone
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import com.google.android.exoplayer2.C.TRACK_TYPE_AUDIO
|
|
||||||
import com.google.android.exoplayer2.C.TRACK_TYPE_VIDEO
|
|
||||||
import com.google.android.exoplayer2.Format
|
|
||||||
import com.google.android.exoplayer2.Format.NO_VALUE
|
import com.google.android.exoplayer2.Format.NO_VALUE
|
||||||
import com.google.android.exoplayer2.TracksInfo
|
|
||||||
import com.google.android.exoplayer2.util.MimeTypes
|
import com.google.android.exoplayer2.util.MimeTypes
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import com.lagradost.cloudstream3.*
|
import com.lagradost.cloudstream3.*
|
||||||
|
@ -34,6 +30,7 @@ import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||||
import com.lagradost.cloudstream3.mvvm.observe
|
import com.lagradost.cloudstream3.mvvm.observe
|
||||||
import com.lagradost.cloudstream3.subtitles.AbstractSubtitleEntities
|
import com.lagradost.cloudstream3.subtitles.AbstractSubtitleEntities
|
||||||
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.subtitleProviders
|
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.subtitleProviders
|
||||||
|
import com.lagradost.cloudstream3.ui.player.CS3IPlayer.Companion.preferredAudioTrackLanguage
|
||||||
import com.lagradost.cloudstream3.ui.player.CustomDecoder.Companion.updateForcedEncoding
|
import com.lagradost.cloudstream3.ui.player.CustomDecoder.Companion.updateForcedEncoding
|
||||||
import com.lagradost.cloudstream3.ui.player.PlayerSubtitleHelper.Companion.toSubtitleMimeType
|
import com.lagradost.cloudstream3.ui.player.PlayerSubtitleHelper.Companion.toSubtitleMimeType
|
||||||
import com.lagradost.cloudstream3.ui.result.ResultEpisode
|
import com.lagradost.cloudstream3.ui.result.ResultEpisode
|
||||||
|
@ -119,6 +116,11 @@ class GeneratorPlayer : FullScreenPlayer() {
|
||||||
override fun onTracksInfoChanged() {
|
override fun onTracksInfoChanged() {
|
||||||
val tracks = player.getVideoTracks()
|
val tracks = player.getVideoTracks()
|
||||||
player_tracks_btt?.isVisible = tracks.allVideoTracks.size > 1 || tracks.allAudioTracks.size > 1
|
player_tracks_btt?.isVisible = tracks.allVideoTracks.size > 1 || tracks.allAudioTracks.size > 1
|
||||||
|
// Only set the preferred language if it is available.
|
||||||
|
// Otherwise it may give some users audio track init failed!
|
||||||
|
if (tracks.allAudioTracks.any { it.language == preferredAudioTrackLanguage }){
|
||||||
|
player.setPreferredAudioTrack(preferredAudioTrackLanguage)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun noSubtitles(): Boolean {
|
private fun noSubtitles(): Boolean {
|
||||||
|
|
Loading…
Reference in a new issue