问题排查

本页介绍如何解决 Transcoder API 的问题。本页显示的错误特定于 Transcoder API。如需了解各种 Google API 中的一般性错误,请参阅 Cloud API 错误页面。

该服务使用作业资源的 error 字段报告错误。该字段包含一个 google.rpc.Status 类型的对象。此对象包含其他错误信息,包括错误代码、错误消息和错误详细信息。

仅返回第一个错误。如果作业遇到多个错误,您需要修复返回的错误并重新创建作业以查看下一个错误。

Cloud Storage 权限被拒绝

如果 Transcoder API 服务账号没有对 Cloud Storage 中位置的输入或输出的读写权限,则会发生以下问题。

{
   "code":7, # HTTP error code 403
   "message":"Permission denied for Google Cloud Storage.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.ErrorInfo",
         "reason":"GCSPermissionDenied",
         "domain":"transcoder.googleapis.com",
         "metadata":{
           "details":"my_service_account@my_project.iam.gserviceaccount.com does
             not have storage.objects.get access to gs://example/input/video.mp4."
         }
      }
}

如需解决此问题,请确保自动创建的服务账号具有正确的权限。如需详细了解服务账号,请参阅访问 Cloud Storage 和 Pub/Sub

Pub/Sub 权限被拒绝

当 Transcoder API 服务账号没有适当的权限发布到 Pub/Sub 主题时,会出现以下问题。

{
   "code":7, # HTTP error code 403
   "message":"Permission denied for PubSub.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.ErrorInfo",
         "reason":"PubSubPermissionDenied",
         "domain":"transcoder.googleapis.com",
         "metadata":{
           "details":"my_service_account@my_project.iam.gserviceaccount.com does not
             have pubsub.topic.publish access to /projects/test-project/topic/test-topic."
         }
      }
}

如需解决此问题,请确保自动创建的服务账号具有正确的权限。如需详细了解服务账号,请参阅访问 Cloud Storage 和 Pub/Sub

Pub/Sub 目标无效

当 Pub/Sub 目标是无效的 Pub/Sub 主题资源路径时,会发生以下问题。

{
   "code":3, # HTTP error code 400
   "message":"No video stream found in ffprobe output.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.pubsubDestination.topic",
         "description":"InvalidPubsubDestination"
      }
   ]
}

如需解决此问题,请确保 Pub/Sub 主题存在且以正确的格式指定。如需了解详情,请参阅作业更新的 Pub/Sub 通知

找不到输入

如果在 Cloud Storage 找不到输入文件,则会发生以下问题。

{
    "code": 5, # HTTP error code 404
    "message": "No such object: my-bucket/input.mp4",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "InputNotFound",
        "domain": "transcoder.googleapis.com",
        "metadata": {
          "details": "No such object:  my-bucket/input.mp4"
        }
      }
    ]
}

如需解决此问题,请确保输入文件存在,该文件的 inputUri 正确无误,并且 Transcoder API 服务账号有权访问文件。如果输入文件位于其他项目中,则可能需要公开 Cloud Storage 存储桶(如需了解详情,请参阅 Cloud Storage 访问权限控制)。

配置缺失

如果缺少作业配置字段,则会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"endTimeOffset of atom atom0 not set.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.editList[0].endTimeOffset",
         "description":"ConfigurationMissing"
      }
   ]
}

如需解决此问题,请检查错误消息中提到的 JobConfig 字段。

配置值无效

当作业配置包含无效值时,会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"config.inputs[1].preprocessingConfig.crop is invalid, the input (input0)
     to have a video track with width and height",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.input[1].processingConfig.crop",
         "description":"InvalidConfigValue"
      }
   ]
}

如需解决此问题,请检查错误消息中提到的 JobConfig 字段。

时间偏移无效

当作业配置中的开始时间偏移或结束时间偏移无效时,会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"Request field config.editList[0].startTimeOffset is 200s, expected
     start time less than the minimum duration of all inputs for this atom (198.86s).",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.editList[0].startTimeOffset",
         "description":"InvalidTimeOffset"
      }
   ]
}

如需解决此问题,请确保 endTimeOffset 大于 startTimeOffset。两个偏移量都不应超过输入文件的时长。

超出转码限制

当输入或输入配置超出服务的限制时,会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"at most 400 GB input.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.editList[0].startTimeOffset",
         "description":"ExceedTranscodeLimit"
      }
   ]
}

要解决此问题,请确保作业配置保持在服务限制范围内。

缺少视频

如果在配置中未指定视频流或未在输入文件中检测到任何视频,则会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"No video stream found in ffprobe output.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.input",
         "description":"VideoMissing"
      }
   ]
}

要解决此问题,请检查作业配置中指定了视频流,并且输入文件包含视频流。

缺少音频

如果在 editList 中未指定音轨或未在输入文件中检测到音轨,则会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"atom atom0 does not have any inputs (input0) with an audio track.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.editList[0].input[0]",
         "description":"AudioMissing"
      }
   ]
}

如需解决此问题,请检查作业配置中是否指定了音轨,以及输入文件是否包含音轨。

缺少文字

如果指定了文本流,但修改列表中或输入文件中没有可用的文本轨道,则会发生以下问题。

{
   "code":3, # HTTP error code 400
   "message":"atom atom0 does not have any inputs (input0) with a text track.",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.editList[0].input[0]",
         "description":"TextMissing"
      }
   ]
}

如果在作业配置中指定了文本轨道,请确保 editList 和输入文件中已存在该文本轨道。请参阅示例配置

缺少有效的轨道或频道

当基本流映射中的输入轨道或通道未引用有效的音频/文本流轨道或通道时,会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"Request field config.elementaryStreams[0].mapping[0].channels[0].inputs[0].track
     is 2, no valid audio track available, expected an index to a valid audio track in input
     input0.",
   "details":[
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.elementaryStreams[0].mapping[0].channels[0].inputs[0].track",
         "description":"ValidTrackOrChannelMissing"
   ]
}

要解决此问题,请检查输入视频/音频/文本和基本流映射(请参阅流映射示例)。

输入不受支持

如果输入文件损坏或不是采用支持的格式,会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"Input files are not supported",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "UnsupportedInput",
        "domain": "transcoder.googleapis.com",
        "metadata": {
          "details": "Input is not supported. Input key = example_key, input uri = gs://example/input/video.mp4."
        }
      }
    ]
}

如需解决此问题,请检查输入文件是否有效以及是否为支持的格式

输入格式不正确

如果输入文件格式不正确,且无法解码,就会出现以下问题。

{
   "code":3, # HTTP error code 400
   "message":"Input is malformed and cannot be decoded.",
   "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "MalformattedInput",
        "domain": "transcoder.googleapis.com",
        "metadata": {
          "details": "Input is malformed. Input key = example_key, input uri = gs://example/input/video.mp4."
        }
      }
    ]
}

如需解决此问题,请检查输入文件是否有效以及是否为支持的格式

内部错误

当内部服务错误阻止作业成功完成时,会发生以下问题。

{
   "code":13, # HTTP error code 500
   "message":"InternalError",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.ErrorInfo",
         "reason":"InternalError",
         "domain":"transcoder.googleapis.com",
         "metadata":{
            "details":"Failed to transcode job"
         }
      }
   ]
}

如需解决此问题,请检查输入文件是否有效以及是否为支持的格式。检查 JobConfig 是否存在错误。

如需了解更多支持选项,请参阅获取支持