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

实时音视频

复制全文
下载 pdf
多人音视频
场景搭建(Android)
复制全文
下载 pdf
场景搭建(Android)

SDK集成

如下是一个总体接入流程,详细细节请参见 RTC服务开通指南

alt

整体实现流程

整体业务流程图

alt

核心功能实现

进入退出房间

时序图

alt

示例代码

/**
 * 初始化并加入房间
 * @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;
    }
}

断线重连

时序图

alt

示例代码

  • 短时间断网
    无需处理。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
设置视频发布参数SetVideoEncoderConfig
开启本地音频采集startAudioCapture
开启本地视频采集startVideoCapture
设置本地视频渲染setLocalVideoCanvas
加入 RTC 房间joinRoom
设置视频渲染视图setRemoteVideoCanvas
离开房间leaveRoom
关闭内部音频采集stopAudioCapture
关闭内部视频采集stopVideoCapture
销毁引擎实例对象destroy
发布本地通过摄像头/麦克风采集的媒体流publishStream
取消发布本地通过摄像头/麦克风采集的媒体流unpublishStream
设置音频播放设备为扬声器或者听筒setAudioRoute
开启音量提示enableAudioPropertiesReport
开启镜像setLocalVideoMirrorType
设置音质档位setAudioProfile
切换视前置/后置摄像头switchCamera

回调

功能点回调
本地进房成功回调onRoomStateChanged
远端可见用户加入房间onUserJoined
最近更新时间:2025.10.16 10:06:07
这个页面对您有帮助吗?
有用
有用
无用
无用