KaraokePlayer
- 播放器核心接口KaraokePlayerListener
- 播放器回调监听器KaraokePlayRequest
- 播放请求对象PlayerManager
- 播放管理器,提供预加载和播放列表管理PlayPreLoader
- 预加载接口及其实现KtvLoginService
- 登录服务LoginEvent
- 登录事件PlayerDemoActivity
- 播放器演示ActivityKtvPlayFragment
- 播放Fragment实现
onPlayPrepare
之后或者onPlayStart
回调中进行初始化
stop()
方法会释放所有播放资源stop()
再调用play()
STATE_IDLE: 0
- 空闲状态STATE_START: 1
- 开始状态STATE_PLAYING: 2
- 播放中STATE_PAUSE: 3
- 暂停状态STATE_ENDED: 4
- 播放结束
DataSourceType.ORIGINAL
- 原唱DataSourceType.ACCOMPANY
- 伴奏
OnScoreListener
细节见 KtvSDK-打分
1. onPrePlay - 调用play()方法后立即回调
2. onPrepareResourceBufferingChange - 资源缓冲进度
3. onPlayPrepare - 播放资源准备完成
4. onVideoSizeChanged - 视频尺寸变化
5. onPlayStart - 播放开始
6. onLyricResourceChanged - 歌词资源更新完成(初始化歌词后会异步调用,也可能在onPlayStart前)
7. onPlayPositionChange - 播放进度更新(持续回调)
8. onVideoBufferPercentChange 视频缓冲进度
9. onBufferingStart/onBufferingEnd - 缓冲开始/结束
10. onPlayEnd - 播放结束
onShowPicture
回调非常重要,当视频播放失败时必须实现此回调显示封面图,否则会出现黑屏onAllResourceDownloadFinished
回调后才能进行下一首歌曲的预加载,否则会导致当前歌曲下载被取消onPlayPositionChange
会持续回调,用于更新播放进度UI
登录后
↓
PlayerManager.preload (播放管理器)
↓
PlayPreLoader (预加载器) → KaraokePlayer (播放器)
↓
KaraokePlayerListener (播放回调)
public class SongInfoObject {
public String mMid; // 歌曲mid
public String mOriUrl; // 歌曲原唱URL
public String mAccUrl; // 歌曲消音伴奏URL
public String mVideoUrl; // MV URL
public String mAlbumUrl; // 封面 URL
public byte[] mNodeBytes; // 打分 Note 数据
public byte[] mQycBytes; // 加密 QRC 歌词
public byte[] mLrcBytes; // 加密 LRC 歌词
public int mMvHasLyric; // MV是否带歌词
....
KtvSdk视频播放策略 1.调用KaraokePlayer.play()后,MV开始播放。若歌曲原MV播放失败,则播放兜底视频。 2.播放兜底视频 -> 检测在线播放还是离线播放 -> 优先用本地的K歌MV,否则用在线配置的兜底MV。 3.兜底视频播放失败后,粒子动画启用?则进行粒子动画播放。 4.粒子动画不启用?回调onShowPicture
DecodeTypeAuto
,会用上我们积累的一些机型兼容策略。如果兼容有问题,可反馈给K歌,再不行可尝试使用mediaplayer.ksong.support.player.KtvPlayerConfig#setEnableScore(false) //关闭打分
//接口连接超时, 默认30s
ksong.support.player.KtvPlayerConfig#setHttpConnectTimeoutMs()
//接口read超时,默认30s
ksong.support.player.KtvPlayerConfig#setHttpReadTimeoutMs()
ksong.support.player.KtvPlayerConfig#setAudioRecordSource
//Android版本>=Android5.0
ksong.support.player.KtvPlayerConfig#setAudioAttributes()
//Android版本<Android5.0时设置streamType
ksong.support.player.KtvPlayerConfig#setStreamType()
ksong.support.player.KtvPlayerConfig#setPreferredDevice((AudioDeviceInfo deviceInfo)
onPlayError
或onExecuteFail
onShowPicture
接口显示大图。stop()
释放当前资源stop()
避免内存泄漏onShowPicture
回调显示封面图,避免视频播放失败时黑屏onAllResourceDownloadFinished
回调后才能进行下一首预加载onPlayPositionChange
用于更新播放进度UIsongType == SongType.SONG_TYPE_K_SONG
songType == SongType.SONG_TYPE_KSONG_LISTEN
onAllResourceDownloadFinished
后才能预加载下一首preloadNow()
可以设置高优先级onPlayError
回调