You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
语音聊天室
场景搭建(Android)
复制全文
下载 pdf
场景搭建(Android)
SDK集成​
如下是一个总体接入流程,详细细节请参见 RTC服务开通指南​
​Image​​
整体实现流程​
整体业务流程图​
​Image​​
  • 房主可以邀请观众上麦、下麦嘉宾、封锁麦位。​
  • 房主可以播放背景音乐、修改音乐音量、人声音量。​
  • 房主可以开关观众连线申请开关。开启开关后,观众申请上麦需要房主同意。​
  • 观众可以申请上麦、下麦。​
核心功能实现​
创建/加入房间模块​
时序图​
​Image​​
示例代码​
​
public void joinRoom(String roomId, String token, String userId, boolean isHost) {​
// 初始化 RTCVideo 对象​
mRTCVideo = RTCVideo.createRTCVideo(applicationContext, appId,​
mRTCVideoEventHandler, null, null);​
​
// 初始化 RTCRoom 对象​
mRTCRoom = mRTCVideo.createRTCRoom(roomId);​
mRTCRoom.setRTCRoomEventHandler(mRTCRoomEventHandler);​
​
// 主播开启麦克风采集,观众关闭麦克风采集​
if (isHost) {​
mRTCVideo.startAudioCapture();​
} else {​
mRTCVideo.stopAudioCapture();​
}​
​
// 设置音频路由模式​
mRTCVideo.setDefaultAudioRoute(AudioRoute.AUDIO_ROUTE_SPEAKERPHONE);​
​
// 开启发言者音量监听​
AudioPropertiesConfig config = new AudioPropertiesConfig(300);​
mRTCVideo.enableAudioPropertiesReport(config);​
​
// 设置主播为可见状态,设置观众为隐身状态​
mRTCRoom.setUserVisibility(isHost);​
​
// 加入房间,开始连麦需要申请AppId和Token​
UserInfo userInfo = new UserInfo(userId, null);​
// 为了保证更好的语音聊天体验,profile 建议设置为 CHANNEL_PROFILE_CHAT_ROOM​
RTCRoomConfig roomConfig = new RTCRoomConfig(ChannelProfile.CHANNEL_PROFILE_CHAT_ROOM,​
true, true, false);​
mRTCRoom.joinRoom(token, userInfo, roomConfig);​
}​
​
​
private final IRTCRoomEventHandler mRTCRoomEventHandler = new IRTCRoomEventHandler() {​
​
/**​
* 收到 RTC 加入房间结果​
*/​
@Override​
public void onRoomStateChanged(String roomId, String uid, int state, String extraInfo) {​
super.onRoomStateChanged(roomId, uid, state, extraInfo);​
}​
​
};​
​
private final IRTCVideoEventHandler mRTCVideoEventHandler = new IRTCVideoEventHandler() {​
​
/**​
* 本地用户音量回调 ​
* ​
* @param audioPropertiesInfos 本地音频信息​
*/​
@Override​
public void onLocalAudioPropertiesReport(LocalAudioPropertiesInfo[] audioPropertiesInfos) {​
super.onLocalAudioPropertiesReport(audioPropertiesInfos);​
}​
​
/**​
* 远端用户音量回调​
*​
* @param audioPropertiesInfos 远端音频信息,其中包含音频流属性、房间 ID、用户 ID​
* @param totalRemoteVolume 订阅的所有远端流混音后的总音量​
*/​
@Override​
public void onRemoteAudioPropertiesReport(RemoteAudioPropertiesInfo[] audioPropertiesInfos, int totalRemoteVolume) {​
super.onRemoteAudioPropertiesReport(audioPropertiesInfos, totalRemoteVolume);​
}​
}​
​
高音质​
如果有高音质需求,请联系技术支持或提交工单。​
上麦模块​
时序图​
​Image​​
示例代码​
​
// 观众上麦/下麦​
public void makeCoHost(boolean isCoHost) {​
if (isCoHost) {​
mRTCVideo.startAudioCapture();​
mRTCRoom.setUserVisibility(true);​
mRTCRoom.publishStream(MediaStreamType.RTC_MEDIA_STREAM_TYPE_AUDIO);​
} else {​
mRTCVideo.stopAudioCapture();​
mRTCRoom.setUserVisibility(false);​
mRTCRoom.unpublishStream(MediaStreamType.RTC_MEDIA_STREAM_TYPE_AUDIO);​
}​
}​
​
背景音乐​
时序图​
​Image​​
示例代码​
​
/**​
* 设置背景音乐​
* @param filePath 混音文件路径​
*/​
public void startBackgroundMusic(String filePath) {​
// 获取 IMediaPlayer 对象​
IMediaPlayer player = mRTCVideo.getMediaPlayer(0);​
// 开启混音播放​
player.open(filePath,new MediaPlayerConfig(AUDIO_MIXING_TYPE_PLAYOUT_AND_PUBLISH, -1));​
}​
​
/**​
* 设置音频采集音量​
* @param volume 采集的音量值和原始音量的比值。范围为 `[0, 400]`,建议范围是 `[0, 100]`。​
*/​
public void setRecordingVolume(int volume) {​
// 设置麦克风采集音量​
mRTCVideo.setCaptureVolume(StreamIndex.STREAM_INDEX_MAIN, volume);​
}​
​
/**​
* 设置混音音量​
* @param volume 混音音量相对原音量的比值。范围为 `[0, 400]`,建议范围是 `[0, 100]`。​
*/​
public void setMusicVolume(int volume) {​
// 获取 IMediaPlayer 对象​
IMediaPlayer player = mRTCVideo.getMediaPlayer(0);​
player.setVolume(progress,AUDIO_MIXING_TYPE_PLAYOUT_AND_PUBLISH);​
}​
​
核心功能 API 与回调参考​
API​
​
​
技术逻辑​
API​
创建 ByteRTCVideo 实例​
createRTCVideo​
创建 ByteRTCRoom 实例​
开启麦克风采集​
关闭麦克风采集​
设置音频路由模式​
开启发言者音量监听​
设置用户可见性​
加入 RTC 房间​
离开 RTC 房间​
leaveRoom​
销毁房间对象​
混音管理接口创建​
开启混音播放​
open​
设置混音音量​
设置麦克风采集音量​
​
回调​
​
​
技术逻辑​
CallBack​
本地用户加入 RTC 回调​
远端用户加入 RTC 回调​
本地用户音量回调​
远端用户音量回调​
​
​
最近更新时间:2026.09.22 14:41:50
这个页面对您有帮助吗?
有用
有用
无用
无用