我正在尝试创建一个使用Windows Media Services REST API上传视频文件并对其进行转码的应用。一切都很好,但我遇到了一种情况,我无法上传160 MB的视频文件而不知道原因。以常规方式调试上传过程非常痛苦,因为上传160 MB文件需要很长时间,所以我决定在这里提出我的问题:
我了解单个文件大小(最大64 MB)的Azure存储限制。将文件上传到Windows Media Services是否存在此类限制?我需要以4 MB的块发送该文件吗?
如果是这样,如何使用REST API实际做到这一点?我可以将chunked文件发送到常规存储帐户,但是当涉及到WMS时,情况会有所不同。基本上,在处理WMS时,我需要将我的文件(或文件块)上传到特定的临时URL,我不知道如何将其与块组合并设置块ID等。我也找不到任何信息关于互联网上的内容。
提前感谢任何建议!
答案 0 :(得分:4)
您没有说出您使用哪个平台来构建应用程序(我猜它的.net?)
根据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)并以此方式上传。
完全披露:我写了this blog post,其中解释了如何构建可以上传文件的异步上传页面。它使用Azure REST API上传所有文件块,使用Windows Azure Media Services SDK与媒体服务进行通信,并创建用于上传文件的定位器(您提到的临时URL)。
有很多代码涉及到这项工作,所以我创建了一个简单的demo app(用JS和.net编写)与帖子一起使用。如果你不在.net中这样做,你仍然可以使用代码的JS部分,只是你需要通过Azure REST API获取上传定位器以及点。
非常简化,上传/转码工作流程如下:
我还建议您阅读有关将大型文件上传到Azure存储的Gaurav Mantri's post。它解释了很多,并且非常好地阅读了这个主题。