如何使用REST API更新Azure Media Services中的现有媒体文件?

时间:2015-09-17 08:42:46

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

我使用Azure Media Services使用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只是在该容器中创建了另一个文件,而Media Services没有注册它。

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

2 个答案:

答案 0 :(得分:0)

您可能知道API会不断更新 可能是NodeJS的开源API未完全更新

您处理资产更新的最佳方式是使用REST API,使用SDK时不会复杂得多

示例:

UPDATE XML_TORTEST po
  SET po.XMLDOC =
    XMLQuery('
            declare namespace  w="http://schemas.openxmlformats.org/wordprocessingml/2006/main";   
              (#ora:invalid_path empty #){
              copy $i := $p1
              modify
              (
             for $j in $i/w:document/w:body/w:p/w:r/w:tab
             let $newn := <w:t></w:t>
             return replace node $j with $newn)
             return $i
             }
             ' PASSING XMLDOC AS "p1" 
          RETURNING CONTENT);

有关详细信息,请参阅文档: https://msdn.microsoft.com/en-gb/library/azure/hh974277.aspx#update_an_asset

答案 1 :(得分:0)

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

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