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

How to properly upload video files to Azure Media Services from angularjs

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

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

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

1.Is 有一种方法可以将文件直接上传到媒体服务:

  • 媒体服务 SDK 要求您首先在我们的系统中创建一个资产对象。该资产对象由存储中的容器支持。您可以创建一个空的资产对象,并请求一个只写的 SAS URL(我们在 API 中称它们为 "Locators")以将您的内容直接上传到其中。您可能想检查这个 AngularJS 模块,看看它是否有效。 http://ngmodules.org/modules/angular-azure-blob-upload

2.Can 有人提供了一个最终示例来演示从 Web 前端上传到最终在 AMS 中的文件的流程吗?

  • 您的网站 API/frontend 应首先使用媒体服务 SDK 创建空资产。创建后,手动创建一个只写 SAS URL 并将其交还给您的 Angular 客户端。然后 Angular 客户端可以使用客户端 javascript 库直接上传到 blob/container 使用 SAS URL 和一个用于 azure-blob 上传的模块,如下所示:http://ngmodules.org/modules/angular-azure-blob-upload

3.Once 楼上,有没有办法保证用户可以观看但不能下载视频?

  • 视频上传后,您应该从您的资产定位器集合中删除只写 SAS "Locator"。这样,没有人可以用它再次写入。
  • 此时您可以创建一个 Streaming Locator。用户将只能通过我们的流媒体服务流式传输文件。您的文件必须以我们可以支持流式传输的格式进行编码,因此您可能必须先启动编码工作才能将其转换为正确的格式和编码设置(具有 H264 和 AAC 音频的 MP4 文件)。如果您想从媒体服务流式传输,您需要确保您的帐户上至少启用了 1 个流式传输预留单元。此外,如果您希望保护您的文件,您可以查看我们的内容保护服务,该服务将为您的资产提供实时 AES 128 或 PlayReady DRM 加密。您可以将其与 JWT 令牌和 Active Directory 集成到 authenticate/auth 您的用户,然后他们才能在客户端解密视频。

A​​MS 为所有媒体处理功能(包括上传、编码、发布)提供 Rest API。 GitHub 中有一个示例项目(postman 集合)可供使用。这个示例项目还附有一篇写得很好的文章。请找到下面的链接。

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

希望这会有所帮助