将块blob发送到Windows Media Services上载URL

时间:2014-03-19 16:12:25

标签: azure azure-media-services windows-media-services

我正在尝试创建一个使用Windows Media Services REST API上传视频文件并对其进行转码的应用。一切都很好,但我遇到了一种情况,我无法上传160 MB的视频文件而不知道原因。以常规方式调试上传过程非常痛苦,因为上传160 MB文件需要很长时间,所以我决定在这里提出我的问题:

  1. 我了解单个文件大小(最大64 MB)的Azure存储限制。将文件上传到Windows Media Services是否存在此类限制?我需要以4 MB的块发送该文件吗?

  2. 如果是这样,如何使用REST API实际做到这一点?我可以将chunked文件发送到常规存储帐户,但是当涉及到WMS时,情况会有所不同。基本上,在处理WMS时,我需要将我的文件(或文件块)上传到特定的临时URL,我不知道如何将其与块组合并设置块ID等。我也找不到任何信息关于互联网上的内容。

  3. 提前感谢任何建议!

1 个答案:

答案 0 :(得分:4)

您没有说出您使用哪个平台来构建应用程序(我猜它的.net?)

  1. 根据MSDN,单个文件(blob)不限于64 MB:

      

    每个块可以是不同的大小,最大为4 MB。块blob的最大大小为200 GB,块blob的最大大小不超过50,000个块。如果您正在编写大小不超过64 MB的块blob,则可以通过单次写入操作完整地上载它。

    这意味着您可以上传最高200 GB的文件(blob)。如果file小于64 MB,则可以将其作为一个大块(块)上载。如果它大于64 MB,则必须将其拆分为更小的块(每个最多4 MB)并以此方式上传。

  2. 完全披露:我写了this blog post,其中解释了如何构建可以上传文件的异步上传页面。它使用Azure REST API上传所有文件块,使用Windows Azure Media Services SDK与媒体服务进行通信,并创建用于上传文件的定位器(您提到的临时URL)。

    有很多代码涉及到这项工作,所以我创建了一个简单的demo app(用JS和.net编写)与帖子一起使用。如果你不在.net中这样做,你仍然可以使用代码的JS部分,只是你需要通过Azure REST API获取上传定位器以及点。

  3. 非常简化,上传/转码工作流程如下:

    • 通过应用程序的后端获取临时上载URL(定位器)(以保护您的Azure凭据)
    • 将文件拆分为较小的块,通过REST API代表WAMS(Windows Azure媒体服务)将它们全部上传到Azure存储,同时跟踪所有块ID
    • 将包含所有块ID的XML提交到REST API
    • 如果需要,转码视频(我在应用程序的后端使用WAMS SDK创建编码作业) - 每个视频将是一个新的单独资产
    • 发布资源 - 获取用于访问原始和/或转码视频的定位器(URL')

    我还建议您阅读有关将大型文件上传到Azure存储的Gaurav Mantri's post。它解释了很多,并且非常好地阅读了这个主题。