如何从angularjs正确上传video文件到Azure媒体服务

对于我的场景,我们当前的应用程序开始用html5编码,angularjs用web api进行通信。 我有一个工作流场景,我似乎无法找到端到端的示例。 我想允许我的网站用户将video和图像上传到Azure Media Services。 我发现了几个似乎将数据从网页移动到blob存储然后复制到azure媒体服务的示例。

  1. 有没有办法将文件直接上传到媒体服务,而不是有一个临时和永久的blob容器(一个绑定到AMS),因为这种方法似乎迫使我有一个额外的存储容器或是否有办法移动文件到blob存储,然后通过IAssetFile将blob文件链接到AMS?
  2. 有人可以提供一个结束示例来演示从Web前端上传到最终在AMS中的文件的流程吗?
  3. 一旦到那里,有没有办法确保用户可以查看但不能下载video?

1.有没有办法将文件直接上传到媒体服务:

  • Media Services SDK要求您首先在我们的系统中创建Asset对象。 Asset对象由Storage中的容器支持。 您可以创建一个空的Asset对象,并请求只写SAS URL(我们在API中称之为“Locators”)将您的内容直接上传到。 您可能想要查看此AngularJS模块并查看它是否有效。 http://ngmodules.org/modules/angular-azure-blob-upload

2.有人可以提供一个结束示例,演示从Web前端上传到AMS结尾的文件的流程吗?

  • 您的Web API /前端应使用Media Services SDK首先创建空资产。 创建后,手动创建一个只写SAS URL并将其交回Angular客户端。 然后,Angular客户端可以使用客户端javascript库直接上传到blob /容器,使用SAS URL和azure-blob上传模块,如下所示: http : //ngmodules.org/modules/angular-azure-blob -upload

3.在那里,有没有办法确保用户可以查看但不能下载video?

  • 上传video后,您应该从Asset的Locators集合中删除Write only SAS“Locator”。 这样,没有人可以再用它来写。
  • 此时,您可以创建流式定位器。 用户只能通过我们的流媒体服务流式传输文件。 您的文件必须以我们可以支持流式传输的格式进行编码,因此您可能必须先启动编码作业才能将其设置为正确的格式和编码设置(带有H264和AAC音频的MP4文件)。 如果您想从媒体服务流式传输,则需要确保您的帐户至少启用了1个流媒体预留单元。 此外,如果您希望保护文件,可以查看我们的内容保护服务,该服务将为您的资产提供即时AES 128或PlayReady DRM加密。 您可以将其与JWT令牌和Active Directory集成,以便在用户能够在客户端解密video之前对用户进行身份validation/身份validation。

我对Azure媒体服务不太熟悉,但在查看本指南http://azure.microsoft.com/en-us/documentation/articles/media-services-rest-get-started/后 ,在我看来,你可以在Azure Media Services上创建资产并将其链接到blob。 这意味着你只有一个blob容器。