我使用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]:有一种方法可以通过完全删除旧资产并替换所有资产来实现,但这并不能解决问题。如果我有缩略图存储在那里我想保留怎么办?字幕?移动所有这些是非常麻烦的。我想知道如何专门更新主视频。
答案 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一年后,我可以说这是一个非常常见的范例。