问题排查

本页介绍如何解决 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.",
   "status":"PERMISSION_DENIED",
   "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.",
   "status":"PERMISSION_DENIED",
   "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.",
   "status":"BAD_REQUEST",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.pubsubDestination.topic",
         "description":"InvalidPubsubDestination"
      }
   ]
}

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

找不到输入

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

{
   "code":3, # HTTP error code 400
   "message":"gs://input.mp4 does not exist.",
   "status":"BAD_REQUEST",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.input",
         "description":"InputNotFound"
      }
   ]
}

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

配置缺失

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

{
   "code":3, # HTTP error code 400
   "message":"endTimeOffset of atom atom0 not set.",
   "status":"BAD_REQUEST",
   "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",
   "status":"BAD_REQUEST",
   "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).",
   "status":"BAD_REQUEST",
   "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.",
   "status":"BAD_REQUEST",
   "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.",
   "status":"BAD_REQUEST",
   "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.",
   "status":"BAD_REQUEST",
   "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.",
   "status":"BAD_REQUEST",
   "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.",
   "status":"BAD_REQUEST",
   "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",
   "status":"BAD_REQUEST",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.inputs",
         "description":"UnsupportedInput",
      }
   ]
}

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

输入格式不正确

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

{
   "code":3, # HTTP error code 400
   "message":"Input is malformed and cannot be decoded.",
   "status":"BAD_REQUEST",
   "details":[
      {
         "@type":"type.googleapis.com/google.rpc.BadRequest",
         "field":"config.inputs",
         "description":"MalformattedInput",
      }
   ]
}

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

内部错误

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

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

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

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