创建 Azure 媒体服务 v3 作业时的 presetOverride

presetOverride when creating Azure Media Services v3 Job

通过 REST API 创建 Azure 媒体服务作业时,我无法按照文档中的定义在 JobOutputAsset 上设置 presetOverrides 属性:https://docs.microsoft.com/en-us/rest/api/media/jobs/create#joboutputasset

我的请求正文是:

{
 "properties": {
    "input": {
      "@odata.type": "#Microsoft.Media.JobInputAsset",
      "assetName": "inputAsset"
    },
    "outputs": [
      {
        "@odata.type": "#Microsoft.Media.JobOutputAsset",
        "assetName": "outputAsset",
        "label": "en-US",
        "presetOverride": {
            "@odata.type": "#Microsoft.Media.AudioAnalyzerPreset",
            "audioLanguage": "en-US",
            "mode": "Basic"
        }
      }
    ],
    "priority" : "Normal"
 }
}

抛出的错误信息是:

{
    "error": {
        "code": "InvalidResource",
        "message": "The property 'presetOverride' does not exist on type 'Microsoft.Media.JobOutputAsset'. Make sure to only use property names that are defined by the type."
    }
}

删除 presetOverride 数据时,一切正常。官方文档明确指出 Microsoft.Media.JobOutputAsset 确实有 presetOverride 属性。我做错了什么?

Rene 有几个问题。我不建议直接对任何 Azure 服务使用原始 REST API。原因是有很多内置的重试场景和重试策略已经融入客户端 SDK。我们有许多客户尝试推出他们自己的 REST API 库,但 运行 在生产中遇到了很多问题,因为他们没有阅读如何处理和编写他们自己的自定义重试策略代码。 除非您真的很熟悉滚动自己的重试策略以及 Azure 资源管理网关的工作原理,否则请尽量避免使用它并只使用官方客户端 SDK - 请参阅此处 - https://docs.microsoft.com/en-us/azure/architecture/best-practices/retry-service-specific#general-rest-and-retry-guidelines

现在,回答您的具体问题 - 尝试在 .NET 中使用我的示例,看看它是否能回答您的问题。 https://github.com/Azure-Samples/media-services-v3-dotnet/blob/3ab85647cbadd2b868aadf175afdede67b40b2fd/AudioAnalytics/AudioAnalyzer/Program.cs#L129

我也可以在 Node.js/Typescript 中提供一个工作示例,如果你愿意的话。它使用我们 Javascript SDK 的最新 10.0.0 版本。 我今天正在处理这个 repo 中的示例 - https://github.com/Azure-Samples/media-services-v3-node-tutorials

更新:在 Typescript 示例中添加了基本音频。 https://github.com/Azure-Samples/media-services-v3-node-tutorials/blob/main/AudioAnalytics/index.ts

显示如何使用每个作业的预设覆盖。

在与 Azure 媒体服务 REST API 通信时,select 正确的 API 版本很重要 API。

在这种情况下,使用了 Azure 媒体服务邮递员示例中的 api 版本 2020-05-01。但是 presetOverride 选项只能从版本 2021-06-01.

开始使用

api-version=2021-06-01 设置为 GET 参数可启用预设覆盖。