全民K歌IOT开放平台
  1. KtvSDK3.0接入说明
全民K歌IOT开放平台
  • 厂商合作流程
  • 快速接入K歌开放平台流程
  • SDK bug提单规范
  • 如何在线调试接口
  • 常见问题FAQ
  • 开放平台API错误码说明
  • 开放平台接入指南
    • 登录鉴权方式介绍V2(推荐)
    • 如何申请接入
    • CDK权限申请流程
    • 暗账号绑定明账号对接文档
    • 全民K歌暗账号登录方案
    • 获取应用级token
    • 获取登录二维码
    • 查询二维码的状态
    • 获取用户级token
    • 刷新用户级token
    • 暗账号解绑K歌uid
    • 获取暗账号绑定信息
  • KtvSDK3.0接入说明
    • KtvSDK-接入指南
    • KtvSDK-打分
    • KtvSDK-登录
    • KtvSDK-歌词
    • KtvSDK-播放
    • KtvSDK-作品录音、合成与播放2.0版
    • KtvSDK-播放页实现示例
    • KtvSDK-常见问题FAQ
    • KtvSDK-低性能设备处理
    • KtvSDK-反馈
    • KtvSDK-缓存管理
    • KtvSDK-切换音频视频清晰度
    • KtvSDK-跳过前奏
    • Ktv支付-米大师支付
    • KtvSDK-播放失败错误码说明
    • KtvSDK-3.0版本新功能
    • KtvSDK-2.0升级到3.0版本迁移指南
    • KtvSDK-多屏渲染
    • KtvSDK-多屏一起唱---歌词与打分适配
    • KtvSDK-Android4.4设备G2证书兼容处理
    • KtvSDK-APP上报
    • KtvSdk-离线缓存与离线播放
    • KtvSDK-3.0升级到4.0版本迁移指南
  • 基础类
    • tagId对照表
    • 歌曲详情
    • 查询mv的播放地址
    • 搜索
    • 搜索联想
    • 查询歌手歌曲
    • 获取歌曲歌词文件
    • Q音歌曲mid映射K歌
    • 短剧播放链接
    • 查询应用限免配置
    • 转换Q音或酷狗歌曲ID
    • 搜索(海外)
    • 查询歌手类型列表(海外)
    • 查询歌手列表(海外)
    • 查询热门歌手列表(海外)
  • 运营类
    • 排行榜id说明
    • 获取城市id列表
    • 获取专题分类列表
    • 获取云端配置
    • 热门ugc
    • 热搜词
    • 排行榜
    • 获取专题下歌曲信息
    • 获取车联渠道映射
    • 热门推荐
    • (新)排行榜
    • 综合歌单列表查询
    • 设置缓存设备
    • TV版分类歌单列表
    • 获取用户协议
    • 综合歌单列表查询(海外)
    • 榜单列表查询(海外)
    • 自建歌单列表查询(海外)
    • 获取广告配置
    • 拉取短剧合集的列表
    • 获取渠道运营位配置
    • 查询合唱榜单
    • 上报合唱榜单
    • OTA升级版本检查
  • 用户类
    • 用户信息查询
    • 删除用户UGC作品
    • 获取推荐/翻唱作品
    • 获取同城作品
    • 用户作品列表
    • 获取好友作品
    • UGC作品详情
    • 更改作品访问权限
    • 用户个推歌单
  • 支付类
    • 支付接入流程
    • 订单发货使用简述
    • 开通设备会员限免简述
    • 订单发货中通用sign计算规则
    • 通用返回结构
    • 【CDK】CDK兑换
    • 【CDK】生成CDK
    • 【CDK】CDK召回
    • 【CDK】CDK状态查询
    • 【三方支付】订单发货
    • 【三方支付】手机号发货
    • 【三方支付】订单状态查询
    • 【米大师支付】获取会员商品列表
    • 【米大师支付】未登录-查询会员商品列表
    • 【米大师支付】支付下单
    • 【米大师支付】支付成功通知
    • 【米大师支付】查询用户支付成功订单记录
    • 查询设备以及用户是否有赠送资格
    • 查询设备限免剩余时长
    • 设备会员迁移
    • 查询会员赠送时长
    • 同步支付订单接口
    • 【三方支付】存量会员迁移领取查询
    • 【三方支付】存量会员迁移接口
    • 授权设备体验会员
    • 查询用户会员信息
    • 【三方支付】超会发货
    • 取消授权设备体验会员
  • 用户作品-文件类
    • callback_url说明
    • 上传音频源文件
    • (服务端)上传音频作品的链接
  • 通用类
    • 【厂商定制】匹配搜索
    • 获取kg的短链接
    • 三方厂商通用上报
  • KtvSdk4.0接入说明
    • KtvSdk4.0接入文档
    • PK与合唱接入
    • 动效歌词接入文档
    • 手麦接入文档
    • 支持调整录制时长限制
  • 数据模型
    • Schemas
      • protocal.DelUserWorkReq
      • protocal.BarDisplay
      • protocal.GetLyricUrlReq
      • protocal.ConfigItem
      • multipart.FileHeader
      • protocal.ExchangeCdkeyReq
      • protocal.GetLyricUrlRsp
      • protocal.DelUserWorkRsp
      • protocal.GetVipProductRsp
      • protocal.GetChannelReq
      • protocal.ExchangeCdkeyRsp
      • protocal.GetMvUrlReq
      • protocal.GetHitedSongListReq
      • protocal.GoodsInfo
      • protocal.GetChannelRsp
      • protocal.ClientUgcUploadRsp
      • protocal.GetLimitFreeRestTimeReq
      • protocal.GetMvUrlRsp
      • protocal.GetHitedSongListRsp
      • protocal.VipAdItem
      • protocal.GetClassReq
      • protocal.DeleteFileReq
      • protocal.GetLimitFreeRestTimeRsp
      • protocal.GetSongInfoByQmIDReq
      • protocal.GetRecommWorkReq
      • protocal.WebOrderNotifyReq
      • protocal.GetClassRsp
      • protocal.DeleteFileRsp
      • protocal.GetPresentVipConfReq
      • protocal.GetSongInfoByQmIDRsp
      • protocal.GetRecommWorkRsp
      • protocal.WebOrderNotifyRsp
      • protocal.GetConfigReq
      • protocal.UgcUploadReq
      • protocal.GetPresentVipConfRsp
      • protocal.GetSongInfoReq
      • protocal.GetUserInfoReq
      • protocal.GetConfigRsp
      • protocal.UgcUploadRsp
      • protocal.OpenDeviceLimitReq
      • protocal.WebOrderStatusReq
      • protocal.GetSongInfoRsp
      • protocal.GetUserInfoRsp
      • protocal.GetHomePageReq
      • textproto.MIMEHeader
      • protocal.PresentNormalVipReq
      • protocal.WebOrderStatusRsp
      • protocal.GetSongUrlReq
      • protocal.GetUserWorkReq
      • protocal.GetHomePageRsp
      • protocal.PresentNormalVipRsp
      • protocal.GetSongUrlRsp
      • protocal.GetUserWorkRsp
      • protocal.GetHotRecomUgcReq
      • protocal.MvInfo
      • protocal.GetVipInfoRsp
      • protocal.GetHotRecomUgcRsp
      • protocal.SearchReqV2
      • protocal.GetWorkInfoReq
      • protocal.GetHotWordsReq
      • protocal.SearchRsp
      • protocal.GetWorkInfoRsp
      • protocal.GetHotWordsRsp
      • protocal.SingerInfo
      • protocal.SetUgcAccessRightReq
      • protocal.HomePageItem
      • protocal.SingerSongsFilterReq
      • protocal.SetUgcAccessRightRsp
      • protocal.PlayList
      • protocal.SingerSongsFilterRsp
      • protocal.RankSongReq
      • protocal.SingerSongsReq
      • protocal.UgcItem
      • protocal.RankSongRsp
      • protocal.SingerSongsRsp
      • protocal.UserFeatureSongReq
      • protocal.RecommendReq
      • protocal.SongContentStr
      • protocal.UserFeatureSongRsp
      • protocal.RecommendRsp
      • protocal.SongInfo
      • protocal.SongInfoPlus
      • protocal.Theme
      • protocal.TCLGetOpenIdReq
      • protocal.ThemeClass
      • protocal.TCLGetOpenIdRsp
      • protocal.ThemeSongsByIdReq
      • protocal.ThemeSongsByIdRsp
      • protocal.UgcItemInfo
      • protocal.Word
      • protocol.PresentNormalVipReq
      • protocol.UgcUploadRsp
      • protocol.SingerSongsRsp
      • protocol.TCLGetOpenIdRsp
      • protocol.RecommendRsp
      • protocol.Word
      • protocol.UserFeatureSongRsp
      • protocol.CheckDeviceEligibleReq
      • protocol.GetCollectListReq
      • protocol.AddCollectListReq
      • protocol.SongInfo
      • protocol.DelCollectListReq
      • protocol.VipAdItem
      • protocol.WebOrderStatusRsp
      • protocol.ClientUgcUploadReq
      • protocol.GetTopListRsp
      • protocol.OpenDeviceVipRsp
      • protocol.RefundDeviceVipReq
      • protocol.GetLyricUrlRsp
      • protocol.GetSongInfoByQmIDReq
      • protocol.GetSongInfoRsp
      • protocol.GetSongUrlRsp
      • protocol.SearchRsp
      • protocol.SingerSongsFilterReq
      • protocol.SongInfoPlus
      • protocol.GetLyricUrlReq
      • protocol.GetMvUrlReq
      • protocol.GetMvUrlRsp
      • protocol.GetSongInfoByQmIDRsp
      • protocol.GetSongInfoReq
      • protocol.GetSongUrlReq
      • protocol.MvInfo
      • protocol.SearchReqV2
      • protocol.SingerInfo
      • protocol.SingerSongsFilterRsp
      • protocol.SingerSongsReq
      • protocol.SongContentStr
      • protocol.DelCollectListRsp
      • protocol.GetHitedSongListRsp
      • protocol.GetUserWorkReq
      • protocol.GetUserWorkRsp
      • protocol.GetWorkInfoRsp
      • protocol.SetUgcAccessRightRsp
      • protocol.DelUserWorkReq
      • protocol.AddCollectListRsp
      • protocol.DelUserWorkRsp
      • protocol.GetHitedSongListReq
      • protocol.GetCollectListRsp
      • protocol.GetRecommWorkReq
      • protocol.GetUserInfoReq
      • protocol.GetUserInfoRsp
      • protocol.GetRecommWorkRsp
      • protocol.GetVipInfoRsp
      • protocol.GetWorkInfoReq
      • protocol.SetUgcAccessRightReq
      • protocol.UgcItem
      • protocol.UserFeatureSongReq
      • protocol.GoodsInfo
      • protocol.WebOrderNotifyRsp
      • protocol.GetVipProductRsp
      • protocol.BarDisplay
      • protocol.OpenDeviceVipReq
      • protocol.RefundDeviceVipRsp
      • protocol.WebOrderNotifyReq
      • protocol.WebOrderStatusReq
      • protocol.ExchangeCdkeyRsp
      • protocol.GetPresentVipConfRsp
      • protocol.PresentNormalVipRsp
      • protocol.GetLimitFreeRestTimeReq
      • protocol.GetLimitFreeRestTimeRsp
      • protocol.ExchangeCdkeyReq
      • protocol.GetPresentVipConfReq
      • protocol.OpenDeviceLimitReq
      • protocol.GetClassRsp
      • protocol.GetHomePageReq
      • protocol.GetHotRecomUgcReq
      • protocol.GetHotRecomUgcRsp
      • protocol.GetTopListReq
      • protocol.RankSongRsp
      • protocol.RecommendReq
      • protocol.ThemeClass
      • protocol.ThemeSongsByIdRsp
      • protocol.ConfigItem
      • protocol.GetChannelReq
      • protocol.GetChannelRsp
      • protocol.GetClassReq
      • protocol.GetConfigReq
      • protocol.GetConfigRsp
      • protocol.GetHomePageRsp
      • protocol.GetHotWordsReq
      • protocol.GetHotWordsRsp
      • protocol.HomePageItem
      • protocol.PlayList
      • protocol.RankSongReq
      • protocol.Theme
      • protocol.ThemeSongsByIdReq
      • protocol.UgcItemInfo
      • protocol.GetShortUrlReq
      • protocol.GetShortUrlRsp
      • protocol.SearchHintRsp
      • protocol.SearchHintReq
      • protocol.MultiPlaylistRsp
      • protocol.PlaylistInfo
      • protocol.MultiPlaylistReq
      • protocol.GetPayOrderListReq
      • protocol.GetPayOrderListRs p
      • protocol.GetUserVipInfoReq
      • protocol.GetUserVipInfoRsp
      • protocal.GetTvPlaylistSetReq
      • protocol.Playlist
      • protocol.GetTvPlaylistSetRsp
      • protocol.TvChorusUser
      • protocol.ClientUgcUploadRsp
      • protocol.Episode
      • protocol.UgcUploadReq
      • protocol.GenerateNewOrderCdkReq
      • protocol.GetMiniShowUrlReq
      • protocol.GenerateNewOrderCdkRsp
      • protocol.DeleteFileReq
      • protocol.GetVipProductReq
      • protocol.GetMiniShowUrlRsp
      • protocol.DeleteFileRsp
      • protocol.MergerQrCode
      • protocol.GetSdkTokenReq
      • protocol.GetSdkTokenRsp
      • protocol.PlacePayOrderReq
      • protocol.PlacePayOrderRsp
      • protocol.QueryReceiveTransferVipReq
      • protocol.QueryReceiveTransferVipRsp
      • protocol.ReceiveTransferVipReq
      • protocol.ReceiveTransferVipRsp
      • protocol.RecallNewCDKReq
      • protocol.QueryNewCDKReq
      • protocol.QueryNewCDKRsp
      • protocol.OpenDeviceLimitRsp
      • protocol.RecallNewCDKRsp
      • protocol.WebThirdpartyOrderReq
      • protocol.GetMiniShowCollectionReq
      • protocol.WebThirdpartyOrderRsp
      • protocol.GetMiniShowCollectionRsp
      • protocol.MiniShowItem
      • protocol.TCLGetOpenIdReq
  1. KtvSDK3.0接入说明

KtvSDK-播放

KTV SDK 播放功能接入文档#

1. 文件结构概述#

KTV SDK 提供完整的本地/在线歌曲播放能力,支持 K 歌模式、听歌模式、UGC 作品播放等多种场景。核心播放器接口为 KaraokePlayer,配合资源预加载、播放回调、播放参数配置等机制,快速实现自定义的 K 歌播放界面。

主要功能:#

歌曲音视频播放(原唱/伴奏切换、升降调、音量调节等)
歌曲资源预加载(避免卡顿,提升起播速度)
播放进度、状态、错误等回调
歌词、打分、MV兜底等扩展能力

核心组件#

1.1 核心播放器接口#

KaraokePlayer - 播放器核心接口
KaraokePlayerListener - 播放器回调监听器
KaraokePlayRequest - 播放请求对象

1.2 播放管理器#

PlayerManager - 播放管理器,提供预加载和播放列表管理
PlayPreLoader - 预加载接口及其实现

1.3 登录相关#

KtvLoginService - 登录服务
LoginEvent - 登录事件
详见文档 ktvSDK-登录

示例实现#

PlayerDemoActivity - 播放器演示Activity
KtvPlayFragment - 播放Fragment实现

2. 详细说明#

2.1 示例实现#

2.1.1 播放资源预加载与调用播放#

功能说明:
播放页面实现示例,包含完整的播放流程和错误处理。
关键特性:
在播放前应当先完成预加载
1.
播放参数配置:
2.
错误处理:
接收onPlayError回调

2.1.2 PlayLyric歌词初始化#

功能说明:
歌词显示和控制的场景实现。
一般在onPlayPrepare之后或者onPlayStart回调中进行初始化
歌词初始化:
更多内容见 KtvSDK-歌词Lyric接入说明

2.2 KaraokePlayer 接口 (核心播放器)#

功能说明:
KaraokePlayer是SDK的核心播放器接口,提供完整的音视频播放功能。
主要方法:

2.2.1 播放控制方法#

注意事项:
stop()方法会释放所有播放资源
播放下一首时需要先调用stop()再调用play()
K歌模式下seek只能向后跳转,纯MV播放可以快进快退

2.2.2 播放状态获取#

播放状态值:
STATE_IDLE: 0 - 空闲状态
STATE_START: 1 - 开始状态
STATE_PLAYING: 2 - 播放中
STATE_PAUSE: 3 - 暂停状态
STATE_ENDED: 4 - 播放结束

2.2.3 播放参数设置#

默认播放类型:
DataSourceType.ORIGINAL - 原唱
DataSourceType.ACCOMPANY - 伴奏

2.2.4 监听器管理#

OnScoreListener 细节见 KtvSDK-打分

2.2.5 歌词和打分相关#

2.3 KaraokePlayerListener 播放回调监听器#

功能说明:
播放器的核心回调接口,用于监听播放过程中的各种事件。
回调方法及调用顺序:

2.3.1 标准播放流程回调顺序#

1. onPrePlay - 调用play()方法后立即回调
2. onPrepareResourceBufferingChange - 资源缓冲进度
3. onPlayPrepare - 播放资源准备完成
4. onVideoSizeChanged - 视频尺寸变化
5. onPlayStart - 播放开始
6. onLyricResourceChanged - 歌词资源更新完成(初始化歌词后会异步调用,也可能在onPlayStart前)
7. onPlayPositionChange - 播放进度更新(持续回调)
8. onVideoBufferPercentChange 视频缓冲进度
9. onBufferingStart/onBufferingEnd - 缓冲开始/结束
10. onPlayEnd - 播放结束

2.3.2 详细回调方法说明#

播放生命周期回调:
播放控制回调:
进度和缓冲回调:
特殊功能回调:
重要注意事项:
1.
onShowPicture回调非常重要,当视频播放失败时必须实现此回调显示封面图,否则会出现黑屏
2.
onAllResourceDownloadFinished回调后才能进行下一首歌曲的预加载,否则会导致当前歌曲下载被取消
3.
onPlayPositionChange会持续回调,用于更新播放进度UI

2.4 PlayerManager 播放管理器#

功能说明:
PlayerManager是播放功能的核心管理器,提供预加载、播放列表管理等功能。

2.4.1 预加载功能#

预加载事件类型:

2.4.2 权限管理(默认不调用)#

使用示例:

2.5 KtvLoginService 登录服务#

详情见 KtvSDK-登录接入说明

3. 组件关系和调用流程#

3.1 整体架构关系#

登录后
    ↓
PlayerManager.preload (播放管理器)
    ↓
PlayPreLoader (预加载器) → KaraokePlayer (播放器)
                                     ↓
                  KaraokePlayerListener (播放回调)

3.2 标准播放流程#

3.2.1 初始化阶段#

1.
创建播放器
2.
设置监听器

3.2.2 播放阶段#

1.
构建歌曲信息
2.
预加载歌曲
3.
开始播放

3.3 歌曲信息:SongInfoObject#

    public String getMid();          // 歌曲mid 
    public String getOriUrl();       // 歌曲原唱URL
    public String getAccUrl();       // 歌曲消音伴奏URL
    public boolean hasAccUrl();      //是否有伴奏
    public boolean hasOriUrl();      //是否有原唱

    public byte[] mNodeBytes;        // 打分 Note 数据
    public byte[] mQycBytes;         // 加密 QRC 歌词
    public byte[] mLrcBytes;         // 加密 LRC 歌词

    public int isMvHasLyric();       // MV是否带歌词,0表示无歌词,1表示有歌词
    
    pulic getAlbumImage();           //获取歌曲专辑封面图片URL地址
    pulic getMvCoverImage();           //获取MV封面图片
    public getSingerLandscapeBigPicUrls(); //歌手横屏大图
    public getSingerVerticalBigPicUrls();   //歌手竖屏大图

    ....

3.3.1 播放类型SongType#

3.4 播放参数#

起播参数:SongInfoObject.Builder#

播放时禁止MV:setEnableMV(false)
播放公播歌曲(仅点歌机厂商适用):setQueryPublicSong(true)
setOnlinePlayBackupMVFilePath()
设置在线播放时的兜底MV地址,MV文件找产品提供。
KtvSdk视频播放策略
1.
调用KaraokePlayer.play()后,MV开始播放。若歌曲原MV播放失败,则播放兜底视频。
2.
播放兜底视频 -> 检测在线播放还是离线播放 -> 优先用本地的K歌MV,否则用在线配置的兜底MV。
3.
兜底视频播放失败后,粒子动画启用?则进行粒子动画播放。
4.
粒子动画不启用?回调onShowPicture
默认值:空。播放兜底MV时,如果有设置此地址,则播放此地址的内容,否则播放默认线上配置的兜底MV。
注意:只能播放K歌提供的兜底MV!
setOfflinePlayBackupMVFilePath()
设置离线播放时的兜底MV地址,MV文件找产品提供。
默认值:空。播放兜底MV时,如果有设置此地址,则播放此地址的内容,否则播放默认线上配置的兜底MV。
注意:只能播放K歌提供的兜底MV!

全局播放参数:KtvPlayerConfig#

大多数开关都需要在commit()方法之前设置,只能commit一次。
切换播放器类型
exo和mediaplayer都支持,不过我们默认用exo,因为exo的定制性强我们做了很多适配,只有exo播不了的场景才建设手动切mediaplayer。
sdk支持三种播放器选择方式:
DecodeTypeAuto: 自动判断(推荐)
DecodeTypeMediaPlayer:使用MediaPlayer播放
DecodeTypeExoPlayer:使用ExoPlayer播放
推荐使用DecodeTypeAuto,会用上我们积累的一些机型兼容策略。如果兼容有问题,可反馈给K歌,再不行可尝试使用mediaplayer.
打分开关
ksong.support.player.KtvPlayerConfig#setEnableScore(false)   //关闭打分
开启人声加密
人声存储在私有目录,默认不加密,如果有严格的安全需求,可用此开启人声文件加密。
ksong.support.player.KtvPlayerConfig#setEncryptInputAudio()
可用AudioPlaybackPlayer.clearCache()方法清除本地录音播放时的临时文件。
禁止视频播放失败后的撒花动画效果
默认值:true
ksong.support.player.KtvPlayerConfig#setEnableFlowAnimationBackupPlayer(false)
开启缓存文件的md5校验
计算md5会增加起播耗时,除非有碰到缓存文件错误的问题,否则不要开启。
默认值:false。
setEnableCacheFileMd5Check()
设置接口超时时间
//接口连接超时, 默认30s
ksong.support.player.KtvPlayerConfig#setHttpConnectTimeoutMs()
//接口read超时,默认30s
ksong.support.player.KtvPlayerConfig#setHttpReadTimeoutMs()
处理与语音助手冲突:给AudioRecord设置独立的音源(audioSource)
如果要与语音助手同时使用,可以有两种处理方式:
方法一: 给K歌sdk的AudioRecord设置独立的音源(audioSource),语音助手用另外的audioSource。
设置方法ksong.support.player.KtvPlayerConfig#setAudioRecordSource
方法二:自定义声音输入通道,给sdk传递声音。此方法厂商实现复杂,一般不推荐。
设置音频输出参数:streamType(默认AudioManager.STREAM_MUSIC)、AudioContentType、AudioAttributes等
    //Android版本>=Android5.0
    ksong.support.player.KtvPlayerConfig#setAudioAttributes()
    
    //Android版本<Android5.0时设置streamType
    ksong.support.player.KtvPlayerConfig#setStreamType()
设置AudioDeviceInfo
ksong.support.player.KtvPlayerConfig#setPreferredDevice((AudioDeviceInfo deviceInfo)
开启下载限速
可在调用PlayerManager.preload()前设置下载速度限速(KB/s),默认不限速。注意:此方法仅针对离线下载(isOfflineDownload=true)场景生效。起播后,下载限速会自动取消。
ksong.support.player.KtvPlayerConfig#setDownloadSpeedLimit(500)  //限制离线下载速度为500 KB/s

LoopMode(播放列表建议自己做,不推荐设置)#

默认播放类型:DataSourceType#

视频填充模式:VideoScaleType#

默认为FILL_FIT模式:

3.5 设置音频、视频清晰度#

详见文档:切换音视频清晰度

3.6 播放回调KaraokePlayerListener#

3.7 播放错误了怎么办?#

如何查询错误原因
可以过滤sdk的日志来查询常见错误,过滤关键字 onPlayError或onExecuteFail
如果错误日志看不出问题,可咨询K歌开发确定原因。
视频为什么会黑屏,有没有优化方式?
常见原因是视频因设备不支持播放等原因播放失败时,厂商没有实现onShowPicture接口显示大图。
视频播放失败后,此回调会返回一个歌曲封面图url,厂商接收到此回调后,可在KtvVideoLayout上覆盖一个图片控件显示大图兜底。
如果此时没有显示歌词组件,需要接入方主动显示歌词,避免没有MV不显示歌词的问题

4. 重要注意事项#

4.1 播放器使用注意事项#

1.
资源管理
播放下一首前必须调用stop()释放当前资源
页面销毁时必须调用stop()避免内存泄漏
不要对KtvVideoLayout进行多次addView/removeView操作
2.
回调处理
必须实现onShowPicture回调显示封面图,避免视频播放失败时黑屏
onAllResourceDownloadFinished回调后才能进行下一首预加载
onPlayPositionChange用于更新播放进度UI
3.
权限管理
K歌模式需要录音权限 songType == SongType.SONG_TYPE_K_SONG
听歌模式不需要录音权限 songType == SongType.SONG_TYPE_KSONG_LISTEN

4.2 预加载注意事项#

1.
预加载时机
同一时间只能预加载一首歌曲
新的预加载会取消之前的预加载
收到onAllResourceDownloadFinished后才能预加载下一首
不要在UI线程阻塞等待预加载完成,一切通过回调异步处理。
2.
预加载优先级
使用preloadNow()可以设置高优先级
高优先级预加载会取消其他预加载任务

4.3 错误处理#

1.
播放错误
监听onPlayError回调
根据错误类型进行相应处理
2.
网络错误
预加载失败时提供重试机制
弱网环境下适当降低清晰度

4.4 性能优化#

1.
内存管理
及时释放播放器资源
避免内存泄漏
2.
网络优化
合理使用预加载功能
根据网络状况调整清晰
修改于 2025-11-28 03:40:20
上一页
KtvSDK-歌词
下一页
KtvSDK-作品录音、合成与播放2.0版
Built with