-
Notifications
You must be signed in to change notification settings - Fork 209
v3.x_Audio_Mixer
xiaoxiaochupei edited this page May 25, 2017
·
1 revision
混音功能,主要是针对主播端插上耳机后,背景音乐等无法通过麦克风返采,进而播放端无法听到的问题。
SDK提供混音功能,当前提供以下几种声原混合:
- Mic录制声音
- 播放中的背景音乐
- 画中画声音
开启和关闭混音功能:setEnableAudioMix(boolean)
v3.x 中com.ksy.recordlib.service.util.audio.KSYBgmPlayer
类实现了背景音乐的播放功能,
结合KSYStreamer可以实现背景音乐的播放控制:
-
创建Bgm播放器:
mKsyBgmPlayer = KSYBgmPlayer.getInstance();
-
创建播放器回调,监听播放错误及播放完成事件
private KSYBgmPlayer.OnBgmPlayerListener mBgmListener = new KSYBgmPlayer.OnBgmPlayerListener() { @Override public void onCompleted() { Log.d(TAG, "End of the currently playing music"); } @Override public void onError(int err) { Log.e(TAG, "onMusicError: " + err); } };
- onCompleted回调仅在开启bgm播放时loop参数设为false的情况下会被触发
- onError回调中的错误号包含:
- KSYBgmPlayer.BGM_ERROR_NONE
- KSYBgmPlayer.BGM_ERROR_UNKNOWN
- KSYBgmPlayer.BGM_ERROR_NOT_SUPPORTED
- KSYBgmPlayer.BGM_ERROR_IO
- KSYBgmPlayer.BGM_ERROR_MALFORMED
-
播放控制
/** * 设置播放音量,该音量同时影响推流端的播放音量以及混音音量 * volume: 为0-1范围内的float值 */ public void setVolume(float volume); // 设置静音状态,为true时仅推流端播放静音,混音不受影响 public void setMute(boolean mute); // 获取当前播放进度,单位为毫秒 public long getPosition(); // 获取当前歌曲的总时长,单位为毫秒 public long getDuration(); // 暂停播放 public void pause(); // 恢复播放 public void resume();
-
开启BGM播放及混音:
// 设置BGM播放器 mStreamer.setBgmPlayer(KSYBgmPlayer player); /** * 开始BGM的播放及混音 * path: 本地音乐文件路径,支持mp3, aac等 * loop: 是否单曲循环 */ mStreamer.startMixMusic(String path, boolean loop); // isPlugged为true时内部进行软件混音,为false不会对背景音乐进行混音 mStreamer.setHeadsetPlugged(boolean isPlugged);
-
停止BGM播放及混音
mStreamer.stopMixMusic();
调用示例:
mKsyBgmPlayer = KSYBgmPlayer.getInstance();
mKsyBgmPlayer.setOnBgmPlayerListener(mBgmListener);
mKsyBgmPlayer.setVolume(bgmVolume);
mStreamer.setBgmPlayer(mKsyBgmPlayer);
mStreamer.startMixMusic("/sdcard/test.mp3", true);
mStreamer.setHeadsetPlugged(true);