문제 해결하기

이 페이지에서는 Transcoder API에서 문제를 해결하는 방법을 설명합니다. 이 페이지에 표시된 오류는 Transcoder API와 관련이 있습니다. Google API 전반의 일반적인 오류에 대한 자세한 내용은 Cloud API 오류 페이지를 참조하세요.

서비스는 작업 리소스의 error 필드를 사용하여 오류를 보고합니다. 이 필드에는 google.rpc.Status 유형의 객체가 포함됩니다. 이 객체에는 오류 코드, 오류 메시지, 오류 세부정보 등 추가 오류 정보가 포함됩니다.

첫 번째 오류만 반환됩니다. 작업에서 오류가 여러 개 발생하면 반환된 오류를 수정하고 작업을 다시 만들어 다음 오류를 확인해야 합니다.

Cloud Storage 권한이 거부됨

다음 문제는 Cloud Storage의 위치에서 Transcoder API 서비스 계정에 입력이나 출력에 대한 읽기/쓰기 권한이 없으면 발생합니다.

{
   "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 권한이 거부됨

다음 문제는 Pub/Sub 주제에 게시할 수 있는 적절한 권한이 Transcoder API 서비스 계정에 없으면 발생합니다.

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

이 문제를 해결하려면 endTimeOffsetstartTimeOffset보다 큰지 확인합니다. 두 오프셋 모두 입력이나 출력의 지속 시간을 초과할 수 없습니다.

트랜스코드 한도 초과

입력이나 입력 구성이 서비스 한도를 초과하면 다음 문제가 발생합니다.

{
   "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에 오류가 없는지 확인합니다.

추가 지원 옵션은 지원 받기를 참조하세요.