פתרון בעיות

בדף הזה מוסבר איך לפתור בעיות ב-Transcoder API. השגיאות שמוצגות בדף הזה ספציפיות ל-Transcoder API. מידע על שגיאות כלליות בממשקי Google API זמין בדף Errors של Cloud APIs.

השירות מדווח על שגיאות באמצעות השדה 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 ביעד הוא לא תקין.

{
   "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 מושבתת.

אפשרויות נוספות לקבלת תמיכה מפורטות במאמר קבלת תמיכה.

בעיות איכות

אם נתקלתם באיכות וידאו או אודיו נמוכה בפלט, למשל ארטיפקטים, חוסר פריים, בעיות בסנכרון אודיו/וידאו, יכול להיות שהסיבה לכך היא מאפיינים של קובץ הקלט, כמו אריזה או קידוד לא סטנדרטיים. כדי לצמצם את הבעיות האלה, אפשר לבצע את הפעולות הבאות:

  1. צריך לוודא שקובץ הקלט תקין ושהוא בפורמט נתמך.
  2. בודקים שקובץ JobConfig תקין ושהוא מקודד באמצעות פרופילי הקידוד המומלצים.
  3. מנסים להפעיל מחדש את המשימה עם האפשרות optimization מושבתת.
  4. מנסים שוב להריץ את העבודה עם fillContentGaps שמוגדר ל-true ועם frameRateConversion שמוגדר ל-DROP_DUPLICATE.

אפשרויות נוספות לקבלת תמיכה מפורטות במאמר קבלת תמיכה.