gpt4 book ai didi

android - 如何在 android 中实现 Exoplayer 2.11.1?

转载 作者:行者123 更新时间:2023-12-05 00:44:43 25 4
gpt4 key购买 nike

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

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

我正在创建一个音乐播放器应用程序,但我对 exoplayer 一无所知我正在尝试实现 exoplayer从过去 2 天开始,但它不起作用。我无法理解官方文档中的任何内容。

我找到了很多示例和教程,但都是关于使用 exoplayer 播放视频的。 .许多示例正在使用已弃用的方法。

我正在尝试使用这个 tutorial 来实现但是许多方法已被弃用,因此它不起作用
前任。
simpleExoplayer = ExoPlayerFactory.newSimpleInstance(
DefaultRenderersFactory(this),
DefaultTrackSelector(adaptiveTrackSelectionFactory),
DefaultLoadControl()
)

谁能建议我从哪里开始或如何使用最新版本的 exoplayer 构建音乐流媒体应用程序.

任何帮助将不胜感激。

最佳答案

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

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

您也可以提供 Builder有不同的论点。见 https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/SimpleExoPlayer.Builder.html

您可以使用我创建的这个简单的自定义类来帮助您入门。
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 - 如何在 android 中实现 Exoplayer 2.11.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59439625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com