摘要:通過集成,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會議直播等多種業(yè)務(wù)場景。使用服務(wù)之前,首先需要注冊賬號并且完成實(shí)名認(rèn)證。確定后,自動生成。
通過集成URTC SDK,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會議、直播等多種業(yè)務(wù)場景。
集成URTC SDK之前,需要在UCLOUD官網(wǎng)控制臺創(chuàng)建URTC應(yīng)用。
在UCLOUD官網(wǎng),【登錄控制臺】。
使用URTC服務(wù)之前,首先需要注冊賬號 并且完成 實(shí)名認(rèn)證 。
每個賬號最大支持創(chuàng)建5個URTC應(yīng)用,需要創(chuàng)建更多URTC應(yīng)用,請聯(lián)系客戶經(jīng)理增加配額。
可以通過2種方法:控制臺、API創(chuàng)建URTC應(yīng)用。
通過 創(chuàng)建URTC 應(yīng)用的API,也可以創(chuàng)建URTC應(yīng)用。具體調(diào)用API的方法,請查看API文檔。
ucloudrtclib
開頭加版本號加一串8位識別碼,可以參考github上的接入demo。lib
目錄下,然后添加到lib
中,修改要使用sdk模塊目錄下build.gradle
,確保已經(jīng)添加了如下依賴,如下所示: 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)開始,用戶需要在應(yīng)用運(yùn)行時(shí)授予權(quán)限,而不是在應(yīng)用安裝時(shí)授予,并分為正常權(quán)限和危險(xiǎn)權(quán)限兩種類型。
在實(shí)時(shí)音視頻SDK 中,用戶需要在進(jìn)入音視頻通話房間前動態(tài)申請 CAMERA
、RECORD\_AUDIO
、WRITE\_EXTERNAL\_STORAGE
權(quán)限,具體可以參考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();//判斷成功后才執(zhí)行初始化代碼
}
}
private void init(){
sContext = this;
//初始化sdk環(huán)境
UCloudRtcSdkEnv.initEnv(getApplicationContext());
//打印日志到logcat
UCloudRtcSdkEnv.setWriteToLogCat(true);
//開啟log上報(bào)
UCloudRtcSdkEnv.setLogReport(true);
//設(shè)置log級別
UCloudRtcSdkEnv.setLogLevel(UCloudRtcSdkLogLevel.UCLOUD_RTC_SDK_LogLevelInfo);
//設(shè)置sdk模式(測試模式)
UCloudRtcSdkEnv.setSdkMode(UCloudRtcSdkMode.UCLOUD_RTC_SDK_MODE_TRIVAL);
//重連次數(shù)
UCloudRtcSdkEnv.setReConnectTimes(60);
//設(shè)置測試模式的用戶私有秘鑰
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
實(shí)現(xiàn)事件處理UCloudRtcSdkEventListener eventListener = new UCloudRtcSdkEventListener() {
@Override
public void onServerDisconnect() {
runOnUiThread(new Runnable() {
@Override
public void run() {
ToastUtils.shortShow(RoomActivity.this, " 服務(wù)器已斷開");
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) ;
// 設(shè)置純音頻模式
sdkEngine.configLocalCameraPublish(false) ;
// 設(shè)置攝像頭是否發(fā)布
sdkEngine.configLocalAudioPublish(true) ;
// 設(shè)置音頻是否發(fā)布,用于讓sdk判斷自動發(fā)布的媒體類型
sdkEngine.configLocalScreenPublish(false) ;
// 設(shè)置桌面是否發(fā)布,作用同上
sdkEngine.setClassType(UCloudRtcSdkRoomType.UCLOUD_RTC_SDK_ROOM_SMALL) ;
// 設(shè)置房間類型,有兩種 實(shí)時(shí)會議(小班課) 和互動直播(大班課)類型可選 ,默認(rèn)為實(shí)時(shí)會議(小班課)
sdkEngine.setStreamRole(URTCSdkStreamRole.URTC_SDK_STREAM_ROLE_BOTH);
// 如果是互動直播(大班課)模式,需要設(shè)置用戶權(quán)限:僅上行發(fā)布、僅下行訂閱、雙向發(fā)布訂閱權(quán)限;實(shí)時(shí)會議(小班課)會忽略這個配置
sdkEngine.setAutoPublish(true) ;
// 是否自動發(fā)布
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
接口 配置手動/自動發(fā)布。sdkEngine.publish(UCloudRtcSdkMediaType mtype, boolean hasvideo, boolean hasaudio)
//回調(diào)事件
public void onLocalPublish(int code, String msg, UCloudRtcSdkStreamInfo info
現(xiàn)在的類型包括兩大類,需要傳入publish
接口的mtype
,hasvideo
,hasaudio
參數(shù)各不相同,混合類型是單一類型的組合,具體代碼可參閱urtcdemo的RoomActvity
中的處理。
在onLocalPublish
回調(diào)成功后,在函數(shù)中可以調(diào)用視頻渲染。
localrenderview.setBackgroundColor(Color.TRANSPARENT);
sdkEngine.startPreview(info.getmMediatype(), localrenderview);
//不想渲染時(shí)可以調(diào)用停止渲染接口
sdkEngine.stopPreview(UCloudRtcSdkMediaType mediatype
sdkEngine.unPublish(UCloudRtcSdkMediaType mtype)
//回調(diào)事件
public void onLocalUnPublish(int code, String msg, UCloudRtcSdkStreamInfo info
如果配置了自動訂閱無需調(diào)用訂閱視頻接口,SDK會在用戶成功加入房間后查看房間已有的可以訂閱的流并進(jìn)行逐一訂閱,當(dāng)有新用戶加入房間時(shí)也會自動訂閱他推的流。
如果配置了手動訂閱需要調(diào)用sdkEngine引擎的subscribe接口。
sdkEngine.setAutoSubscribe(mScribeMode == CommonUtils.AUTO_MODE ? true : false);
sdkEngine.subscribe(UCloudRtcSdkStreamInfo info)
//回調(diào)事件
public void onSubscribeResult(int code, String msg, UCloudRtcSdkStreamInfo info
在onSubscribeResult回調(diào)成功后,再函數(shù)中可以調(diào)用視頻渲染。
sdkEngine. startRemoteView(UCloudRtcSdkStreamInfo info, UCloudRtcSdkSurfaceVideoView renderview)
//不想渲染時(shí)可以調(diào)用定制渲染接口
sdkEngine.stopPreview(UCloudRtcSdkMediaType mediatype
sdkEngine. subscribe(UCloudRtcSdkStreamInfo info)
//回調(diào)事件
public void onUnSubscribeResult(int code, String msg, UCloudRtcSdkStreamInfo info)
權(quán)限分為發(fā)布,訂閱,全部權(quán)限,全部權(quán)限包括了發(fā)布和訂閱。
//接口
public int setStreamRole(UCloudRtcSdkStreamRole role)
//調(diào)用
sdkEngine.setStreamRole(mRole);
sdkEngine.leaveChannel() ;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/125831.html
摘要:通過集成,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會議直播等多種業(yè)務(wù)場景。使用服務(wù)之前,首先需要注冊賬號并且完成實(shí)名認(rèn)證。確定后,自動生成。通過集成URTC SDK,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會議、直播等多種業(yè)務(wù)場景。 集成URTC SDK之前,需要在UCLOUD官...
摘要:通過集成,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會議直播等多種業(yè)務(wù)場景。使用服務(wù)之前,首先需要注冊賬號并且完成實(shí)名認(rèn)證。確定后,自動生成。推流成功后,即可直播觀看視頻。通過集成URTC SDK,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會議、直播等多種業(yè)務(wù)場景。 集成URTC S...
摘要:通過集成,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會議直播等多種業(yè)務(wù)場景。使用服務(wù)之前,首先需要注冊賬號并且完成實(shí)名認(rèn)證。確定后,自動生成。初始化建議在初始化的同時(shí),初始化。通過集成URTC SDK,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會議、直播等多種業(yè)務(wù)場景。 集成URTC...
摘要:通過集成,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會議直播等多種業(yè)務(wù)場景。集成之前,需要在官網(wǎng)控制臺創(chuàng)建應(yīng)用。使用服務(wù)之前,首先需要注冊賬號并且完成實(shí)名認(rèn)證。確定后,自動生成。通過集成URTC SDK,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會議、直播等多種業(yè)務(wù)場景。 集成URT...
摘要:通過集成,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會議直播等多種業(yè)務(wù)場景。使用服務(wù)之前,首先需要注冊賬號并且完成實(shí)名認(rèn)證。確定后,自動生成。通過集成,可以快速實(shí)現(xiàn)實(shí)時(shí)音視頻通話。通過集成URTC SDK,可以從零開始,快速搭建出實(shí)時(shí)音視頻通信平臺,可以應(yīng)用于語音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會議、直播等多種業(yè)務(wù)場景。 集成UR...
閱讀 3538·2023-04-25 20:09
閱讀 3739·2022-06-28 19:00
閱讀 3060·2022-06-28 19:00
閱讀 3081·2022-06-28 19:00
閱讀 3175·2022-06-28 19:00
閱讀 2880·2022-06-28 19:00
閱讀 3047·2022-06-28 19:00
閱讀 2638·2022-06-28 19:00