diff --git a/app/src/main/java/com/radiola/service/PlayerController.kt b/app/src/main/java/com/radiola/service/PlayerController.kt index de60ed5..2f88c2d 100644 --- a/app/src/main/java/com/radiola/service/PlayerController.kt +++ b/app/src/main/java/com/radiola/service/PlayerController.kt @@ -13,7 +13,10 @@ import androidx.media3.common.MediaMetadata import androidx.media3.common.Metadata import androidx.media3.common.Player import android.util.Log +import androidx.media3.datasource.DefaultDataSource +import androidx.media3.datasource.DefaultHttpDataSource import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.exoplayer.source.DefaultMediaSourceFactory import androidx.media3.extractor.metadata.icy.IcyInfo import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableStateFlow @@ -74,7 +77,18 @@ class PlayerController @Inject constructor( ) } + // HTTP-источник с разрешёнными кросс-протокольными редиректами (http→https): + // многие станции отдают 301 c http на https, без этого ExoPlayer их не играет. + private val mediaSourceFactory = DefaultMediaSourceFactory( + DefaultDataSource.Factory( + context, + DefaultHttpDataSource.Factory() + .setAllowCrossProtocolRedirects(true) + ) + ) + private val exoPlayer: ExoPlayer = ExoPlayer.Builder(context) + .setMediaSourceFactory(mediaSourceFactory) .setAudioAttributes( AudioAttributes.Builder() .setUsage(C.USAGE_MEDIA)