Форум для тех, кто программирует под Android
Anonymous
Exoplayer не воспроизводит видео, ошибка аудиоприемника
Сообщение
Anonymous » 14 май 2024, 09:32
Exoplayer не воспроизводит видео, второй раз воспроизводит только аудио.
Код: Выделить всё
@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
}
}
MediaCodecAudioRenderer: ошибка приемника звука
com.google.android.exoplayer2.audio.AudioSink$UnexpectedDiscontinuityException: неожиданный разрыв временной метки звуковой дорожки: ожидалось 1000001184217, получено 1000001391224
Подробнее здесь:
https://stackoverflow.com/questions/766 ... sink-error
1715668331
Anonymous
Exoplayer не воспроизводит видео, второй раз воспроизводит только аудио. [code] @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 } } [/code] MediaCodecAudioRenderer: ошибка приемника звука com.google.android.exoplayer2.audio.AudioSink$UnexpectedDiscontinuityException: неожиданный разрыв временной метки звуковой дорожки: ожидалось 1000001184217, получено 1000001391224 Подробнее здесь: [url]https://stackoverflow.com/questions/76673172/exoplayer-not-playing-video-audio-sink-error[/url]