๋ฌธ์ œ ํ•ด๊ฒฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” 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.",
   "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.",
   "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"
         }
      }
   ]
}

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ž…๋ ฅ ํŒŒ์ผ์ด ์œ ํšจํ•˜๊ณ  ์ง€์›๋˜๋Š” ํ˜•์‹์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. JobConfig์— ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  4. optimization์„ ์ค‘์ง€ํ•œ ์ƒํƒœ์—์„œ ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ง€์› ์˜ต์…˜์€ ์ง€์› ๋ฐ›๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.