【问题标题】:How to update existing media files in Azure Media Services using REST API?如何使用 REST API 更新 Azure 媒体服务中的现有媒体文件?
【发布时间】:2015-12-14 01:38:09
【问题描述】:

我正在使用 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 并替换旧的元数据?我不知道,这个完全标准和常见的用例在任何地方都没有描述或记录。有人可以建议怎么做吗?

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

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

【问题讨论】:

    标签: node.js rest azure-media-services azure-blob-storage


    【解决方案1】:

    您可能知道 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

    【讨论】:

    • 我很清楚这个文档。到这一步,我大概可以背下来了。如果您更仔细地阅读该问题,您会注意到我特别要求更新容器内的视频文件。正如您在文档中看到的那样,Files 属性是只读的。所以不能用这种方法更新。我一直在寻找一些解决方法,可以让我完全避免重新创建资产。例如,如果用户希望在不破坏链接的情况下上传自定义缩略图。虽然在这一点上,我认为这与 Blob 存储 API 的作用比媒体服务更多。
    【解决方案2】:

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

    这个问题的答案是使用Blob storage REST API 来更新相关的Block Blob。媒体服务实际上是 Blob 存储的包装器,它提供与媒体相关的功能。与文件相关的功能仍然由 Blob Storage 提供,在使用 Azure 一年之后,我可以说这是一个非常普遍的范例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2017-11-07
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2016-12-30
      相关资源
      最近更新 更多