使用 Azure 媒体服务视频流上传 .VTT 字幕

问题描述

我正在尝试将 MP4 视频上传到 Azure 媒体服务;使其可通过流式传输 URL 进行流式传输,以及更重要且特别针对此问题:上传要在视频中显示的 .VTT 字幕。

我致力于在此 tutorial 中集成代码,更具体地说,将 EncodeAndStreamFiles 示例应用(在文档中描述)作为 DotNetCore API。

我设法检索了视频的流媒体网址列表,并且流媒体运行良好(视频可播放)。

下一步是上传 .VTT 字幕(或副标题)。不幸的是,我没有找到任何来自微软的关于这个主题的官方文档。这个 Stack Overflow question 是我找到的唯一有用的信息。根据问题的答案;我将标题上传到与视频输出资产相同的 blob 容器中,并通过编辑视频的流媒体 URL(替换最后一部分)来引用它。

因此,如果视频的流媒体 URL 是这样的:

https://azuremediaservicename-euwe.streaming.media.azure.net/2e262dca-23d9-453d-be00-6a7e60167ab7/HR%20documents.ism/manifest(format=m3u8-aapl)

那么字幕的流媒体 URL 将是:

https://azuremediaservicename-euwe.streaming.media.azure.net/2e262dca-23d9-453d-be00-6a7e60167ab7/HR%20documents.vtt

我正在尝试使用此 tool 中的高级选项显示视频和字幕。标题出现在选项中,但实际字词不会出现在屏幕上。

我有两个问题 -

  1. 将字幕作为 blob 容器的一部分上传是否是上传字幕的正确方法?或者有没有更好的方法(也许通过 SDK)我还没有遇到过?

  2. 如果 1. 的答案是肯定的,那么字幕的流媒体 URL 应该如何生成?上面的例子是否正确?

解决方法

如果要将 VTT 文件存储在与资产相同的存储容器中,并使其可供下载,则需要将预定义策略更改为

StreamingPolicyName = PredefinedStreamingPolicy.DownloadAndClearStreaming

在第 https://github.com/Azure-Samples/media-services-v3-dotnet-tutorials/blob/master/AMSV3Tutorials/UploadEncodeAndStreamFiles/Program.cs#L403

此方法适用于清晰内容,但不适用于受保护 (DRM) 内容。对于受保护的内容,您应该为字幕文件使用单独的容器(或资产)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...