使用 Azure 媒体播放器按需查看 Azure 存储中的 MP4 文件

On-demand viewing of MP4 files from Azure Storage with Azure Media Player

我正在做一个学校项目并使用我的 MSDN 订阅来访问 Azure。我写了一个程序,可以定时从专用网络上传 MP4 录音(视频监控)到 Azure 存储。

我希望能够使用 Azure 媒体播放器查看这些 MP4 文件。我将是唯一一个使用此流的人,而且它只会很少使用(在休假期间)。我尝试了一下 Azure 媒体服务,似乎我可以获得媒体播放器“端点”的唯一方法是打开一个实时流媒体频道。一旦我这样做了,它就给了我一个端点,我把它放在播放器中,它按预期播放了我的视频。我根据这个原型向我的教授提交了我的项目提案,并获得批准作为我的学期项目(我成绩的 40%)。

令我惊讶的是,两天后我收到一封电子邮件提醒,说我的 Azure 帐户由于超过每月 50 美元的分配而自动关闭。我很惊讶,因为我上传的文件只有 5MB,而且我在概念验证工作期间只下载了两次。

在查看我的账单明细时,我发现所有这些费用似乎都来自媒体服务频道,而且似乎是基于频道“有效”的时间。这 43 个小时几乎用光了我这个月的全部配额。

这是我的问题(请记住,我是一名体面的 C# 开发人员,但对 Azure 的所有事物完全不熟悉):

1) 我这样做是否正确?我需要实时流媒体频道才能使用 Azure 媒体播放器吗?

2) 如果对上述情况是肯定的,有没有办法可以通过代码 start/stop 直播服务?通过这种方式,我可以向 Azure 发送命令以在需要查看时唤醒频道,然后在完成时关闭吗?

3) 是否有其他一些基于 html5 的媒体播放器可以用于 Azure 文件存储,从而绕过实时流媒体频道和相关费用?

感谢您的帮助。当我打电话给 Microsoft 支持时,他们所能做的就是向我解释帐单并引导我到这里寻求技术支持。

您可以将 Azure Media Player 直接指向 mp4 文件的 "Absolute URI",标记文件并单击底部的 "Edit"。

根据您的项目描述,您已经将文件编码为 mp4 并上传到 Azure 媒体服务。 您无需创建流媒体端点并启动实时频道来播放您的文件。您需要指示系统生成播放 url,您可以在定义的时间段内访问它,并在播放器中使用此 url。

代码示例:

        IAsset asset =_mediaContext.Assets.Where(c=>c.Name="Your MP4 Asset").First();

        IAccessPolicy accessPolicy = _mediaContext.AccessPolicies.Create("Read15Min", TimeSpan.FromMinutes(15), AccessPermissions.Read);           

        ILocator locator = _mediaContext.Locators.CreateLocator("ReadOnlyLocator", LocatorType.Sas, asset, accessPolicy, startTime: null);

        var uribuilder = new UriBuilder(locator.Path);
        uribuilder.Path += "/" + asset.AssetFiles.First().Name;
        var fileUri = uribuilder.ToString();

要测试它是否真的有效,只需转到 http://aka.ms/azuremediaplayer 并将 fileUri 的值粘贴到 Url 输入文本框。

如果您认真对待安全问题,我建议您阅读 Content Protection in Azure Media Services and dynamically encrypt content to use token authentication. In my blog post 我展示了如何将 Azure AD 身份验证集成到您的 ASP.NET MVC 应用程序与 Azure 媒体服务中以保护您的内容。