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

时间:2015-01-13 17:20:43

标签: c# azure-storage-blobs azure-media-services

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

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

AMS为所有媒体处理功能(包括上载,编码,发布)提供Rest API。 GitHub上有一个示例项目(邮递员收藏)可以玩。该示例项目还随附一篇写得很好的文章。请在下面找到链接。

https://github.com/Azure-Samples/media-services-v3-rest-postman

https://docs.microsoft.com/en-us/azure/media-services/latest/stream-files-tutorial-with-rest

希望这会有所帮助