如何在Android中实现Exoplayer 2.11.1? [英] How to implement Exoplayer 2.11.1 in android?

查看:650
本文介绍了如何在Android中实现Exoplayer 2.11.1?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试实现 exoplayer ,这是我的exoplayer版本

i am trying to implement exoplayer this is my exoplayer version

implementation 'com.google.android.exoplayer:exoplayer:2.11.1'

我正在创建一个音乐播放器应用程序,但我对exoplayer一无所知,我试图从最近两天开始实施exoplayer,但无法正常工作.我对官方文件一无所知.

i am creating a music player app and i don't know anything about exoplayer i am trying to implement exoplayer from last 2 days but it's not working. i couldn't understand anything in the official documentation .

我找到了很多示例和教程,但这都是关于使用exoplayer播放视频的.许多示例都使用不推荐使用的方法.

i find many example and tutorial but it's all about playing video using exoplayer. many example's are using deprecated methods.

我正在尝试使用此教程,但许多方法已弃用,因此无法正常工作 例如.

I am trying to implement using this tutorial but many of methods are deprecated so it's not working EX.

simpleExoplayer = ExoPlayerFactory.newSimpleInstance(
            DefaultRenderersFactory(this),
            DefaultTrackSelector(adaptiveTrackSelectionFactory),
            DefaultLoadControl()
        )

有人可以建议我从哪里开始,或者如何使用最新版本的exoplayer构建音乐流应用.

can anyone suggest me where to start or how do i build music streaming app using latest version of exoplayer.

任何帮助将不胜感激.

推荐答案

有了新的更新,您可以使用SimpleExoPlayer.Builder创建一个简单的播放器实例:

With the new update, you can create a simple player instance using SimpleExoPlayer.Builder:

simpleExoplayer = SimpleExoPlayer.Builder(context).build()

您还可以为Builder提供不同的参数.请参见 https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/SimpleExoPlayer.Builder.html

You can also supply the Builder with different arguments. See https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/SimpleExoPlayer.Builder.html

您可以使用我创建的这个简单的自定义类来帮助您入门.

You can use this simple custom class I created to help you get started.

class ExoPlayerHelper(
    private val playerView: PlayerView,
    onError: (ExoPlaybackException) -> Unit,
    onPlayerBuffer: (Boolean) -> Unit
) {

    private var exoPlayer: ExoPlayer? = null
    private var mediaSource: ProgressiveMediaSource? = null

    private val playerListener = object : Player.EventListener {
        override fun onPlayerError(error: ExoPlaybackException) {
            super.onPlayerError(error)
            onError(error)
        }

        override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
            super.onPlayerStateChanged(playWhenReady, playbackState)
            onPlayerBuffer(playbackState == Player.STATE_BUFFERING)
        }
    }

    fun initializePlayer(url: String) {
        exoPlayer = SimpleExoPlayer.Builder(playerView.context).build()
        exoPlayer!!.repeatMode = Player.REPEAT_MODE_ALL
        exoPlayer!!.addListener(playerListener)

        playerView.player = exoPlayer

        val userAgent =
            Util.getUserAgent(playerView.context, playerView.context.getString(R.string.app_name))
        mediaSource = ProgressiveMediaSource
            .Factory(
                DefaultDataSourceFactory(playerView.context, userAgent),
                DefaultExtractorsFactory()
            )
            .createMediaSource(Uri.parse(url))

        exoPlayer!!.prepare(mediaSource!!, true, false)
        exoPlayer!!.playWhenReady = true
    }

    private fun killPlayer() {
        if (exoPlayer != null) {
            exoPlayer!!.release()
            exoPlayer = null
            mediaSource = null
            playerView.player = null
        }
    }
}

这篇关于如何在Android中实现Exoplayer 2.11.1?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆