@@ -49,93 +49,48 @@ class CloudApiManager private constructor() {
49
49
}))
50
50
.build()
51
51
52
- private fun fetchCloudToken (): String {
53
- var token = " "
54
- try {
55
- val acquireOjb = JSONObject ()
56
- acquireOjb.put(" instanceId" , System .currentTimeMillis().toString() + " " )
57
- // acquireOjb.put("testIp", testIp)
58
- val request: Request = Builder ()
59
- .url(getTokenUrl(domain, BuildConfig .AGORA_APP_ID ))
60
- .addHeader(" Content-Type" , " application/json" )
61
- .addHeader(" Authorization" , basicAuth)
62
- .post(acquireOjb.toString().toRequestBody())
63
- .build()
64
-
65
- val responseToken = okHttpClient.newCall(request).execute()
66
- if (responseToken.isSuccessful) {
67
- val body = responseToken.body!!
68
- val bodyString = body.string()
69
- val jsonToken = JSONObject (bodyString)
70
- if (jsonToken.has(" tokenName" )) {
71
- token = jsonToken.getString(" tokenName" )
72
- }
73
- }
74
- } catch (e: Exception ) {
75
- Log .e(TAG , " getToken error " + e.message)
76
- }
77
- return token
78
- }
79
-
80
52
fun fetchStartCloud (mainChannel : String ) {
81
- val token = fetchCloudToken()
82
- tokenName = token.ifEmpty {
83
- Log .e(TAG , " 云端合流uid 请求报错 token is null" )
84
- return
85
- }
86
53
var taskId = " "
87
54
try {
88
55
val transcoderObj = JSONObject ()
89
56
val inputRetObj = JSONObject ()
90
57
.put(" rtcUid" , 0 )
91
- .put(" rtcToken" , BuildConfig .AGORA_APP_ID )
92
58
.put(" rtcChannel" , mainChannel)
93
- val intObj = JSONObject ()
94
- .put(" rtc" , inputRetObj)
95
- transcoderObj.put(" audioInputs" , JSONArray ().put(intObj))
96
- transcoderObj.put(" idleTimeout" , 300 )
97
- val audioOptionObj = JSONObject ()
98
- .put(" profileType" , " AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO" )
99
- .put(" fullChannelMixer" , " native-mixer-weighted" )
59
+
60
+
100
61
val outputRetObj = JSONObject ()
101
62
.put(" rtcUid" , cloudRtcUid)
102
- .put(" rtcToken" , BuildConfig .AGORA_APP_ID )
103
63
.put(" rtcChannel" , mainChannel + " _ad" )
104
- val dataStreamObj = JSONObject ()
105
- .put(" source" , JSONObject ().put(" audioMetaData" , true ))
106
- .put(" sink" , JSONObject ())
107
- val outputsObj = JSONObject ()
108
- .put(" audioOption" , audioOptionObj)
109
- .put(" rtc" , outputRetObj)
110
- .put(" metaDataOption" , dataStreamObj)
111
- transcoderObj.put(" outputs" , JSONArray ().put(outputsObj))
112
- val postBody = JSONObject ()
113
- .put(
114
- " services" , JSONObject ()
115
- .put(
116
- " cloudTranscoder" , JSONObject ()
117
- .put(" serviceType" , " cloudTranscoderV2" )
118
- .put(
119
- " config" , JSONObject ()
120
- .put(" transcoder" , transcoderObj)
121
- )
122
- )
123
- )
64
+
65
+ transcoderObj.put(" appId" , BuildConfig .AGORA_APP_ID )
66
+ transcoderObj.put(" appCert" , BuildConfig .AGORA_APP_CERTIFICATE )
67
+ transcoderObj.put(" src" , " Android" )
68
+ transcoderObj.put(" traceId" , " 12345" )
69
+ transcoderObj.put(" instanceId" , System .currentTimeMillis().toString())
70
+ transcoderObj.put(" basicAuth" , " " )
71
+ transcoderObj.put(" audioInputsRtc" , inputRetObj)
72
+ transcoderObj.put(" outputsRtc" , outputRetObj)
73
+
124
74
val request: Request = Builder ()
125
- .url(startTaskUrl(domain, BuildConfig . AGORA_APP_ID , tokenName ))
75
+ .url(startTaskUrl())
126
76
.addHeader(" Content-Type" , " application/json" )
127
- .addHeader(" Authorization" , basicAuth)
128
- .post(postBody.toString().toRequestBody())
77
+ .post(transcoderObj.toString().toRequestBody())
129
78
.build()
130
79
80
+ Log .d(TAG , " fetchStartCloud: ${request.url} " )
81
+
131
82
val responseStart = okHttpClient.newCall(request).execute()
132
83
if (responseStart.isSuccessful) {
133
84
val body = responseStart.body!!
134
85
val bodyString = body.string()
135
- val jsonUid = JSONObject (bodyString)
86
+ val jsonUid = JSONObject (bodyString).get(" data" ) as JSONObject
87
+
136
88
if (jsonUid.has(" taskId" )) {
137
89
taskId = jsonUid.getString(" taskId" )
138
90
}
91
+ if (jsonUid.has(" builderToken" )) {
92
+ tokenName = jsonUid.getString(" builderToken" )
93
+ }
139
94
}
140
95
} catch (e: Exception ) {
141
96
Log .e(TAG , " 云端合流uid 请求报错 " + e.message)
@@ -151,11 +106,19 @@ class CloudApiManager private constructor() {
151
106
return
152
107
}
153
108
try {
109
+ val transcoderObj = JSONObject ()
110
+ transcoderObj.put(" appId" , BuildConfig .AGORA_APP_ID )
111
+ transcoderObj.put(" appCert" , BuildConfig .AGORA_APP_CERTIFICATE )
112
+ transcoderObj.put(" src" , " Android" )
113
+ transcoderObj.put(" traceId" , " 12345" )
114
+ transcoderObj.put(" basicAuth" , " " )
115
+ transcoderObj.put(" taskId" , taskId)
116
+ transcoderObj.put(" builderToken" , tokenName)
117
+
154
118
val request: Request = Builder ()
155
- .url(deleteTaskUrl(domain, BuildConfig . AGORA_APP_ID , taskId, tokenName ))
119
+ .url(deleteTaskUrl())
156
120
.addHeader(" Content-Type" , " application/json" )
157
- .addHeader(" Authorization" , basicAuth)
158
- .delete()
121
+ .delete(transcoderObj.toString().toRequestBody())
159
122
.build()
160
123
val response = okHttpClient.newCall(request).execute()
161
124
if (response.isSuccessful) {
@@ -167,35 +130,13 @@ class CloudApiManager private constructor() {
167
130
}
168
131
}
169
132
170
- private fun getTokenUrl (domain : String , appId : String ): String {
171
- return String .format(" %s/v1/projects/%s/rtsc/cloud-transcoder/builderTokens" , domain, appId)
172
- }
173
-
174
- private fun startTaskUrl (domain : String , appId : String , tokenName : String ): String {
175
- return String .format(" %s/v1/projects/%s/rtsc/cloud-transcoder/tasks?builderToken=%s" , domain, appId, tokenName)
133
+ private fun startTaskUrl (): String {
134
+ val domain = BuildConfig .TOOLBOX_SERVER_HOST
135
+ return String .format(" %s/v1/cloud-transcoder/start" , domain)
176
136
}
177
137
178
- private fun deleteTaskUrl (domain : String , appid : String , taskid : String , tokenName : String ): String {
179
- return String .format(
180
- " %s/v1/projects/%s/rtsc/cloud-transcoder/tasks/%s?builderToken=%s" ,
181
- domain,
182
- appid,
183
- taskid,
184
- tokenName
185
- )
186
- }
187
-
188
- private val basicAuth: String
189
- private get() {
190
- // 拼接客户 ID 和客户密钥并使用 base64 编码
191
- val plainCredentials = BuildConfig .RESTFUL_API_KEY + " :" + BuildConfig .RESTFUL_API_SECRET
192
- var base64Credentials: String? = null
193
- base64Credentials = String (Base64 .getEncoder().encode(plainCredentials.toByteArray()))
194
- // 创建 authorization header
195
- return " Basic $base64Credentials "
196
- }
197
-
198
- private fun getString (resId : Int ):String {
199
- return MyApplication ().getString(resId)
138
+ private fun deleteTaskUrl (): String {
139
+ val domain = BuildConfig .TOOLBOX_SERVER_HOST
140
+ return String .format(" %s/v1/cloud-transcoder/stop" , domain)
200
141
}
201
142
}
0 commit comments