Exoplayer 无法播放视频,音频接收器错误

问题描述 投票:0回答:1

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

android audio exoplayer
1个回答
0
投票

如果有人在流媒体 URL(例如 .m3u8

)上收到此错误

AudioSink$UnexpectedDiscontinuityException

并不代表exoplayer有问题。是URL配置有问题。例如:如果有一个 sourceM3u8 URL,并且您使用 FFMPEG 使用不同的块大小创建一个新 URL。它将导致 exoplayer 上的音频不连续错误。可以通过修改ffmpeg命令来修复

© www.soinside.com 2019 - 2024. All rights reserved.