Код: Выделить всё
@Composable
fun VideoLayout(videoUrl: String?, muted: Boolean = false) {
if (videoUrl == null)
return
val context = LocalContext.current
val videoPlayer = VideoPlayer.getInstance()
val exoPlayer = videoPlayer.getExoplayer(context)
val exoPlayerView = getStyledPlayerView(context, exoPlayer)
videoPlayer.playVideo(videoUrl)
exoPlayerView.useController = false
if (muted)
exoPlayer.volume = 0f
AndroidView(
modifier = Modifier.fillMaxSize().background(Black, shape = RectangleShape),
factory = { exoPlayerView }
)
}
@Composable
private fun getStyledPlayerView(
context: Context,
exoPlayer: ExoPlayer
) = remember {
StyledPlayerView(context).apply {
player = exoPlayer
resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT
}
}
fun playVideo(url: String) {
val uri = Uri.parse(url)
val mediaItem = MediaItem.fromUri(uri)
player?.setMediaItem(mediaItem)
player?.prepare()
player?.play()
}
fun release() {
player?.let {
player?.stop()
player?.clearMediaItems()
player?.release()
player = null
}
}
com.google.android.exoplayer2.audio.AudioSink$UnexpectedDiscontinuityException: неожиданный разрыв временной метки звуковой дорожки: ожидалось 1000001184217, получено 1000001391224
Подробнее здесь: https://stackoverflow.com/questions/766 ... sink-error