直播加速
联系电话:(010) 6072 8829
技术QQ群:697918347
English
直播加速API
直播加速API

运行环境

请确保满足以下开发环境要求,规避一些集成中可能出现的问题:

1.具有Android SDK API大于18的版本。
2.具有Android Studio 3.0 或以上版本。
3.具有Android 4.3或以上的模拟器或真机设备。

编译工程

打开Android Studio,通过Import project导入WS_ANDROID_UPAACDemo文件夹内的文件,编译成功后即可运行。

接口说明

初始化SDK

- public static synchronized TTTRtcEngine create(Context mContext, String mAppID, TTTRtcEngineEventHandler mHandler);

初始化TTTRtcEngine为一个单例对象,若要正常使用SDK各项接口,此函数必须执行成功。

参数 描述
mContext Android系统的上下文,需要Application级别。
mAppID 连麦平台分配,用于区分不同的客户和应用,在同一个连麦平台内保证唯一。
mHandler 提供了缺省实现的抽象类,SDK通过该抽象类向使用者报告运行时的各种事件。

设置频道模式

- public abstract int setChannelProfile(int mChannelMode);

设置SDK运行模式,总共有三种模式。上行加速请使用直播模式

模式 参数 描述
通信 CHANNEL_PROFILE_COMMUNICATION 用于一对一或群聊,用户可以自由发言,互看视频。
直播 CHANNEL_PROFILE_LIVE_BROADCASTING 用于直播。
游戏 CHANNEL_PROFILE_GAME_FREE_MODE 用于游戏中语音和视频。

开启视频模式

- public abstract int enableVideo();

可以在加入频道前或者通话中调用.在加入频道前调用,则自动开启视频模式;在通话中调用则由音频模式切换为视频模式。

设置用户角色

- public abstract int setClientRole(int mRole, String mPermissionKey);

mPermissionKey参数暂没实现,传空字符串即可。

角色 Enum参数 描述
主播 CLIENT_ROLE_ANCHOR 仅可用于直播模式下。
副播 CLIENT_ROLE_BROADCASTER 直播模式,角色可以上传音视频。
观众 CLIENT_ROLE_AUDIENCE 观众不能发言,不能上传视频。

设置视频编码属性

- public abstract int setVideoProfile(int mProfile, boolean mSwapWidthAndHeight);

默认设置的档位,是手机模式,即宽小于高。若mSwapWidthAndHeight设置为true则切换为平板模式,即宽大于高。

参数 描述
mProfile mProfile对应一套视频参数,如分辨率、帧率、码率。
mSwapWidthAndHeight 是否交换宽和高,在竖屏采集时需交换宽高。

mProfile参数列表.

视频档位 分辨率 帧率 带宽kbps
TTTRTC_VIDEOPROFILE_120P 160x120 15 65
TTTRTC_VIDEOPROFILE_180P 320x180 15 140
TTTRTC_VIDEOPROFILE_240P 320x240 15 200
TTTRTC_VIDEOPROFILE_360P 640x360 15 400
TTTRTC_VIDEOPROFILE_480P 640x480 15 500
TTTRTC_VIDEOPROFILE_720P 1280x720 15 1130
TTTRTC_VIDEOPROFILE_1080P 1920x1080 15 2080
TTTRTC_VIDEOPROFILE_DEFAULT 640x360 15 400

NOTE:该方法设置视频编码属性 (Profile),每个属性对应一套视频参数,如分辨率、帧率、码率等。当设备的摄像头不支持指定的分辨率时,SDK 会自动选择一个合适的摄像头分辨率,但是编码分辨率仍然用 setVideoProfile() 指定的。该方法仅设置编码器编出的码流属性,可能跟最终显示的属性不一致,例如编码码流分辨率为 640x480,码流的旋转属性为 90 度,则显示出来的分辨率为竖屏模式。

配置旁路直播推流

- public abstract int configPublisher(PublisherConfiguration mConfig);

该方法用于在加入频道前为引擎创建一份推流设置。在你调用本API之前:请确保已联系3T开通旁路直播推流功能。

请确保用户已经调用setClientRole()且已将用户角色设为主播,主播必须在加入频道前调用本API。

config说明:

参数 描述
mPushUrl 合图推流地址。
mBiteRate 旁路直播输出码流的码率,默认设置为500Kbps。

设置服务器地址

- public abstract void setServerIp(String mIP, int mPort);
参数 描述
mIP ip地址或域名。
mPort 端口。

Note:如不需要指定特定的服务器,请不要调用该接口。

设置音频高音质选项

上行加速必须调用该方法

- public abstract int setHighQualityAudioParameters(boolean enable);
参数 描述
enable true启用高音质,false禁用高音质(默认)。

Note:开启高音质,会占用较大的带宽。

加入频道 (joinChannel)

public int joinChannel(   String  channelKey,
                          String  channelName,
                          int     optionalUid );

该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的应用程序是不能互通的。如果已在通话中,用户必须调用 leaveChannel() 退出当前通话,才能进入下一个频道。

名称 描述
channelKey 频道key。
channelName 频道名字。
optionalUid 用户ID。
返回值 0代表方法调用成功,其他代表失败。

离开频道 (leaveChannel)

离开当前频道,当调用 joinChannel方法后,必须调用 leaveChannel() 结束通话,否则无法开始下一次通话。 该方法会把会话相关的所有资源释放掉。在退出频道成功后,SDK 会触发 onLeaveChannel 回调。 java public int leaveChannel();

名称 描述
返回值 0代表方法调用成功,其他代表失败。

开启视频预览 (startPreview)

public int startPreview()

该方法用于启动本地视频预览。在开启预览前,必须先调用 setupLocalVideo 设置预览窗口及属性,且必须调用 enableVideo() 开启视频功能。

名称 描述
返回值 0代表方法调用成功,其他代表失败。

停止视频预览 (stopPreview)

public int stopPreview()

该方法用于停止本地视频预览。

名称 描述
返回值 0代表方法调用成功,其他代表失败。

设置本地视频显示属性 (setupLocalVideo)

public int setupLocalVideo(VideoCanvas local, int activityOrientation)

该方法设置本地视频显示信息。应用程序通过调用此接口绑定本地视频流的显示视窗(view),并设置视频显示模式。 在应用程序开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。 Class VideoCanvas: * mUserID:该视频属性类所属用户ID。 * mShowMode:设置视频显示的模式。 * mSurface:视频显示视窗。

视频显示的模式: * RENDERMODEFIT:如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗。 * RENDERMODEHIDDEN:如果视频尺寸与显示视窗尺寸不一致,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗。 * RENDERMODEADAPTIVE:如果自己和对方都是竖屏,或者如果自己和对方都是横屏,使用RENDERMODEHIDDEN如果对方和自己一个竖屏一个横屏,则使用RENDERMODEFIT。

名称 描述
local 视频显示属性对象。
activityOrientation activity的显示方向。
返回值 0代表方法调用成功,其他代表失败。

切换前置/后置摄像头 (switchCamera)

public int switchCamera()

该方法用于在前置/后置摄像头间切换。

名称 描述
返回值 0代表方法调用成功,其他代表失败。

音频上行加速功能 (setRoomUseUplinkAccelerate)

public int setRoomUseUplinkAccelerate(boolean mIsEnable)

该方法用于是否启用音频上行加速功能。

参数 描述
mIsEnable true启用加速,false禁用加速,默认false

名称 描述
返回值 0代表方法调用成功,其他代表失败。

回调事件 (TTTRtcEngineEventHandler)

TTTRtcEngineEventHandler 接口类用于SDK向应用程序发送回调事件通知,应用程序通过继承该接口类的方法获取 SDK 的事件通知。

加入频道回调 (onJoinChannelSuccess)

void onJoinChannelSuccess(String channel, long uid)

表示客户端已经成功进入指定房间。

名称 描述
channel 频道名称。
uid 登录的用户ID。

发生错误回调 (onError)

void onError(int errorCode)

表示 SDK 运行时出现了(网络或媒体相关的)错误。

名称 描述
errorCode 错误码。
错误码:
名称 错误码 原因描述
ERROR_KICK_BY_HOST 201 被房主移出房间。
ERROR_KICK_BY_PUSHRTMPFAILED 202 RTMP推流失败。
ERROR_KICK_BY_SERVEROVERLOAD 203 服务器过载。
ERROR_KICK_BY_MASTER_EXIT 204 房主已经离开房间。
ERROR_KICK_BY_RELOGIN 205 重复登录。
ERROR_KICK_BY_NOAUDIODATA 206 长时间没有上行音频数据。
ERROR_KICK_BY_NOVIDEODATA 207 长时间没有上行视频数据。
ERROR_KICK_BY_NEWCHAIRENTER 208 其他人以主播身份进入房间。
ERROR_KICK_BY_CHANNELKEYEXPIRED 209 CHANNEL KEY失效了。

离开频道回调 (onLeaveChannel)

public void onLeaveChannel(RtcStats stats)

应用程序调用 leaveChannel() 方法时,SDK 提示应用程序离开频道成功。在该回调方法中,应用程序可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。

名称 描述
stats 通话相关的统计信息

RtcStats:

名称 描述
mTotalDuration 通话时长(秒),累计值。
mTxBytes 发送字节数(bytes), 累计值。
mRxBytes 接收字节数(bytes),累计值。
mTxAudioKBitRate 发送音频码率(kbps),瞬时值。
mTxVideoKBitRate 发送视频码率(kbps),瞬时值。
mRxAudioKBitRate 接受音频码率(kbps),瞬时值。
mRxVideoKBitRate 接受视频码率(kbps),瞬时值。

连接丢失回调 (onConnectionLost)

public void onConnectionLost()

当网络异常断开后,SDK 和服务器失去了网络连接,并开始重连服务器。

连接真正断开回调 (onReconnectServerFailed)

public void onReconnectServerFailed()

当网络异常断开后,在尝试重连后,若在服务器容忍的超时范围外才重连上服务器,服务器将会拒绝,其房间状态将不可用,此时触发该回调
上层应该在收到此回调后退出房间

连接重连成功回调 (onReconnectServerSucceed)

public void onReconnectServerSucceed()

当网络异常断开后,将尝试重连,若重连成功则触发此回调。

本地视频统计回调 (onLocalVideoStats)

public void onLocalVideoStats(LocalVideoStats stats)
名称 描述
stats 本地视频相关的统计信息

报告更新本地视频统计信息,该回调函数每两秒触发一次。