摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。
通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。
集成URTC SDK之前,需要在UCLOUD官网控制台创建URTC应用。
在UCLOUD官网,【登录控制台】。
使用URTC服务之前,首先需要注册账号 并且完成 实名认证 。
每个账号最大支持创建5个URTC应用,需要创建更多URTC应用,请联系客户经理增加配额。
可以通过2种方法:控制台、API创建URTC应用。
通过 创建URTC 应用的API,也可以创建URTC应用。具体调用API的方法,请查看API文档。
ucloudrtclib
开头加版本号加一串8位识别码,可以参考github上的接入demo。lib
目录下,然后添加到lib
中,修改要使用sdk模块目录下build.gradle
,确保已经添加了如下依赖,如下所示: dependencies {
implementation (name: ucloudrtclib_1.0.1_b52bc04c, ext: aar)
-keep class com.ucloudrtclib.sdkengine.**{*;}
-keep class com.ucloudrtclib.sdkengine.define.*{*;}
-keep enum com.ucloudrtclib.sdkengine.define.*{*;}
-keepclassmembers class com.ucloudrtclib.sdkengine.UCloudRtcSdkEnv {
public static ;
}
-keepclassmembers interface com.ucloudrtclib.sdkengine.UCloudRtcSdkEngine {
public ;
public static ;
}
-keep class org.webrtc.** {
*;
}
在 Android 6.0 (API 23)开始,用户需要在应用运行时授予权限,而不是在应用安装时授予,并分为正常权限和危险权限两种类型。
在实时音视频SDK 中,用户需要在进入音视频通话房间前动态申请 CAMERA
、RECORD\_AUDIO
、WRITE\_EXTERNAL\_STORAGE
权限,具体可以参考Android官方文档。
主要配置android context sdkmode
以及AppID
,测试用的SEC\_KEY
,日志等级。
public class UCloudRtcApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate: " + this);
if (TextUtils.equals(getCurrentProcessName(this), getPackageName())) {
init();//判断成功后才执行初始化代码
}
}
private void init(){
sContext = this;
//初始化sdk环境
UCloudRtcSdkEnv.initEnv(getApplicationContext());
//打印日志到logcat
UCloudRtcSdkEnv.setWriteToLogCat(true);
//开启log上报
UCloudRtcSdkEnv.setLogReport(true);
//设置log级别
UCloudRtcSdkEnv.setLogLevel(UCloudRtcSdkLogLevel.UCLOUD_RTC_SDK_LogLevelInfo);
//设置sdk模式(测试模式)
UCloudRtcSdkEnv.setSdkMode(UCloudRtcSdkMode.UCLOUD_RTC_SDK_MODE_TRIVAL);
//重连次数
UCloudRtcSdkEnv.setReConnectTimes(60);
//设置测试模式的用户私有秘钥
UCloudRtcSdkEnv.setTokenSeckey(CommonUtils.SEC_KEY);
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(outMetrics);
CommonUtils.mItemWidth = (outMetrics.widthPixels - UiHelper.dipToPx(this, 15)) / 3;
CommonUtils.mItemHeight = CommonUtils.mItemWidth;
//初始化bugly日志
CrashReport.initCrashReport(getApplicationContext(), "9a51ae062a", true);
}
}
UCloudRtcSdkEventListener
实现事件处理UCloudRtcSdkEventListener eventListener = new UCloudRtcSdkEventListener() {
@Override
public void onServerDisconnect() {
runOnUiThread(new Runnable() {
@Override
public void run() {
ToastUtils.shortShow(RoomActivity.this, " 服务器已断开");
stopTimeShow();
onMediaServerDisconnect() ;
}
});
}
@Override
public void onJoinRoomResult(int code, String msg, String roomid) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (code == 0) {
ToastUtils.shortShow(RoomActivity.this, " 加入房间成功");
startTimeShow();
}else {
ToastUtils.shortShow(RoomActivity.this, " 加入房间失败 "+
code +" errmsg "+ msg);
Intent intent = new Intent(RoomActivity.this, ConnectActivity.class);
onMediaServerDisconnect() ;
startActivity(intent) ;
finish();
}
}
});
}
sdkEngine.setAudioOnlyMode(true) ;
// 设置纯音频模式
sdkEngine.configLocalCameraPublish(false) ;
// 设置摄像头是否发布
sdkEngine.configLocalAudioPublish(true) ;
// 设置音频是否发布,用于让sdk判断自动发布的媒体类型
sdkEngine.configLocalScreenPublish(false) ;
// 设置桌面是否发布,作用同上
sdkEngine.setClassType(UCloudRtcSdkRoomType.UCLOUD_RTC_SDK_ROOM_SMALL) ;
// 设置房间类型,有两种 实时会议(小班课) 和互动直播(大班课)类型可选 ,默认为实时会议(小班课)
sdkEngine.setStreamRole(URTCSdkStreamRole.URTC_SDK_STREAM_ROLE_BOTH);
// 如果是互动直播(大班课)模式,需要设置用户权限:仅上行发布、仅下行订阅、双向发布订阅权限;实时会议(小班课)会忽略这个配置
sdkEngine.setAutoPublish(true) ;
// 是否自动发布
sdkEngine.setAutoSubscribe(true) ;
// 是否自动订阅
sdkEngine.setVideoProfile(UCloudRtcSdkVideoProfile.matchValue(mVideoProfile)) ;
// 摄像头输出等级
UCloudRtcSdkAuthInfo info = new UCloudRtcSdkAuthInfo();
info.setAppId(mAppid);
info.setToken(mRoomToken);
info.setRoomId(mRoomid);
info.setUId(mUserid);
Log.d(TAG, " roomtoken = " + mRoomToken);
sdkEngine.joinChannel(info);
sdkEngine.setAutoPublish(mPublishMode == CommonUtils.AUTO_MODE ? true : false);
sdkEngine
引擎的publish
接口 配置手动/自动发布。sdkEngine.publish(UCloudRtcSdkMediaType mtype, boolean hasvideo, boolean hasaudio)
//回调事件
public void onLocalPublish(int code, String msg, UCloudRtcSdkStreamInfo info
现在的类型包括两大类,需要传入publish
接口的mtype
,hasvideo
,hasaudio
参数各不相同,混合类型是单一类型的组合,具体代码可参阅urtcdemo的RoomActvity
中的处理。
在onLocalPublish
回调成功后,在函数中可以调用视频渲染。
localrenderview.setBackgroundColor(Color.TRANSPARENT);
sdkEngine.startPreview(info.getmMediatype(), localrenderview);
//不想渲染时可以调用停止渲染接口
sdkEngine.stopPreview(UCloudRtcSdkMediaType mediatype
sdkEngine.unPublish(UCloudRtcSdkMediaType mtype)
//回调事件
public void onLocalUnPublish(int code, String msg, UCloudRtcSdkStreamInfo info
如果配置了自动订阅无需调用订阅视频接口,SDK会在用户成功加入房间后查看房间已有的可以订阅的流并进行逐一订阅,当有新用户加入房间时也会自动订阅他推的流。
如果配置了手动订阅需要调用sdkEngine引擎的subscribe接口。
sdkEngine.setAutoSubscribe(mScribeMode == CommonUtils.AUTO_MODE ? true : false);
sdkEngine.subscribe(UCloudRtcSdkStreamInfo info)
//回调事件
public void onSubscribeResult(int code, String msg, UCloudRtcSdkStreamInfo info
在onSubscribeResult回调成功后,再函数中可以调用视频渲染。
sdkEngine. startRemoteView(UCloudRtcSdkStreamInfo info, UCloudRtcSdkSurfaceVideoView renderview)
//不想渲染时可以调用定制渲染接口
sdkEngine.stopPreview(UCloudRtcSdkMediaType mediatype
sdkEngine. subscribe(UCloudRtcSdkStreamInfo info)
//回调事件
public void onUnSubscribeResult(int code, String msg, UCloudRtcSdkStreamInfo info)
权限分为发布,订阅,全部权限,全部权限包括了发布和订阅。
//接口
public int setStreamRole(UCloudRtcSdkStreamRole role)
//调用
sdkEngine.setStreamRole(mRole);
sdkEngine.leaveChannel() ;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125831.html
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC SDK之前,需要在UCLOUD官...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。推流成功后,即可直播观看视频。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC S...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。初始化建议在初始化的同时,初始化。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。集成之前,需要在官网控制台创建应用。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URT...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成,可以快速实现实时音视频通话。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成UR...
阅读 3473·2023-04-25 20:09
阅读 3684·2022-06-28 19:00
阅读 2994·2022-06-28 19:00
阅读 2995·2022-06-28 19:00
阅读 3048·2022-06-28 19:00
阅读 2834·2022-06-28 19:00
阅读 2969·2022-06-28 19:00
阅读 2578·2022-06-28 19:00