【发布时间】:2021-12-09 03:51:27
【问题描述】:
我正在尝试为 Agora 设置云录制。我可以调用获取方法并获取资源 ID,但是当我尝试开始录制时,我得到一个没有错误代码或原因消息的 400 响应。如果我更改请求正文的任何部分,我将收到错误代码 2 和原因消息,因此我认为我的请求格式正确。另外,由于第一次获取资源ID的请求是成功的,我认为不应该存在身份验证问题。生成 RTC 令牌的代码正在其他地方用于创建频道,用户可以在应用中加入频道。
requestBody := fmt.Sprintf(`
{
"cname": "%s",
"uid": "%d",
"clientRequest": {
"token": "%s",
"recordingConfig": {
"maxIdleTime": 30,
"streamTypes": 0,
"channelType": 1,
"transcodingConfig": {
"height": 720,
"width": 1280,
"bitrate": 2260,
"fps": 15,
"mixedVideoLayout": 1,
"backgroundColor": "#000000"
}
},
"storageConfig": {
"vendor": %d,
"region": %d,
"bucket": "%s",
"accessKey": "%s",
"secretKey": "%s",
"fileNamePrefix": ["tracks"]
}
}
}
`, channelID, uid, rtcToken, 1 /*AWS*/, region, os.Getenv("AGORA_BUCKET_NAME"),
os.Getenv("AGORA_BUCKET_ACCESS_KEY"), os.Getenv("AGORA_BUCKET_ACCESS_SECRET"),
channelID)
reqUrl := "https://api.agora.io/v1/apps/" + os.Getenv("AGORA_APP_ID") + "/cloud_recording/resourceid/" + rid + "/mode/mix/start"
req, err := http.NewRequest("POST", reqUrl,
bytes.NewBuffer([]byte(requestBody)))
if err != nil {
return response, err
}
req.Header.Set("Content-Type", "application/json")
req.SetBasicAuth(os.Getenv("AGORA_CUSTOMER_ID"), os.Getenv("AGORA_CUSTOMER_CERTIFICATE"))
resp, err := httpClient.Do(req)
if err != nil {
return response, err
}
if resp.StatusCode != http.StatusOK {
// this is a 400 with no error code or reason
logger.Log("statuscode", resp.StatusCode)
}
【问题讨论】:
标签: agora.io