如何将资产复制到虚拟文件夹

时间:2017-11-06 19:50:11

标签: azure asp.net-core azure-storage azure-storage-blobs azure-media-services

由于Media Services不允许我们从流上传并且不允许我们创建虚拟文件夹,因此我决定将我的图像和视频上传到使用虚拟文件夹构建的blob容器。

接下来,我们需要使用azure媒体服务处理图像和视频面对编辑器。

因此,我们需要将我们的blob复制到azure媒体服务作为资产,然后使用face redactor然后我们需要将资产形式的结果上传回它的相应虚拟文件夹。

问题是Azure媒体服务不允许我们将资产直接上传到具有特定虚拟路径的另一个容器,或者我认为就是这种情况。

如何处理这种情况?

3 个答案:

答案 0 :(得分:0)

AFAIK,特定资产下的资产文件只能位于根文件夹下。如果要将资产文件复制到另一个blob容器下的另一个虚拟文件夹,我假设您可以首先使用MediaServices SDK检索资产,然后您可以使用存储客户端SDK检索资产文件并复制到您想要的另一个blob容器下的目标。以下是代码段,您可以参考它:

//retrieve the asset with the specific Id
var asset = _context.Assets.Where(s => s.Id == "nb:cid:UUID:39a13eaf-48cf-4c3c-80d6-bcd6b3b7c8b4").FirstOrDefault();

//retrieve the container name for the current asset
string assetContainerName = asset.Uri.Segments[1];

//construct the CloudBlobClient instance
StorageCredentials mediaServicesStorageCredentials = new StorageCredentials("{storage-name}", "storage-key");
var storageAccount = new CloudStorageAccount(mediaServicesStorageCredentials, true);
var mediaServiceBlobClient = storageAccount.CreateCloudBlobClient();

//construct the CloudBlobContainer instance for the current asset container
var assetContainer = mediaServiceBlobClient.GetContainerReference(assetContainerName);

//define the destination directory under another container
var destDirectory = mediaServiceBlobClient.GetContainerReference("images").GetDirectoryReference("2017/11/7");

//copy the asset files under the current asset container to the specific virtual folder under another blob container
foreach (CloudBlockBlob assetBlob in assetContainer.ListBlobs())
{
    var targetBlob = destDirectory.GetBlockBlobReference(assetBlob.Name);
    targetBlob.StartCopy(assetBlob);
}

答案 1 :(得分:0)

我们的.Net SDK提供了一些从Stream上传的方法(请参阅this页面底部附近的上一次UploadAsync重载)。

但我们不支持资产中的虚拟目录结构。正如Bruce Chen所做的回复,您可以使用Azure存储API在具有虚拟文件夹的Blob容器和包含Azure媒体服务资产的Blob容器之间来回切换。

答案 2 :(得分:0)

要在.NET Core中使用FaceRedactor,请直接使用REST API创建具有正确的介质处理器ID和配置设置的作业。

https://docs.microsoft.com/en-us/azure/media-services/media-services-face-redaction

卷曲-X POST \   https://tvmewest.restv2.westcentralus-2.media.azure.net/api/Jobs \   -H'接受:application / json; odata = verbose'\   -H'授权:持票人您的AAD JWT BEARER在此处取消   -H'缓存控制:无缓存'   -H'内容类型:application / json; odata = verbose'\   -H'dataseserviceversion:3.0'\   -H'maxdataserviceversion:3.0'\   -H'postman-token:6662e359-cb76-d849-11c5-99da0514cdc1'\   -H'用户代理:天蓝色媒体服务邮差收藏'   -H'x-ms-version:2.15'\   -d'{   “名称”:“编辑测试工作”,   “InputMediaAssets”:[{     “__metadata”:{       “uri”:“https://tvmewest.restv2.westcentralus-2.media.azure.net/api//Assets('\''nb:cid:UUID:733f8d88-f96b-496c-a46e-38c037b89d48'\'')”     }   }],   “任务”: [{     “配置”:“{'\''版本'\'':'\'''1.0'\'','\''选项'\'':{'\''模式'\'':'\'' '合并'\'','\'''BlurType'\'':'\''高'\''}}“,     “MediaProcessorId”:“nb:mpid:UUID:3806d7a6-4985-4437-b098-50e3733310e8”,     “TaskBody”:“                                      JobInputAsset(0)                     JobOutputAsset(0)                 “   }] }“