forked from recloudstream/cloudstream
Allow playback from buffer with no internet
This commit is contained in:
parent
544f277d0c
commit
7f71eef755
1 changed files with 11 additions and 5 deletions
|
@ -17,10 +17,7 @@ import com.google.android.exoplayer2.text.TextRenderer
|
||||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
|
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
|
||||||
import com.google.android.exoplayer2.trackselection.TrackSelector
|
import com.google.android.exoplayer2.trackselection.TrackSelector
|
||||||
import com.google.android.exoplayer2.ui.SubtitleView
|
import com.google.android.exoplayer2.ui.SubtitleView
|
||||||
import com.google.android.exoplayer2.upstream.DataSource
|
import com.google.android.exoplayer2.upstream.*
|
||||||
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory
|
|
||||||
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
|
|
||||||
import com.google.android.exoplayer2.upstream.HttpDataSource
|
|
||||||
import com.google.android.exoplayer2.upstream.cache.CacheDataSource
|
import com.google.android.exoplayer2.upstream.cache.CacheDataSource
|
||||||
import com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor
|
import com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor
|
||||||
import com.google.android.exoplayer2.upstream.cache.SimpleCache
|
import com.google.android.exoplayer2.upstream.cache.SimpleCache
|
||||||
|
@ -880,7 +877,16 @@ class CS3IPlayer : IPlayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPlayerError(error: PlaybackException) {
|
override fun onPlayerError(error: PlaybackException) {
|
||||||
|
// If the Network fails then ignore the exception if the duration is set.
|
||||||
|
// This is to switch mirrors automatically if the stream has not been fetched, but
|
||||||
|
// allow playing the buffer without internet as then the duration is fetched.
|
||||||
|
if (error.errorCode == PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED
|
||||||
|
&& exoPlayer?.duration != C.TIME_UNSET
|
||||||
|
) {
|
||||||
|
exoPlayer?.prepare()
|
||||||
|
} else {
|
||||||
playerError?.invoke(error)
|
playerError?.invoke(error)
|
||||||
|
}
|
||||||
|
|
||||||
super.onPlayerError(error)
|
super.onPlayerError(error)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue