Node.js 如何使用RESTAPI更新Azure media Services中的现有媒体文件?

Node.js 如何使用RESTAPI更新Azure media Services中的现有媒体文件?,node.js,rest,azure-media-services,azure-blob-storage,Node.js,Rest,Azure Media Services,Azure Blob Storage,我正在使用Azure Media Services使用Node.js和SailsJS框架构建视频托管和流媒体服务。我正在使用RESTAPI,现在我遇到了一个我似乎不明白的问题:如何更新现有资产中的媒体文件 我正在使用他们推荐的Node.js库:虽然它已经过时,并且有一些恼人的bug,但它仍然比手工构建一切要好。但是,创建资产工作流会使上载的定位器每次都不同。我有一种感觉,如果我要为现有资产创建一个定位器,它只会为我创建一个新的资产文件。我不想那样。我想更新链接到旧资产文件的媒体。差不多 func

我正在使用Azure Media Services使用Node.js和SailsJS框架构建视频托管和流媒体服务。我正在使用RESTAPI,现在我遇到了一个我似乎不明白的问题:如何更新现有资产中的媒体文件

我正在使用他们推荐的Node.js库:虽然它已经过时,并且有一些恼人的bug,但它仍然比手工构建一切要好。但是,创建资产工作流会使上载的定位器每次都不同。我有一种感觉,如果我要为现有资产创建一个定位器,它只会为我创建一个新的资产文件。我不想那样。我想更新链接到旧资产文件的媒体。差不多

function updateAsset(assetId, stream, callback){
    api.rest.asset.update(assetId, {
        Files: [stream]
    }, callback);                                   
}
我想我可以运行CreateFileInfos,这将替换旧的元数据?我不知道,这个完全标准和通用的用例没有在任何地方描述或记录。有人能建议怎么做吗

[更新]:是的,我的感觉是正确的。将容器传递给skipper只是在该容器中创建了另一个文件,而Media Services不会注册它


[更新#2]:有一种方法可以完全移除旧资产并替换所有资产,但这并不能解决问题。如果我想保存缩略图,那该怎么办?字幕?移动所有这些东西非常麻烦。我想知道如何具体更新主视频。

因为您可能知道API不断更新 可能是NodeJS的开源API没有完全更新

处理资产更新的最佳方法是使用RESTAPI,它并不比使用SDK复杂多少

例如:

MERGE https://media.windows.net/API/Assets('nb:cid:UUID:80782407-3f87-4e60-a43e-5e4454232f60') HTTP/1.1

Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.11
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1337083279&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=DMLQXWah4jO0icpfwyws5k%2b1aCDfz9KDGIGao20xk6g%3d
Host: media.windows.net
Content-Length: 21
Expect: 100-continue

{"Name" : "NewName” }
有关更多信息,请参阅文档:

正如您所知,API不断更新 可能是NodeJS的开源API没有完全更新

处理资产更新的最佳方法是使用RESTAPI,它并不比使用SDK复杂多少

例如:

MERGE https://media.windows.net/API/Assets('nb:cid:UUID:80782407-3f87-4e60-a43e-5e4454232f60') HTTP/1.1

Content-Type: application/json;odata=verbose
Accept: application/json;odata=verbose
DataServiceVersion: 3.0
MaxDataServiceVersion: 3.0
x-ms-version: 2.11
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=youraccountname&urn%3aSubscriptionId=2f84471d-b1ae-4e75-aa09-010f0fc0cf5b&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&Audience=urn%3aWindowsAzureMediaServices&ExpiresOn=1337083279&Issuer=https%3a%2f%2fwamsprodglobal001acs.accesscontrol.windows.net%2f&HMACSHA256=DMLQXWah4jO0icpfwyws5k%2b1aCDfz9KDGIGao20xk6g%3d
Host: media.windows.net
Content-Length: 21
Expect: 100-continue

{"Name" : "NewName” }
有关更多信息,请参阅文档:

作为我个人资料清理的一部分,我将回答所有老问题:


这个问题的答案是使用更新相关的块Blob。Media Services实际上是Blob存储的包装器,提供与媒体相关的功能。Blob存储仍然提供与文件相关的功能,在使用Azure一年后,我可以说这是一个非常常见的范例。

作为我的配置文件清理的一部分,我回答了所有老问题:


这个问题的答案是使用更新相关的块Blob。Media Services实际上是Blob存储的包装器,提供与媒体相关的功能。Blob存储仍然提供与文件相关的功能,在使用Azure一年之后,我可以说这是一种非常常见的模式。

我非常了解此文档。在这一点上,我可能会背诵它。如果你仔细阅读这个问题,你会注意到我特别要求更新容器中的视频文件。正如您在文档中看到的那样,
文件
属性是只读的。因此,此方法无法对其进行更新。我正在寻找一些解决方法,以避免完全重新创建资产。例如,如果用户希望在不中断链接的情况下上载自定义缩略图。虽然在这一点上,我认为这与Blob存储API的关系要比与媒体服务的关系更大。我很清楚这篇文档。在这一点上,我可能会背诵它。如果你仔细阅读这个问题,你会注意到我特别要求更新容器中的视频文件。正如您在文档中看到的那样,
文件
属性是只读的。因此,此方法无法对其进行更新。我正在寻找一些解决方法,以避免完全重新创建资产。例如,如果用户希望在不中断链接的情况下上载自定义缩略图。虽然在这一点上,我认为这与Blob存储API的关系比与媒体服务的关系更大。