Android

DEMO运行指引

1.环境准备:

2.运行项目:


第一次编译 DEMO 项目时,需要下载特定的 gradle套件 及 DEMO 所需要的依赖库,所以请确保开发电脑已经连接到 internet 且能正常访问 https://services.gradle.org

3.部分说明:

SDK获取及集成

1.SDK概述:

2.下载SDK:

3.拷贝SDK:

4.引入SDK:

5.添加权限申明:

6.开始使用:

功能实现文档

多人视频实现流程简述:

  1. SDK初始化
  2. 设置用户登陆参数及登陆
  3. 打开&关闭播放,打开&关闭麦克风,打开&关闭视频
  4. 实现回调
  5. 退出频道&&销毁对象

1.SDK初始化:

  1. create:初始化SDK环境,设置APPID,日志文件谷人云SDK默认写到xRTC目录。
  2. setVideoProfile:设置本地视频流分辨率属性,属性列表在接口文档xRTCProfile中有详细定义。
  3. 具体代码参考DEMO MainActivity,部分关键代码如下:
    public void EngineCreate()
    {
    mEventHandler = new DemoEventImp() ;
    mEventHandler.mSActivity = this ;

    mRTCEngine = xRTCEngine.create( this , "game_card_room", mEventHandler ) ;
    int rc = mRTCEngine.setVideoProfile( xRTCProfile.VIDEO_CAPTURE_TYPE_16X9_160 , mSwap ) ;
    if ( rc < 0 )
    {
    return;
    }
    mRTCEngine.enableAudio() ;
    mRTCEngine.enableVideo() ;
    }

2.设置用户登陆参数及登陆:

  1. joinChannel:参数列表为channelname,roomid,token,userid。注释:token123为测试token。
  2. xRTCVideoCanvas:参数列表为suefaceview,rendertype,userid。注释:rendertype在接口文档xRTCVideoCanvas类中有详细定义,userid为0代表自己。
  3. 具体代码参考demo MainActivity,部分关键代码如下:

    public void onClickStart(View view)
    {
    //在SDK初始化完成以后调用登陆。
    //设置surfaceView
    xRTCVideoCanvas myCanvas = new xRTCVideoCanvas( mMyView, 0, 0 ) ;
    mRTCEngine.setupLocalVideo( myCanvas ) ;
    Random random = new Random( System.nanoTime() );
    long userid = random.nextLong() ;
    if ( userid < 0 )
    {
    userid = -1 * userid ;
    }
    mRTCEngine.joinChannel( null, mRoomID, "token123", userid ) ;
    }
  4. 强烈建议token值应该由服务端传给客户端,不应该写死于客户端中。

3.打开&关闭播放,打开&关闭麦克风,打开&关闭视频:

public xRTCEngine mRTCEngine ;
mRTCEngine.muteLocalVideoStream( true ) ;//true为关闭本地视频采集,false为打开。
mRTCEngine.muteLocalAudioStream( true ) ;//true为关闭本地音频采集,false为打开。
mRTCEngine.muteRemoteVideoStream( userid, true) ;//true为关闭视频播放,false为打开,userid为0代表所有用户。
mRTCEngine.muteRemoteAudioStream( userid, true) ;//true为关闭声音播放,false为打开,userid为0代表所有用户。

4.实现回调:

//实现于MainActivity
public void UserEnter(long uid)
{
if ( mViewList.isEmpty() )
{
mFailList.add( uid ) ;
xRTCLogging.e(TAG, "user enter fail...uid:"+uid ) ;
return ;
}

mEnterUserID = uid ;
SurfaceView user_view = mViewList.remove(0) ;
if ( user_view != null )
{
xRTCVideoCanvas canvas = new xRTCVideoCanvas( user_view, xRTCVideoCanvas.RENDER_TYPE_CROP, uid ) ;
xRTCLogging.e(TAG, "add surfaceview uid:"+uid +" count:"+ mFailList.size() ) ;
mViewMap.put( uid, canvas ) ;
mRTCEngine.setupRemoteVideo(canvas);
}

}

5.退出频道&&销毁对象: