天道酬勤,学无止境

Organising Azure Media assets in Blob storage

I'm using Azure Media services to ingest/transcode and deliver content for a web application. The same web application uses Blob storage to store user assets.

As it stands, whenever I ingest a new item into AMS I get a new container created in the blob storage with the asset name. Is there a way to configure AMS to use a sub-container? I'd prefer to keep the media assets organised in their own directory. Instead of just sitting at the top level of my storage account?

评论

Azure storage has no phycial hierarchy like folder. There is an option in azure storage api to simulate tree hierarchy by including "/" into your blob names. See related post here

Windows Azure Media Services is not supporting such naming convention at this moment. Once you will try to upload file using .net sdk where physical file name name is not matching IAssetFile.Name you will get exception:

System.ArgumentException: Uploaded file name should be equal (case insensitive) to a IAssetFile.Name property

 IAsset asset = _dataContext.Assets.Create(containerName, AssetCreationOptions.None);
 var file = asset.AssetFiles.Create("Folder/Subfolder" + Guid.NewGuid().ToString());
 file.Upload(_smallWmv);

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何将元数据添加到 Azure 媒体服务中的资产?(How to Add Metadata to assets in Azure Media Services?)
    问题 我正在使用 Azure 媒体服务并上传、编码和流式传输视频。 问题是,有没有办法在 Azure 媒体服务 API 中的某处附加视频标题、描述和标签? 其他详细信息:当我处理资产时,会在 Azure Blob 存储中创建一个新容器,当我单击 Blob 本身时,它具有“用户定义的字段” - 又名元数据,我可以使用这些,但我不确定它们完全暴露给 Azure 媒体 API 以及如何访问它们。 我搜索了所有 MS 文档,但一无所获:/ 回答1 当前 Azure 媒体服务 API 公开有关编码媒体资产的限制元数据集。 您可以查看 https://github.com/Azure/azure-sdk-for-media-services-extensions 获取元数据的示例及其实现方式: // The asset encoded with the Windows Media Services Encoder. Get a reference to it from the context. IAsset asset = null; // Get an enumerator with the metadata for all the asset files. IEnumerable<AssetFileMetadata> manifestAssetFile = asset
  • 如何从angularjs正确地将视频文件上传到Azure媒体服务(How to properly upload video files to Azure Media Services from angularjs)
    问题 对于我的情况,我们当前的应用程序开始使用html5和angularjs与Web api进行通信编码。 我有一个工作流场景,似乎无法为其找到一个端到端的示例。 我想允许我网站的用户将视频和图像上传到Azure媒体服务。 我发现了几个示例,这些示例似乎将数据从网页移动到Blob存储,然后复制到Azure媒体服务。 有没有一种方法可以将文件直接上载到Media Services,而不是使用一个临时的和永久的Blob容器(一个与AMS绑定),因为这种方法似乎迫使我拥有一个额外的存储容器,或者有一种方法可以移动文件文件到Blob存储,然后通过IAssetFile将Blob文件链接到AMS? 有人可以提供一个示例来说明从Web前端上传到最终在AMS中存储的文件的流程吗? 一旦到达那里,有没有一种方法可以确保用户可以观看但不能下载视频? 回答1 1.是否可以将文件直接上传到媒体服务: Media Services SDK要求您首先在我们的系统中创建一个Asset对象。 该资产对象由“存储”中的容器支持。 您可以创建一个空的Asset对象,并请求仅写SAS URL(在我们的API中称为“定位符”)直接将您的内容上传到其中。 您可能想查看这个AngularJS模块,看看它是否有效。 http://ngmodules.org/modules/angular-azure-blob-upload 2
  • 如何创建 Azure Mgmt 序列化器/反序列化器参数?(How to create Azure Mgmt serializer/deserializer parameters?)
    问题 我可以在最新的 azure-mgmt-media 和 Python 存储 sdk 中看到,用户应该为序列化器/反序列化器传入 2 个参数。 我的 Python 经验很少,我不知道如何创建这些对象。 我找不到任何带有最新签名 (3-01-18) 的媒体示例和存储示例。 我只想创建一个媒体服务资产,但我不知道为什么我需要传递这些参数,因为我使用的是标准 SDK 类型。 任何人都可以指出我创建这些的一些例子吗? 我可以找到 文档列出了: :param serializer: An object model serializer. :param deserializer: An object model deserializer. 这些类的两个示例是:azure-sdk-for-python/azure-mgmt-media/azure/mgmt/media/operations/assets_operations.py 和 azure-sdk-for-python/azure-mgmt-storage/azure/mgmt/storage/v2018_03_01_preview/operations/blob_containers_operations.py 签名为:def init (self、client、config、serializer、deserializer): 谢谢!
  • Azure 媒体服务上媒体资产的容器名称(Container name for media asset on Azure Media Services)
    问题 在为 Windows Azure 媒体服务创建资产时如何设置容器的名称? 像这样调用我的 CloudMediaContext 来创建一个新资产会在 blob 存储中创建一个名为“asset-[newGuid]”的新容器,例如“asset-f230411a-22a0-4813-9187-4b815dbfdf12”。 var assetName = "foobar"; var asset = _mediaContext.Assets.Create(assetName, assetCreationOptions); Nick Drouin(在 AMS 的 MS 工作)上述电话的背景信息 “在幕后,上面的调用将:创建一个 IAsset 并将其添加到资产集合中;创建一个 IFileInfo 以放入资产;创建一个具有写入权限的 AccessPolicy,使用 Azure 存储中的资产容器请求 SAS 定位器AccessPolicy,将文件上传到您的存储帐户,最后撤销 SAS url。” Question如何控制容器的名称? 回答1 目前,Windows Azure 媒体服务不允许用户指定将创建资产的现有容器名称或指定新容器的自定义名称。 请利用 http://azuremediaservices.uservoice.com/forums/88965-media-services
  • Container name for media asset on Azure Media Services
    How do I set the name of the container when creating an asset for Windows Azure Media Services? Calling my CloudMediaContext like this to create a new asset creates a new container in blob storage with the name "asset-[newGuid]" e.g. "asset-f230411a-22a0-4813-9187-4b815dbfdf12". var assetName = "foobar"; var asset = _mediaContext.Assets.Create(assetName, assetCreationOptions); Background info on the call above by Nick Drouin (who works at MS on AMS) "Under the hood, the call above will: create an IAsset and add it to the assets collection; create an IFileInfo to put in the asset; create an
  • 如何从 Azure 媒体服务获取视频的持续时间?(How to get the duration of a video from the Azure media services?)
    问题 我正在使用 Windows Azure Media Services .NET SDK 3 来利用流媒体服务。 我想检索视频的持续时间。 如何使用 Windows Azure 媒体服务 .NET SDK 3 检索视频的持续时间? 回答1 Azure 创建了一些元数据文件 (xml),可以在持续时间内查询这些文件。 可以使用媒体服务扩展访问这些文件 https://github.com/Azure/azure-sdk-for-media-services-extensions 在获取资产元数据下: // The asset encoded with the Windows Media Services Encoder. Get a reference to it from the context. IAsset asset = null; // Get a SAS locator for the asset (make sure to create one first). ILocator sasLocator = asset.Locators.Where(l => l.Type == LocatorType.Sas).First(); // Get one of the asset files. IAssetFile assetFile = asset.AssetFiles
  • How to create Azure Mgmt serializer/deserializer parameters?
    I can see in both the latest azure-mgmt-media & storage sdk's for Python the user is expected to pass in 2 args for Serializer/Deserializer. I've got very little Python experience and I can't figure out how to create these objects. I can't find ANY media examples and no storage examples with the latest signature (3-01-18). I just want to create a media service asset and I don't know why I'd need to pass these args since I'm using standard SDK types. Can anyone point me to some examples of creating these? I can find The documentation lists: :param serializer: An object model serializer. :param
  • How to Add Metadata to assets in Azure Media Services?
    I am using Azure Media Services and uploading, encoding and streaming videos. Question is, is there a way to attach video titles, descriptions and tags somewhere in Azure Media Services API? Additional details: When I process an asset, a new container in Azure Blob Storage is created, and when I click on the blob itself, it has "User Defined Fields" - aka metadata, I could use those, but I am not sure if they are exposed to Azure Media API at all and how to access them. I searched all over MS documentation and found nothing :/
  • 如何将流上传到 Azure 媒体服务(How to upload Stream to Azure Media Services)
    问题 我们使用 ASP.NET MVC 4 来允许用户通过我们的网站上传视频和音频。 我想使用 Azure 媒体服务作为后端。 在学习 Azure 的教程时,我遇到的问题是 Azure 媒体服务 SDK 似乎不允许上传原始数据流。 相反,我能找到的唯一上传方法使用路径字符串参数。 我想避免将文件保存到磁盘(默认情况下它已经流式传输到磁盘),并且能够将请求发布的文件直接流式传输到 Azure。 到目前为止,这是我的代码: public void SaveMedia(string fileName, System.IO.Stream stream) { CloudMediaContext mediaCloud = new CloudMediaContext("account", "key"); AssetCreationOptions assetOptions = new AssetCreationOptions(); var asset = mediaCloud.Assets.Create(fileName, assetOptions); var assetFile = asset.AssetFiles.Create(fileName); var accessPolicy = mediaCloud.AccessPolicies.Create(fileName, TimeSpan
  • Azure Media Services (v3) - specific output asset container name
    I have a program similar to AMSV3Quickstarts example and I need to change the default name for container for the output asset in accordance with my program logic/contract. Is it possible to change the output asset container name somehow? What I tried: RTFM Change the transform job name Change the locator name Change the output asset name However, in my blob storage, it is still in asset-{GUID} format.
  • 从 Azure 媒体服务中的资产下载资产文件(Download asset file from asset in Azure media service)
    问题 我有一个问题。 我在 azure 媒体服务中有一项资产。 资产包含资产文件。 我想知道如何下载资产文件。 为此,我正在使用 httparty gem。 HTTParty.get(https://<host>.restv2.<location>.media.azure.net/api/Files('<file_id>'), headers: headers) 标头具有授权值。 上述请求提供了资产文件的元数据,但我想下载资产文件。 任何人都可以请帮忙。 谢谢。 我已经阅读了以下文档:https://docs.microsoft.com/en-us/rest/api/media/operations/assetfile 回答1 您必须为父资产创建一个 SAS 定位器,它将返回资产的 SAS URL,例如: https://[storageaccount].blob.core.windows.net/asset-[parentAssetId]?[queryparams] 发送带有附加到 SAS URL 的资产文件名的 GET 请求将返回资产文件内容: 获取 https://[storageaccount].blob.core.windows.net/asset-[parentAssetId]/[ assetFileName ]?[queryparams] 这是一个 .NET 示例。
  • Why does Azure Media Services v3 job fail when submitting an encoded URL to JobInputHttp?
    When submitting urls to the JobInputHttp class to use an uploaded video as a media source, the job fails if the url is encoded because the file name has spaces? For encoding I am just using encodeURI() to replace the spaces character with %20 using JavaScript before sending it to the web server. File is uploaded to blob storage from client side. I am able to view the video from azure portal so it is being uploaded correctly. After the video is uploaded a stream attempts to be created by sending the encoded url and filename of the uploaded file to the backend before submitting to Azure Media
  • 从 Azure Blob 存储剪切视频(Cut videos from Azure Blob Storage)
    问题 我有一个托管在 Azure 中的 Web 应用程序; 它的功能之一是能够从视频中进行一些剪辑(从较大的视频中生成 2 或 3 个 5-10 秒的小视频)。 视频保留在 Azure Blob 存储中。 您建议如何在 Azure 环境中完成此操作? 视频的实际剪切将由网络作业启动。 我还担心定价(在 Azure 环境中),我正在考虑高流量的可能性。 任何反馈表示赞赏。 谢谢你。 回答1 假设您有通过普通 I/O 对文件进行操作的视频剪辑代码:您需要从 blob 下载视频文件,通过代码(或您使用的任何库)对其进行处理,然后将结果存储回块存储。 不能使用普通标准 IO 库直接引用 blob。 但是,如果视频存储在 Azure 文件存储(它是 Blob 存储之上的 SMB 层)中,那么您将能够直接操作您的视频文件。 Web 作业在应用服务中运行(就像 Web 应用一样),因此您可以访问一定数量的本地磁盘空间(取决于应用服务层)以供使用。 将视频文件临时存储在 Web 应用程序的磁盘空间中以进行编辑操作应该没有问题。 您询问了成本:同样,假设您正在谈论在 Web 作业(应用服务)中运行代码,您只需为您选择的任何应用服务层付费。 您实际如何进行这些编辑操作完全取决于您(语言、库等)。 回答2 Azure Blob 存储只是一个存储数据的对象存储。 它没有您正在寻找的功能。 但是,Azure
  • 向 JobInputHttp 提交编码 URL 时,为什么 Azure 媒体服务 v3 作业失败?(Why does Azure Media Services v3 job fail when submitting an encoded URL to JobInputHttp?)
    问题 向 JobInputHttp 类提交 url 以使用上传的视频作为媒体源时,如果 url 被编码,因为文件名有空格,作业会失败? 对于编码,我只是使用 encodeURI() 在将空格字符发送到 Web 服务器之前使用 JavaScript 用 %20 替换空格字符。 文件从客户端上传到 blob 存储。 我可以从 azure 门户查看视频,因此可以正确上传。 视频上传后,在提交到 Azure 媒体服务 (AZM) 之前,会尝试通过将上传文件的编码 URL 和文件名发送到后端来创建流。 测试用例: 文件名没有空格并符合命名约定 - 通过并从 AZM 资产中查看文件名包含空格 - 不确定空格是否符合 AZM 资产命名约定如果未编码,则返回 500 错误当编码错误“尝试下载输入文件时,文件无法访问,请检查源的可用性”时,作业在 azure 门户中失败,屏幕截图如下。 失败的作业截图 当前代码: private async Task<Job> SubmitJobAsync(IAzureMediaServicesClient client, string resourceGroup, string accountName, string transformName, string outputAssetName, string jobName, string url) { //
  • 无法上传到 Azure 媒体服务 - 找不到文件(Can't upload to Azure Media Services - File Not Found)
    问题 当我在本地运行网站时,视频将上传到 azure 并获得发布网址。 没问题。 但是,当我发布网站然后尝试从那里上传时,出现此错误: “/”应用程序中的服务器错误。 -------------------------------------------------- ------------------------------ c:\V1.mp4 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.IO.FileNotFoundException: c:\V1.mp4 Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception
  • 设置存储在Blob上的媒体文件的内容类型(Set Content-type of media files stored on Blob)
    问题 我们在Azure上托管了一个网站。 它是基于媒体的,我们正在使用JWPlayer通过HTTP伪流播放媒体。 媒体文件以3种格式存储在blob中-mp4,ogg,webm。 问题是媒体文件的内容类型被设置为所有类型的应用程序/八位字节流。 因此,媒体播放和进度栏中存在一些问题。 如何设置存储在Blob上的文件的适当Content-type(例如-video / mp4,video / ogg,video / webm)? 我不想通过在Blob界面中为每个文件手动进行操作。 必须有其他我不知道的方法。 可能是配置文件,设置文件等进行排序。 或者,可能是一个代码块,用于为文件夹中存储的所有文件设置Content-type。 有什么建议么? 谢谢 回答1 这应该工作: var storageAccount = CloudStorageAccount.Parse("YOURCONNECTIONSTRING"); var blobClient = storageAccount.CreateCloudBlobClient(); var blobs = blobClient .GetContainerReference("thecontainer") .ListBlobs(useFlatBlobListing: true) .OfType<CloudBlockBlob>(); foreach
  • 验证已上传到 azure blob 的视频的持续时间(Verify duration of video which has been uploaded into azure blob)
    问题 我正在构建一个应用程序,用户可以在其中上传关于自己的简短肖像视频以在社区内进行宣传。 关键字很短。 我想阻止用户上传 1 小时的史诗。 我已经尝试找出一种方法来在客户端验证这一点,但我决定在服务器端进行所有可用的视频格式。 这是我撞到下一堵墙的地方。 我通过引用将用户视频分块(由于预期的大文件)上传到我的 blob 存储中。 此后,这些文件将被复制到另一个与 Azure 媒体服务帐户相关联的存储中。 在上传和复制到第二个存储之间是我想验证持续时间的地方。 从我尝试过的库( Accord 、 NReco 、 MediaToolkit )都以某种方式失败(不支持在 azure 网站中运行,不支持从 blob 或类似问题中读取)。 所以我现在有点卡住了。 有没有人知道如何做到这一点而不必先通过 azure 媒体服务进行编码? 回答1 我会简单地上传到%TEMP% (扩展为d:\local\temp )。 那是应用服务中的本地存储。 然后所有这些库都应该针对本地文件系统工作,包括我个人最喜欢的 MediaInfo。 对于标准层,似乎有足够的空间,以下是 Kudu 报告的内容: d:\local usage: 230,397 MB total; 188,630 MB free 所以, upload file | | too long? check length with video
  • How upload file to blob storage and reference it from cosmosdb document in attachment
    I'm new to CosmosDb and azure blob storage, as a requirement I need to reference a file uploaded to azure blob storage from a document in CosmosDb and use it in the attachment section to save the metadata. I know the json metadata stucture should be like this: { "id":"image13d65101-90c4-4c2a-a423-fbf221c73233", "contentType":"image/jpg", "media":"www.bing.com", "_rid":"rnYYAMVFUAUBAAAAAAAAAEC+LNM=", "_ts":1408056025, "_self":"dbs\/rnYYAA==\/colls\/rnYYAMVFUAU=\/docs\/rnYYAMVFUAUBAAAAAAAAAA==\/attachments\/rnYYAMVFUAUBAAAAAAAAAEC+LNM=", "_etag":"00002a00-0000-0000-0000-53ed3ad90000" } but how
  • How to properly upload video files to Azure Media Services from angularjs
    For my scenario, our current app is begin coded in html5 and angularjs communicating with web api. I have a workflow scenario that I seem to not be able to find an end to end example for. I would like to allow users of my website to upload videos and images to Azure Media Services. I found several examples that seem to move the data from a web page to blob storage and then copy over to azure media services. Is there a way to upload the file directly to Media Services, instead of having a temporary and permanent blob container(one tied to AMS), as this approach seems to force me to have an
  • 面对PB级云存储,如何快速找到你的文件
    上云都能获得哪些好处?可以享受到几乎无穷无尽的低成本、大容量、高灵活性云服务,恐怕每个人心里都想着“真香”。然而这也会造成一些问题,以云存储服务为例,各种文件都可以一股脑丢到云存储服务中安全、妥善地保存,但当你需要从中找到某个文件时,面对TB甚至PB级别的云存储空间,你准备怎么做…… 云对象存储服务的出现,以其灵活的弹性和可扩展性,以及卓越性价比,促使越来越多的场景开始使用云对象存储解决方案。从大数据场景到企业数据备份/存储场景,越来越多开源软件和商业软件都支持云对象存储架构。 然而由于对象存储区别于传统的文件存储系统的本质,使其原生就不支持文件基于索引的检索查询。因此当用户将大量数据文件存放在对象存储服务中,如何管理这些文件并建立数据目录(inventory),进而提供类似文件系统的索引检索查询成为很多用户面临的问题。 本文我们将为大家介绍一些微软云对象存储Azure Blob的文件索引检索查询解决方案。 三种使用场景,各有其解决方案 我们可以把文件索引检索查询的对象分为:文件名、文件元数据,以及文件内容三个类别。对于不同检索查询对象,可以选择不同方式进行支持。 例如通常在文件名的索引查询上,用户会依赖于模糊查询的方式来找到匹配的文件;而文件元数据内通常是一些键-值结构的数据,用户通常是通过自己定义标签逻辑来进行匹配查询;对于文件内容的搜索,通常是全文搜索