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

Upload .VTT captions with Azure Media Service video streams

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

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

我已设法检索到视频的流式传输列表 URL,流式传输效果很好(视频可以播放)。

下一步是上传 .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 中的高级选项显示视频和字幕。标题出现在选项中,但实际文字不会出现在屏幕上。

我有 2 个问题 -

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

  2. 如果1.的答案是Yes,字幕流URL应该如何生成?以上示例是否正确?

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

StreamingPolicyName = PredefinedStreamingPolicy.DownloadAndClearStreaming

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

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