实时音视频RTC

    集成SDK

    准备环境

    本节将介绍如何创建项目,将BRTC SDK集成进你的项目中。

    • Android Studio 3.2 或以上版本,Gradle 4.6或以上版本,编译环境请选择支持java8
    • Android KK(4.4)及以上的设备

    *注:经过验证的开发环境如下:

        ------------------------------------------------------------
        Gradle 4.6
        ------------------------------------------------------------
    
        Groovy: 2.4.12
        Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
        JVM: 1.8.0_192 (Oracle Corporation 25.192-b12)
        OS: Mac OS X 10.13.6 x86_64

    下载SDK

    进入RTC文档中心,点击“下载专区>客户端SDK下载”,即可下载客户端。下载后请校验下载的包md5值与SDK中心里记录的是否一致。

    集成SDK

    创建Android项目,若已有 Android 项目,可以直接集成 SDK
    将SDK包内libbaidurtc.aar 拷贝到项目的libs目录.
    image.png

    添加项目权限

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.baidu.rtc.videoroom">
       
        <uses-feature android:name="android.hardware.camera" />
        <uses-feature android:name="android.hardware.camera.autofocus" />
        <uses-feature android:glEsVersion="0x00020000" android:required="true" />
            
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    ...
    </manifest>

    防止代码混淆

    在 app/proguard-rules.pro 文件中添加如下行,防止代码混淆:

    -keep class com.baidu.** {*;}
    -keep class com.baidu.**
    -keep class org.webrtc.** {*;}
    -keep class org.webrtc.**
    
    -dontwarn com.baidu.rtc.**
    -dontwarn org.webrtc.**
    
    -keep class okhttp3.** { *; }
    -keep interface okhttp3.** { *; }
    -dontwarn okhttp3.**
    
    -keep class okio.** { *; }
    -keep interface okio.** { *; }
    -dontwarn okio.**
    
    -keep class javax.annotation..** {*;}

    项目配置

    在项目的build.gradle中加入如下配置代码, 即可使用。

        android {
            compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_8
                targetCompatibility JavaVersion.VERSION_1_8
            }
        }
    
        implementation 'com.squareup.okhttp3:okhttp:3.5.0'
        implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0'
        implementation(name: 'libbaidurtc', ext: 'aar')

    实现音视频通话

    本节介绍如何实现音视频通话。音视频通话的API调用时序见下图:

    android_diagram.png

    代码示例

    1.在您的开发项目中导入包

        import com.baidu.rtc.BaiduRtcRoom;

    2.定义 rtc room 变量

        private BaiduRtcRoom mVideoRoom

    3.初始化 sdk 并设置代理。初始化的时候要带上上下文环境 context,appid,token 串,并确定是否开启后下载

        mVideoRoom = BaiduRtcRoom.initWithAppID(this,mAppId,mTokenStr, true);
        mVideoRoom.setBaiduRtcRoomDelegate(this);

    4.音视频参数设置:

        RtcParameterSettings cfg = RtcParameterSettings.getDefaultSettings();
        cfg.VideoResolution = mVideoResolution;
        cfg.VideoFps = 30;
        cfg.AutoPublish = true; //default is true.  for mVideoRoom.startPublish() set to false.
        cfg.AutoSubScribe = true; //default is true.  for mVideoRoom.subscribeStreaming() set to false. 
        mVideoRoom.setParamSettings(cfg,RtcParameterSettings.RtcParamSettingType.RTC_PARAM_SETTINGS_ALL);
    1. 视频显示view设置
        mVideoRoom.setLocalDisplay((RTCVideoView) findViewById(R.id.local_rtc_video_view));
        //单人模式:
        mVideoRoom.setRemoteDisplay((RTCVideoView) findViewById(R.id.remote_rtc_video_view));
        //多人模式:
        RTCVideoView[] vg = new RTCVideoView[5];
        vg[0] = (RTCVideoView) findViewById(R.id.remote_rtc_video_view);
        vg[1] = (RTCVideoView) findViewById(R.id.remote_rtc_video_view1);
        vg[2] = (RTCVideoView) findViewById(R.id.remote_rtc_video_view2);
        vg[3] = (RTCVideoView) findViewById(R.id.remote_rtc_video_view3);
        vg[4] = (RTCVideoView) findViewById(R.id.remote_rtc_video_view4);
        mVideoRoom.setRemoteDisplayGroup(vg);
    1. 登录房间
        mVideoRoom.loginRtcRoomWithRoomName(mRoomName,java.lang.Long.parseLong(mUserId),mUserName);                      
    1. 登出房间,结束音视频通话
        mVideoRoom.logoutRtcRoom();
        mVideoRoom.destroy();   
    上一篇
    概述
    下一篇
    API