如何使用 REST API 更新 Azure 媒体服务中的现有媒体文件?
How to update existing media files in Azure Media Services using REST API?
我正在使用 Azure 媒体服务通过 Node.js 和 SailsJS 框架构建视频托管和流媒体服务。我正在使用 REST api,现在我遇到了一个我似乎无法理解的问题:如何更新现有资产中的媒体文件?
我正在使用他们为 Node.js 推荐的库:https://github.com/fritzy/node-azure-media 虽然它已经过时并且有一些烦人的错误,但它仍然比手动构建所有东西要好。但是,创建资产工作流会为每次上传设置一个不同的定位器。我有一种感觉,如果我要为现有资产创建一个定位器,它只会为我创建一个新的 AssetFile。我不想要那个。我想更新链接到旧 AssetFile 的媒体。像
function updateAsset(assetId, stream, callback){
api.rest.asset.update(assetId, {
Files: [stream]
}, callback);
}
我想我可以然后 运行 CreateFileInfos 来替换旧的元数据?我不知道,这个完全标准和常见的用例没有在任何地方描述或记录。有人可以建议怎么做吗?
[更新]:是的,我的感觉是正确的。将容器传递给船长只是在该容器中创建了另一个文件,媒体服务不会注册它。
[更新#2]:有一种方法可以通过完全移除旧资产并替换所有资产来实现,但这并不能解决问题。如果我想保留那里存储的缩略图怎么办?字幕?移动所有这些是非常麻烦的。想知道具体怎么更新主视频
如您所知,API 不断更新
可能是 NodeJS 的开源 API 没有完全更新
您处理资产更新的最佳方式是使用 REST API它并不比使用 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” }
有关详细信息,请参阅文档:
https://msdn.microsoft.com/en-gb/library/azure/hh974277.aspx#update_an_asset
作为个人资料清理的一部分,我正在回答所有旧问题:
这个问题的答案是使用Blob storage REST API更新相关的Block Blob。媒体服务实际上是 Blob 存储的包装器,它提供与媒体相关的功能。文件相关的功能仍然由 Blob Storage 提供,在使用 Azure 一年后,我可以说这是一个非常普遍的范例。
我正在使用 Azure 媒体服务通过 Node.js 和 SailsJS 框架构建视频托管和流媒体服务。我正在使用 REST api,现在我遇到了一个我似乎无法理解的问题:如何更新现有资产中的媒体文件?
我正在使用他们为 Node.js 推荐的库:https://github.com/fritzy/node-azure-media 虽然它已经过时并且有一些烦人的错误,但它仍然比手动构建所有东西要好。但是,创建资产工作流会为每次上传设置一个不同的定位器。我有一种感觉,如果我要为现有资产创建一个定位器,它只会为我创建一个新的 AssetFile。我不想要那个。我想更新链接到旧 AssetFile 的媒体。像
function updateAsset(assetId, stream, callback){
api.rest.asset.update(assetId, {
Files: [stream]
}, callback);
}
我想我可以然后 运行 CreateFileInfos 来替换旧的元数据?我不知道,这个完全标准和常见的用例没有在任何地方描述或记录。有人可以建议怎么做吗?
[更新]:是的,我的感觉是正确的。将容器传递给船长只是在该容器中创建了另一个文件,媒体服务不会注册它。
[更新#2]:有一种方法可以通过完全移除旧资产并替换所有资产来实现,但这并不能解决问题。如果我想保留那里存储的缩略图怎么办?字幕?移动所有这些是非常麻烦的。想知道具体怎么更新主视频
如您所知,API 不断更新 可能是 NodeJS 的开源 API 没有完全更新
您处理资产更新的最佳方式是使用 REST API它并不比使用 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” }
有关详细信息,请参阅文档: https://msdn.microsoft.com/en-gb/library/azure/hh974277.aspx#update_an_asset
作为个人资料清理的一部分,我正在回答所有旧问题:
这个问题的答案是使用Blob storage REST API更新相关的Block Blob。媒体服务实际上是 Blob 存储的包装器,它提供与媒体相关的功能。文件相关的功能仍然由 Blob Storage 提供,在使用 Azure 一年后,我可以说这是一个非常普遍的范例。