全民K歌IOT开放平台
  1. KtvSDK3.0接入说明
全民K歌IOT开放平台
  • 厂商合作流程
  • 快速接入K歌开放平台流程
  • SDK bug提单规范
  • 如何在线调试接口
  • 常见问题FAQ
  • 开放平台API错误码说明
  • 开放平台接入指南
    • 登录鉴权方式介绍V2(推荐)
    • 如何申请接入
    • CDK权限申请流程
    • 暗账号绑定明账号对接文档
    • 获取应用级token
    • 获取登录二维码
    • 查询二维码的状态
    • 获取用户级token
    • 刷新用户级token
    • 暗账号解绑K歌uid
    • 获取暗账号绑定信息
  • KtvSDK3.0接入说明
    • 厂商合作流程
    • bug提单规范
    • KtvSDK-接入指南
    • KtvSDK-打分
    • KtvSDK-登录
    • KtvSDK-歌词
    • KtvSDK-播放
    • 多屏一起唱---歌词与打分适配
    • 3.0新打分样式及五维打分
    • KtvSDK-多屏渲染
    • KtvSDK-2.0升级到3.0版本迁移指南
    • KtvSDK-3.0版本新功能
    • KtvSDK-Android4.4设备G2证书兼容处理
    • KtvSDK-播放页实现示例
    • KtvSDK-常见问题FAQ
    • KtvSDK-低性能设备处理
    • KtvSDK-反馈
    • KtvSDK-缓存管理
    • KtvSDK-切换音频视频清晰度
    • KtvSDK-跳过前奏
    • Ktv支付-米大师支付
    • 播放失败错误码说明
    • 作品录音、合成与播放2.0版
  • 基础类
    • tagId对照表
    • 歌曲详情
    • 查询mv的播放地址
    • 搜索
    • 搜索联想
    • 查询歌手歌曲
    • 获取歌曲歌词文件
    • Q音歌曲mid映射K歌
    • 短剧播放链接
    • 查询应用限免配置
    • 转换Q音或酷狗歌曲ID
  • 运营类
    • 排行榜id说明
    • 获取城市id列表
    • 获取专题分类列表
    • 获取云端配置
    • 热门ugc
    • 热搜词
    • 排行榜
    • 获取专题下歌曲信息
    • 获取车联渠道映射
    • 热门推荐
    • (新)排行榜
    • 综合歌单列表查询
    • 设置缓存设备
    • TV版分类歌单列表
    • 获取用户协议
    • 综合歌单列表查询(海外)
    • 榜单列表查询(海外)
    • 自建歌单列表查询(海外)
    • 获取广告配置
    • 拉取短剧合集的列表
  • 用户类
    • 用户信息查询
    • 删除用户UGC作品
    • 获取推荐/翻唱作品
    • 获取同城作品
    • 用户作品列表
    • 获取好友作品
    • UGC作品详情
    • 更改作品访问权限
    • 用户个推歌单
  • 支付类
    • 支付接入流程
    • 订单发货使用简述
    • 开通设备会员限免简述
    • 订单发货中通用sign计算规则
    • 通用返回结构
    • 【CDK】CDK兑换
    • 【CDK】生成CDK
    • 【CDK】CDK召回
    • 【CDK】CDK状态查询
    • 【三方支付】订单发货
    • 【三方支付】手机号发货
    • 【三方支付】订单状态查询
    • 【米大师支付】获取会员商品列表
    • 【米大师支付】未登录-查询会员商品列表
    • 【米大师支付】支付下单
    • 【米大师支付】支付成功通知
    • 【米大师支付】查询用户支付成功订单记录
    • 查询设备以及用户是否有赠送资格
    • 查询设备限免剩余时长
    • 设备会员迁移
    • 查询会员赠送时长
    • 同步支付订单接口
    • 【三方支付】存量会员迁移领取查询
    • 【三方支付】存量会员迁移接口
    • 授权设备体验会员
    • 查询用户会员信息
    • 【三方支付】超会发货
    • 取消授权设备体验会员
  • 用户作品-文件类
    • callback_url说明
    • 上传音频源文件
    • (服务端)上传音频作品的链接
  • 通用类
    • 【厂商定制】匹配搜索
    • 获取kg的短链接
  1. KtvSDK3.0接入说明

作品录音、合成与播放2.0版

sdk中的音频格式#

sdk中的音频格式是固定的。
声音输入:采样率:44100,通道数:2,audioFormat:ENCODING_PCM_16BIT
sdk内置实现:AudioRecorderReceiver
声音输出:采样率:44100,通道数:2,audioFormat:ENCODING_PCM_16BIT
sdk内置实现:AudioTrackDevice

保存录音#

进行如下设置:
1.
播放时sdk在K歌模式(SongType.SONG_TYPE_K_SONG)模式下
2.
以下设置在播放前已打开:
//打开音频保存
KtvPlayerConfig.getInstance().enableSavePcm = true
3.
歌曲播放到末尾后,接收KaraokePlayerCallback#onPlayEnd回调,当playFinish参数的值为true时,会回调人声与伴奏播放地址。人声文件为pcm.
demo中有示例。

录音回放与音效#

KaraokePlayer用于K歌、听歌、ugc播放场景,绝大情况下都使用它。
唯一只有本地作品播放、编辑回放场景,需要用到AudioPlaybackPlayer

M4aSaver说明#

M4aSaver用于作品合成。
构造方法:public M4aSaver(@NonNull String dstFilePath, @NonNull PcmSource source, AudioEncodeConfig config, boolean hardCodec)
dstFilePath:保存路径
source: 上面提到的合成数据源KaraokeSource
config: 合成参数,固定传:AudioEncodeConfig.getDefaultConfig()
hardCodec:是否使用硬编码器,推荐传false,用sdk自带的软编码器合成m4a文件
以下是M4aSaver类中所有错误码的说明:
源文件不存在:-11
源文件IO异常:-13
编码过程中IO异常:-14
AAC编码失败:-15
示例代码;
M4aSaver saver = new M4aSaver(saveFile, source, AudioEncodeConfig.getDefaultConfig(), false);
            saver.setOnEncodingListener(new M4aSaver.OnEncodingListener() {
                @Override
                public void onProgressUpdate(int position, int length) {
                    int progress = (int) (position / (float) length * 100);
                    showText("作品合成中 " + progress + "%");
                }

                @Override
                public void onComplete(String m4aFile) {
                    Log.d(TAG, "onComplete m4aFile:" + m4aFile);
                    mM4aPath = m4aFile;
                    long end = SystemClock.uptimeMillis();
                    Log.e(TAG, "onComplete Time:" + (end - start));
                    showText("合成完成,耗时 " + (end - start) + " ms");
                }

                @Override
                public void onError(int ret) {
                    Log.e(TAG, "onError ret:" + ret);
                    showText("合成失败 " + ret);
                    saver.stopEncode();
                }
            });

AudioPlaybackPlayer#

api功能描述
void prepare(boolean loop)播放初始化,loop: 是否循环播放
void prepare(AudioPlaybackParams)播放初始化,可以定制AudioAttributes、streamType、AudioContentType等
void seek(int pos)seek
void pause()暂停
void resume()恢复播放
void play(PcmSource source)播放指定类型资源
void stop()停止播放
void release()释放播放资源
void setAudioPlayListener(AudioPlayListener listener)设置播放监听

KaraokeSource#

public KaraokeSource(String accPcm, String acaPcm) throws FileNotFoundException
@param accPcm 伴奏PCM
@param acaPcm 人声PCM
public long length() throws IOException
@description 长度
public int read(byte[] b) throws IOException
@param 读取内容数组
public void seek(long pos) throws IOException
@param pos seek 位置
public void close() throws IOException
@description 关闭 source
public long getCurrentPointer() throws IOException
@description 当前流的位置
public void setPitch(@IntRange(from = PitchShift.MIN_SHIFT, to = PitchShift.MAX_SHIFT) int offset)
@description 设置升降调
@param offset 调音值 范围 (from = PitchShift.MIN_SHIFT, to = PitchShift.MAX_SHIFT)
public void setReverbId(@ReverbID int type)
@description 设置音效
@param type 音效类型,见下方说明
public void setMixConfig(
@FloatRange(from = 0.0f, to = 1.0f) float leftVol,
@FloatRange(from = 0.0f, to = 1.0f) float rightVol,
@IntRange(from = -5000, to = 5000) int rightDelay)
@description 混音配置
@param leftVol 伴奏音量 (from = 0.0f, to = 1.0f)
@param rightVol 人声音量 (from = 0.0f, to = 1.0f)
@param rightDelay 人声对齐 (from = -5000, to = 5000)
sdk的默认人声偏移(rightDelay)是0,调节单位是ms。集成方需要根据不同机器/不同麦克风/体感等等情况,重设这个人声偏移保证人声对齐。所以需要在作品合成页中,让用户可手动调节人声对齐值。
全民K歌APP的作品合成页界面如下:
drawing

音效类型#

ReverbID的类型如下:
        AudioEffectConstant.IReverbID.Reverb2TypeKtv,       //客厅
        AudioEffectConstant.IReverbID.Reverb2TypeMagnetic,  //磁性
        AudioEffectConstant.IReverbID.Reverb2TypeDizzy,     //3d迷幻
        AudioEffectConstant.IReverbID.Reverb2TypeNone,      //录音棚
        AudioEffectConstant.IReverbID.Reverb2TypeRoom,      //琴房
        AudioEffectConstant.IReverbID.Reverb2TypePhonograph,//老唱片
        AudioEffectConstant.IReverbID.Reverb2TypeEthereal,  //空灵
        AudioEffectConstant.IReverbID.Reverb2TypeChurch,    //教堂

播放监听#

public interface AudioPlaybackListener {

    /**
     * 播放开始
     */
    void onStart();

    /**
     * 播放进度回调
     * @param currentTime 当前播放时间
     * @param duration 播放时长
     */
    void onProcess(long currentTime, long duration);

    /**
     * 播放结束
     */
    void onStop();

    /**
     * 播放时发生错误
     */
    void onError(String message);
}
使用karaokePlayer播放UGC作品
AudioPlaybackPlayer用于合成作品前的试听与合成参数调整。
当作品合成完成后,可将作品上传到K歌后台,后续就可用KaraokePlayer播放此音频作品。
通过KaraokePlayer进行播放,可以在播放用户作品时songInfoObject 设置builder.setPlayType(SongType.SONG_TYPE_UGC_SONG),K歌不需要设置
歌词显示:与正常播放K歌歌曲一样,添加lyricView,初始化歌词数据以及传入当前播放进度的回调即可,参照接入指南,第四部分 “歌词 LyricView”

注意事项#

*作品合成只支持在单线程串行处理
修改于 2025-09-01 07:13:48
上一页
播放失败错误码说明
下一页
tagId对照表
Built with