疑難排解

本頁說明如何解決 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 bucket 設為公開 (詳情請參閱 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

如需其他支援選項,請參閱「取得支援」。

品質問題

如果輸出內容的視訊或音訊品質不佳,例如出現影像失真、遺失影格或影音同步問題,可能是因為輸入檔案的特性 (例如非標準的封裝或編碼)。你可以採取下列步驟來減輕這些問題:

  1. 確認輸入檔案有效,且採用支援的格式
  2. 確認 JobConfig 沒有錯誤,並使用建議的編碼設定檔
  3. 請重試工作,並停用 optimization
  4. fillContentGaps 設為 true,並將 frameRateConversion 設為 DROP_DUPLICATE,然後重試工作。

如需其他支援選項,請參閱「取得支援」。