官方文档中archiveWindowLength的描述与nodejs sdk不同。我猜可能是nodejs sdk没有及时更新。
最新的官方文档archiveWindowLength是字符串类型,但在nodejs sdk中仍然是moment.duration。你可以看到下面的截图。
所以要修改程序,使用moment.duration,需要通过const moment = require("moment");导入moment。
您的代码应如下所示:
const {AzureMediaServices} = require('azure-arm-mediaservices');
const msRestAzure = require('ms-rest-azure');
const msRest = require('ms-rest');
const azureStorage = require('azure-storage');
const moment = require("moment");
// endpoint config
// make sure your URL values end with '/'
const armAadAudience = "https://management.core.windows.net/";
const aadEndpoint = "https://login.microsoftonline.com/";
const armEndpoint = "";
const subscriptionId = "";
const accountName ="";
const location ="";
const aadClientId = "";
const aadSecret ="";
const aadTenantId ="";
const resourceGroup ="";
msRestAzure.loginWithServicePrincipalSecret(aadClientId, aadSecret, aadTenantId, {
environment: {
activeDirectoryResourceId: armAadAudience,
resourceManagerEndpointUrl: armEndpoint,
activeDirectoryEndpointUrl: aadEndpoint
}
}, async function(err, credentials, subscriptions) {
if (err) return console.log(err);
const azureMediaServicesClient = new AzureMediaServices(credentials, subscriptionId, armEndpoint, { noRetryPolicy: true });
try {
var a= await azureMediaServicesClient.liveOutputs.create(resourceGroup, accountName, "jasonlive", "jasonliveoutput", {
"archiveWindowLength" : moment.duration("PT30M"),
"assetName" : "b-mp4-20210108-153238"
})
console.log(a)
}
catch(e){
console.log(e.message)
}
});
它对我有用。