如何使用PierfrancescoSoffritti 12.0.0库加载YouTube播放列表?
解决PierfrancescoSoffritti 12.0.0库加载播放列表的问题
核心问题说明
你尝试调用loadPlaylist时传入的是视频ID,但该方法需要的是播放列表ID(格式通常为PLxxxxxx开头的字符串),同时需确认使用正确的方法重载。该库的YouTubePlayer接口确实提供播放列表加载方法,只是你未匹配正确的参数组合。
正确加载/预加载播放列表的示例代码
以下是修改后的完整代码,替换为播放列表加载逻辑:
var youTubePlayerView: YouTubePlayerView = findViewById(R.id.youtube_player_view) ProcessLifecycleOwner.get().lifecycle.addObserver(youTubePlayerView) youTubePlayerView.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() { override fun onReady(youTubePlayer: YouTubePlayer) { // 替换为你的播放列表ID,可从YouTube播放列表URL的list参数中获取 val playlistId = "PLRQGlKC7dWR9Z6z14Fm6y6v0X6qG6y6v0" // 加载播放列表:参数依次为播放列表ID、起始视频索引、起始播放位置(秒) youTubePlayer.loadPlaylist(playlistId, 0, 0f) youTubePlayer.play() // 若需预加载(不自动播放),使用cuePlaylist方法 // youTubePlayer.cuePlaylist(playlistId, 0, 0f) } override fun onStateChange( youTubePlayer: YouTubePlayer, state: PlayerConstants.PlayerState ) { when(state) { PlayerConstants.PlayerState.PLAYING -> { // 播放时的逻辑 } PlayerConstants.PlayerState.ENDED -> { // 播放结束时的逻辑 } PlayerConstants.PlayerState.PAUSED -> { // 暂停时的逻辑 } PlayerConstants.PlayerState.UNKNOWN -> { // 未知状态逻辑 } PlayerConstants.PlayerState.BUFFERING -> { // 缓冲时的逻辑 } } } })
关键说明
- 播放列表ID获取:打开目标YouTube播放列表,URL中
list=后面的字符串即为播放列表ID(例如PLXtTjtWmQhg1SsviTmKkWO5n0a_-T0F0x)。 - 方法区别:
loadPlaylist():加载播放列表并自动开始播放(按传入的起始位置)。cuePlaylist():预加载播放列表但不自动播放,适合需用户触发播放的场景。
- 参数解释:
- 第一个参数:必填的播放列表ID。
- 第二个参数:播放列表中起始播放的视频索引(从0开始,默认0)。
- 第三个参数:起始视频的播放位置(单位:秒,默认0f)。
内容的提问来源于stack exchange,提问作者Kristijan Todoroski
相关产品推荐
相关产品推荐

