在游戏或 K 歌等实时音视频场景中,为烘托气氛、增添趣味性,用户通常需要播放音乐文件。本文介绍如何在你的项目中实现播放音乐文件功能。
相关函数接口在 android-sdk 2.8.9 及以上版本支持
通过接口 startPlayMusic 播放指定音乐文件和 ID ,并设置播放该文件的参数。若您希望同时播放多首不同的音乐,请为不同的音乐分配不同的 ID 进行播放。
BRTC engine = BRTC.sharedInstance(getApplicationContext()); engine.setDefaultStreamRecvMode(autoRecvAudio, autoRecvVideo); BRTCDef.BRTCParams BRTCParams = new BRTCDef.BRTCParams(String.valueOf(GenerateTestUserSig.SDKAPPID),roomId, localUid, uSig, BRTCDef.BRTCRoleType.BRTCRoleAnchor); engine.enterRoom(BRTCParams); engine.startLocalAudio(BRTCDef.BRTCAudioQuality.BRTCAudioQualitySpeech); //播放音乐文件相关逻辑 Random rd = new Random(); //保证不同音乐文件使用不同的musicId musicId = rd.nextInt(1000); BRTCAudioEffectManager.BRTCAudioMusicParam musicParam = new BRTCAudioEffectManager.BRTCAudioMusicParam(musicId, musicFilePath); //将本地播放的音乐发送到远端 musicParam.publish = true; //正常播放文件,一般文件duration小于5秒认为是小文件 musicParam.isShortFile = false; //短文件,需要循环播放2遍 musicParam.loopCount = 2; //设置指定musicId音乐文件的播放事件监听接口 engine.getAudioEffectManager().setMusicObserver(musicId, musicObserver); //播放指定音乐文件 isMusicPlaying = engine.getAudioEffectManager().startPlayMusic(musicParam); //停止播放指定musicId音乐 engine.getAudioEffectManager().stopPlayMusic(musicId); //暂停播放musicId音乐 engine.getAudioEffectManager().pausePlayMusic(musicId); //恢复播放musicId音乐 engine.getAudioEffectManager().resumePlayMusic(musicId); //设置所有背景音乐的本地播放音量和远端音量为90 engine.getAudioEffectManager().setAllMusicVolume(90); //设置指定musicId音乐的本地播放音量为80 engine.getAudioEffectManager().setMusicPlayoutVolume(musicId, 90); //设置指定musicId音乐的远端音量为90 engine.getAudioEffectManager().setMusicPublishVolume(musicId, 90); //设置指定musicId音乐的音调为0.3,如果不设置,默认为0 engine.getAudioEffectManager().setMusicPitch(musicId, 0.3); //设定背景音乐的播放速度为1.1, 默认为1.0 engine.getAudioEffectManager().setMusicSpeedRate(musicId, 1.1); //设置从音乐文件的40秒处开始播放 engine.getAudioEffectManager().seekMusicToPosInMS(musicId,40*1000);
BRTCAudioEffectManager.BRTCMusicPlayObserver musicObserver = new BRTCAudioEffectManager.BRTCMusicPlayObserver() { //开始播放回调通知 @Override public void onStart(int id, int errCode) { d("Debuglh", "onStart music id: " + id + ", errCode: " + errCode); } //播放进度回调通知 @Override public void onPlayProgress(int id, long curPtsMS, long durationMS) { d(TAG, "onPlayProgress music id: " + id + ", curPtsMS: " + curPtsMS + ", durationMS: " + durationMS); d(TAG, "onPlayProgress music id: " + id + ", GetcurPtsMS: " + engine.getAudioEffectManager().getMusicCurrentPosInMS(musicId) + ", GetDurationMS: " + engine.getAudioEffectManager().getMusicDurationInMS(musicFilePath)); } //音乐播放完毕回调通知 @Override public void onComplete(int id, int errCode) { d(TAG, "onComplete music id: " + id + ", errCode: " + errCode); } };
播放音乐文件
在游戏或 K 歌等实时音视频场景中,为烘托气氛、增添趣味性,用户通常需要播放音乐文件。本文介绍如何在你的项目中实现播放音乐文件功能。
相关函数接口在 android-sdk 2.8.9 及以上版本支持
播放音乐文件
通过接口 startPlayMusic 播放指定音乐文件和 ID ,并设置播放该文件的参数。若您希望同时播放多首不同的音乐,请为不同的音乐分配不同的 ID 进行播放。
音乐播放回调接口实现