//打开音频保存
KtvPlayerConfig.getInstance().enableSavePcm = trueKaraokePlayerCallback#onPlayEnd回调,当playFinish参数的值为true时,会回调人声与伴奏播放地址。人声文件为pcm.M4aSaver类中所有错误码的说明: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();
}
});| 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) | 设置播放监听 |
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);
}