Troubleshooting

This page shows you how to resolve issues with the Transcoder API. The errors shown on this page are specific to the Transcoder API. For information on generic errors across Google APIs, see the Cloud APIs Errors page.

The service reports errors using the error field of the job resource. This field contains an object of type google.rpc.Status. This object contains additional error information, including the error code, error message, and error details.

Only the first error is returned. If a job encounters multiple errors, you need to fix the returned error and recreate the job to see the next error.

Cloud Storage permission denied

The following issue occurs when the Transcoder API service account doesn't have read/write permission for input or output on a location in 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."
         }
      }
}

To resolve this issue, make sure the automatically created service account has the correct permissions. See Access to Cloud Storage and Pub/Sub for more information on the service account.

Pub/Sub permission denied

The following issue occurs when the Transcoder API service account doesn't have the proper permissions for publishing to a Pub/Sub topic.

{
   "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."
         }
      }
}

To resolve this issue, make sure the automatically-created service account has the correct permissions. See section Access to Cloud Storage and Pub/Sub for more information on the service account.

Invalid Pub/Sub destination

The following issue occurs when the Pub/Sub destination is an invalid Pub/Sub topic resource path.

{
   "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"
      }
   ]
}

To resolve this issue, make sure the Pub/Sub topic exists and is specified in the correct format. See Pub/Sub notifications for job updates for more information.

Input not found

The following issue occurs when the input file cannot be found on 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"
      }
   ]
}

To resolve this issue, make sure the input file exists, the inputUri to the file is correct, and that the Transcoder API service account has permissions to access the file. If the input file exists in a different project, you may need to make the Cloud Storage bucket public (see Cloud Storage Access control for more information).

Configuration missing

The following issue occurs when a job configuration field is missing.

{
   "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"
      }
   ]
}

To resolve this issue, check the JobConfig field mentioned in the error message.

Invalid configuration value

The following issue occurs when the job configuration contains an invalid value.

{
   "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"
      }
   ]
}

To resolve this issue, check the JobConfig field mentioned in the error message.

Invalid time offset

The following issue occurs when the start time offset or end time offset in the job configuration is not valid.

{
   "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"
      }
   ]
}

To resolve this issue, make sure that endTimeOffset is larger than startTimeOffset. Both offsets should not exceed the duration of the inputs or outputs.

Exceed transcode limits

The following issue occurs when an input or the input configuration exceeds the limits for the service.

{
   "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"
      }
   ]
}

To resolve this issue, make sure the job configuration stays within the service limits.

Video missing

The following issue occurs when no video stream is specified in the configuration or no video is detected in the input file.

{
   "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"
      }
   ]
}

To resolve this issue, check that a video stream is specified in the job configuration and that the input file contains a video stream.

Audio missing

The following issue occurs when no audio track is specified in the editList or no audio track is detected in the input file.

{
   "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"
      }
   ]
}

To resolve this issue, check that an audio track is specified in the job configuration and that the input file contains an audio track.

Text missing

The following issue occurs when a text stream is specified, but no text track is available in the edit list or in the input file.

{
   "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"
      }
   ]
}

If a text track is specified in the job configuration, make sure one exists in the editList and the input file. See an example configuration.

Valid track or channel missing

The following issue occurs when the input track or channel in an elementary stream mapping doesn't refer to a valid audio/text stream track or channel.

{
   "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"
   ]
}

To resolve this issue, check the input video/audio/text and the elementary stream mapping (see example stream mappings).

Unsupported input

The following issue occurs when the input file is corrupt or not in a supported format.

{
   "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",
      }
   ]
}

To resolve this issue, check that the input file is valid and in a supported format.

Malformed input

The following issue occurs when the input file is malformed and cannot be decoded.

{
   "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",
      }
   ]
}

To resolve this issue, check that the input file is valid and in a supported format.

Internal error

The following issue occurs when an internal service error prevented the job from completing successfully.

{
   "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"
         }
      }
   ]
}

To resolve this issue, check that the input file is valid and in a supported format. Check that the JobConfig is free from errors.

See Getting support for further support options.