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

实时音视频

复制全文
下载 pdf
多人音视频
场景搭建(Android)
复制全文
下载 pdf
场景搭建(Android)
SDK集成​
如下是一个总体接入流程,详细细节请参见 RTC服务开通指南。​
​Image​​
整体实现流程​
整体业务流程图​
​Image​​
核心功能实现​
进入退出房间​
时序图​
​Image​​
示例代码​
​
/**​
* 初始化并加入房间​
* @param appId 应用申请的appId​
* @param roomId 要加入的RTC房间​
* @param userId 用户的UserId​
* @param userName 用户的UserName​
* @param token 要加入RTC房间对应的Token​
*/​
public void initAndJoinRoom(String appId, String roomId, String userId, String userName,​
String token) {​
// 创建RTC引擎对象​
mRTCVideo = RTCVideo.createRTCVideo(applicationContext, appId,​
mIRTCEngineEventHandler, null, null);​
// 创建RTC Room对象​
mRTCRoom = mRTCVideo.createRTCRoom(roomId);​
mRTCRoom.setRTCRoomEventHandler(mRTCRoomEventHandler);​
// 开启音频采集​
mRTCVideo.startAudioCapture();​
// 根据设置开启/关闭视频采集​
if (mIsCameraOn) {​
mRTCVideo.startVideoCapture();​
} else {​
mRTCVideo.stopVideoCapture();​
}​
// 根据设置开启/关闭音频推送​
if (mIsAudioMute) {​
mRTCRoom.unpublishStream(MediaStreamType.RTC_MEDIA_STREAM_TYPE_AUDIO);​
} else {​
mRTCRoom.publishStream(MediaStreamType.RTC_MEDIA_STREAM_TYPE_AUDIO);​
}​
// 根据设置选择音频路由模式,扬声器/听筒​
mRTCVideo.setDefaultAudioRoute(mIsSpeakerphone​
? AudioRoute.AUDIO_ROUTE_SPEAKERPHONE​
: AudioRoute.AUDIO_ROUTE_EARPIECE); ​
// 启用音频信息提示,回调周期 1000ms​
mRTCVideo.enableAudioPropertiesReport(new AudioPropertiesConfig(1000,true,false));​
// 加入RTC房间,开启自动发布和订阅​
RTCRoomConfig roomConfig = new RTCRoomConfig(ChannelProfile.CHANNEL_PROFILE_COMMUNICATION,​
true, true, true);​
mRTCRoom.joinRoom(token, userIdNameToUserInfo(userId, userName), roomConfig);​
}​
​
/**​
* 组装RTC的userInfo​
* 用户昵称使用json格式记录在extraInfo里面,其他用户可以在 onUserJoined 回调中解析出来​
* ​
* @param userId 用户id​
* @param userName 用户昵称​
* @return userinfo​
*/​
private UserInfo userIdNameToUserInfo(String userId, String userName) {​
VideoCallUserInfo userInfo = new VideoCallUserInfo();​
userInfo.userId = userId;​
userInfo.userName = userName;​
String extra = GsonUtils.gson().toJson(userInfo);​
return new UserInfo(userId, extra);​
}​
​
/**​
* 用户数据模型​
*/​
public class VideoCallUserInfo {​
// 用户昵称​
@SerializedName("user_name")​
public String userName;​
// 用户id​
@SerializedName("user_id")​
public String userId;​
}​
​
​
public void leaveRoom() {​
if (mRTCVideo != null) {​
// 停止音频采集​
mRTCVideo.stopAudioCapture();​
}​
if (mRTCRoom != null) {​
//离开频道​
mRTCRoom.leaveRoom();​
mRTCRoom.destroy();​
mRTCRoom = null;​
}​
}​
​
断线重连​
时序图​
​Image​​
示例代码​
  • 短时间断网​
  • 无需处理。RTC SDK 会补发断网期间丢失的消息。​
  • 例如:本地用户网络从 WIFI 切换到 5G,在网络切换中有远端用户加入房间。当本地用户网络切换成功后,就会收到 RTC SDK -onUserJoined 回调。​
  • 长时间断网,时序图和关键代码如下:​
​
/**​
* 房间状态改变回调,加入房间、离开房间、发生房间相关的警告或错误时会收到此回调。​
* @param roomId 房间id​
* @param uid 用户id​
* @param state 房间状态码​
* @param extraInfo 额外信息​
*/​
@Override​
public void onRoomStateChanged(String roomId, String uid, int state, String extraInfo) {​
super.onRoomStateChanged(roomId, uid, state, extraInfo);​
int joinType = getJoinType(extraInfo);​
if (joinType == 1 && state == 0) {​
SolutionDemoEventManager.post(new NetworkTypeChangedEvent(true));​
}​
}​
​
/**​
* 获取加入房间类型​
* @param extraInfo 额外信息​
* @return 加入房间类型​
*/​
private int getJoinType(String extraInfo) {​
int joinType = -1;​
try {​
// 341后 SDK传的固定键 joinType表示加入房间的类型,0为首次进房,1为重连进房。​
JSONObject json = new JSONObject(extraInfo);​
joinType = json.getInt("join_type");​
} catch (Exception e) {​
e.printStackTrace();​
}​
return joinType;​
}​
​
屏幕共享​
屏幕共享参看Android 端屏幕共享​
核心功能 API 与回调参考​
API​
​
​
功能点​
API​
创建 ByteRTCVideo 实例​
createRTCVideo​
设置视频发布参数​
开启本地音频采集​
开启本地视频采集​
设置本地视频渲染​
加入 RTC 房间​
设置视频渲染视图​
离开房间​
leaveRoom​
关闭内部音频采集​
关闭内部视频采集​
销毁引擎实例对象​
destroy​
发布本地通过摄像头/麦克风采集的媒体流​
publishStream​
取消发布本地通过摄像头/麦克风采集的媒体流​
unpublishStream​
设置音频播放设备为扬声器或者听筒​
开启音量提示​
开启镜像​
设置音质档位​
切换视前置/后置摄像头​
​
回调​
​
​
功能点​
回调​
本地进房成功回调​
远端可见用户加入房间​
​
​
最近更新时间:2026.09.22 14:41:51
这个页面对您有帮助吗?
有用
有用
无用
无用