对于我的场景,我们当前的应用程序是用 html5 和 angularjs 开始编码的,与 web api 通信。我有一个工作流场景,我似乎无法找到端到端的示例。我想允许我网站的用户将视频和图像上传到 Azure 媒体服务。我发现了几个示例,它们似乎将数据从网页移动到 blob 存储,然后复制到 azure 媒体服务。
- 有没有一种方法可以将文件直接上传到媒体服务,而不是使用临时和永久的 blob 容器(一个与 AMS 相关联),因为这种方法似乎迫使我有一个额外的存储容器或者有什么方法将文件移动到 blob 存储,然后通过 IAssetFile 将 blob 文件链接到 AMS?
- 有人可以提供一个最终示例来演示从 Web 前端上传到最终在 AMS 中的文件的流程吗?
- 在那里,有没有办法确保用户可以观看但不能下载视频?
最佳答案
1.有没有办法将文件直接上传到媒体服务:
- 媒体服务 SDK 要求您首先在我们的系统中创建一个 Assets 对象。该 Assets 对象由存储中的容器支持。您可以创建一个空的 Assets 对象,并请求一个只写的 SAS URL(我们在 API 中称它们为“定位器”)以将您的内容直接上传到其中。您可能想检查一下这个 AngularJS 模块,看看它是否有效。 http://ngmodules.org/modules/angular-azure-blob-upload
2.有人可以提供一个最终示例来演示从 Web 前端上传到最终在 AMS 中的文件的流程吗?
- 您的网络 API/前端应首先使用媒体服务 SDK 创建空 Assets 。创建后,手动创建一个只写的 SAS URL 并将其交还给 Angular 客户端。然后,Angular 客户端可以使用客户端 javascript 库使用 SAS URL 和用于 azure-blob 上传的模块直接上传到 blob/容器,如下所示:http://ngmodules.org/modules/angular-azure-blob-upload
3.一旦到达那里,有没有办法确保用户可以观看但不能下载视频?
- 视频上传后,您应该从您的 Assets 定位器集合中删除只写 SAS“定位器”。这样,没有人可以用它再次写入。
- 此时您可以创建流媒体定位器。用户将只能通过我们的流媒体服务流式传输文件。您的文件必须以我们可以支持流式传输的格式进行编码,因此您可能必须先启动编码工作才能将其转换为正确的格式和编码设置(具有 H264 和 AAC 音频的 MP4 文件)。如果您想从媒体服务流式传输,您需要确保您的帐户上至少启用了 1 个流式传输预留单元。此外,如果您希望保护您的文件,您可以查看我们的内容保护服务,该服务将为您的 Assets 提供实时 AES 128 或 PlayReady DRM 加密。您可以将其与 JWT token 和 Active Directory 集成,以在用户能够在客户端解密视频之前对其进行身份验证/授权。
关于c# - 如何从 angularjs 正确地将视频文件上传到 Azure 媒体服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27927842/