如何解决Agora Cloud Recording:错误404Flutter + Google Cloud功能
当前在开始为Agora流进行云记录时遇到问题。
我正在使用颤振并创建了云功能来开始录制。
颤振:
AgoraRtcEngine.onJoinChannelSuccess = (String channel,int uid,int elapsed) async {
AgoraCloudRecording().startAgoraCloudRecording(channel,uid);
};
云功能:
export async function retrieveAgoraToken(data: any){
//Variables
const channel = data.channel;
const uid = data.uid;
//AGORA KEYS
const agoraDoc = await agoraDocRef.get();
const appID = agoraDoc.data()!.appID;
const customerID = agoraDoc.data()!.customerID;
const secret = agoraDoc.data()!.secret;
const agoraCredentials = Base64.encode(customerID + ":" + secret);
//AWS
const awsDoc = await awsDocRef.get();
const awsAccessKey = awsDoc.data()!.accessKey;
const awsSecretKey = awsDoc.data()!.secretKey;
const reqHeaders = {"Authorization": "Basic" + agoraCredentials,"Content-type": "application/json"};
const acquireReqBody = {
"cname": channel,"uid": "1","clientRequest": {
"resourceExpiredHour": 24
}
};
console.log(reqHeaders);
//GET RESOURCE ID
const acquireURL = 'https://api.agora.io/v1/apps/' + appID + '/cloud_recording/acquire';
const acquireResourceID = {
method: 'POST',url: encodeURI(acquireURL),headers: reqHeaders,body: JSON.stringify(acquireReqBody)
}
const resourceIDRequest = new Promise<any>((resolve,reject) => {
request(acquireResourceID,function (error:any,res:any,body:any) {
console.error('error:',error); // Print the error if one occurred
console.log('statusCode:',res && res.statusCode); // Print the response status code if a response was received
resolve(JSON.parse(body));
reject('error');
});
});
const resourceIDResponse = await resourceIDRequest;
console.log(resourceIDResponse);
const resourceID = resourceIDResponse.resourceId;
console.log(resourceID);
//START RECORDING
const recordingReqBody = {
"cname": channel,"clientRequest": {
"recordingConfig": {
"maxIdleTime": 30,"streamTypes": 2,"channelType": 1,"videoStreamType": 0,"transcodingConfig": {
"height": 640,"width": 360,"bitrate": 500,"fps": 15,"mixedVideoLayout": 1,"backgroundColor": "#FF0000"
},"subscribeVideoUids": [
uid
],"subscribeAudioUids": [
uid
],"subscribeUidGroup": 0
},"recordingFileConfig": {
"avFileType": [
"hls"
]
},"storageConfig": {
"accessKey": awsAccessKey,"region": 1,"bucket": "recorded-live-streams","secretKey": awsSecretKey,"vendor": 1,"fileNamePrefix": [
"directory1","directory2"
]
}
}
};
const startRecordingURL = encodeURI('https://api.agora.io/v1/apps/' + appID + '/cloud_recording/resourceid/' + resourceID + '/mode/mix/start');
console.log(startRecordingURL);
const startRecordingOptions = {
method: 'POST',url: startRecordingURL,body: JSON.stringify(recordingReqBody)
}
const startVideoRecordingReq = new Promise<any>((resolve,reject) => {
request(startRecordingOptions,res && res.statusCode); // Print the response status code if a response was received
resolve(JSON.parse(body));
reject('error');
});
});
const startVidRecordingResponse = await startVideoRecordingReq;
console.log(startVidRecordingResponse);
}
我什至试图开始记录添加令牌参数。 我将使用以下库通过NodeJS生成令牌:https://github.com/AgoraIO/Tools/tree/master/DynamicKey/AgoraDynamicKey/nodejs
我可以从Agora成功获取resourceID。但是,如果我尝试开始记录,则会收到404错误:“没有与这些值匹配的路线”
解决方法
我在这里找到了document,为您报告的错误提供了一些背景信息。
“没有与这些值匹配的路由”:出现此消息的可能原因是您在请求中输入了错误的HTTP方法,例如在应为POST的情况下使用GET。另一个可能的原因是您将请求发送到错误的URL。
,请确保通过Agora控制台在您的项目上启用云记录。
要在您的项目上启用Cloud Recording,请访问https://console.agora.io/cloud-recording,然后从左上角的下拉菜单中选择 Project 名称,然后点击 Duration em> Cloud Recording 下面的链接,然后单击按钮以在该项目上启用服务。
单击启用云记录后,系统将提示您确认默认为50的并发通道设置,然后单击确定。启用后,您应该会看到使用情况图表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。