בדף הזה מוסבר איך להוסיף שכבות-על לסרטונים שעברו המרה. שכבת-על
מורכבת מתמונה שמוסיפים מעל סרטון הפלט, ואפשר
גם להגדיר שהיא תופיע בהדרגה או תיעלם בהדרגה במהלך פרק זמן מסוים. כדי להוסיף שכבת-על, משתמשים במערך overlays בתבנית JobConfig.
רשימת הפורמטים הנתמכים של קובצי תמונות
העלאת תמונה ל-Cloud Storage
כדי להתחיל, מבצעים את הפעולות הבאות כדי להעלות תמונת שכבת-על לקטגוריה של Cloud Storage:
- פותחים את הדף Cloud Storage Browser במסוף Google Cloud .
כניסה לדף Cloud Storage Browser - לוחצים על שם ה-bucket כדי לפתוח אותו.
- לוחצים על Upload files.
- בוחרים קובץ תמונה להעלאה מהמחשב המקומי.
יצירת שכבת-על
אפשר ליצור שני סוגים של שכבות-על: סטטיות או מונפשות. בשני סוגי שכבות-העל נעשה שימוש בתמונה סטטית. אפשר להציג או להסתיר שכבות-על סטטיות. שכבות-על עם אנימציה תומכות באנימציות של הופעה הדרגתית והיעלמות הדרגתית של התמונה.
אפשר להוסיף כמה שכבות-על לסרטון פלט אחד.
יצירת שכבת-על סטטית
באובייקט image, משתמשים בשדה uri כדי לציין את תמונת השכבת-העל ב-Cloud Storage. באובייקט resolution, מגדירים את הערכים x ו-y מ-0 עד 1.0. ערך של 0 שומר על הרזולוציה של תמונת המקור עבור המימד הזה, וערך של 1.0 ימתח את התמונה כך שתתאים למימד של סרטון הפלט. לדוגמה, כדי למתוח את תמונת השכבת-העל לרוחב המלא ולחצי מהגובה של סרטון הפלט, משתמשים בערכים x: 1 ו-y:
0.5.
במערך animations, יוצרים אובייקט animationStatic עם קואורדינטות x ו-y מ-0 עד 1.0. הקואורדינטות האלה מבוססות על הרזולוציה של סרטון הפלט. משתמשים בערכים x: 0 ו-y: 0 כדי למקם את הפינה הימנית העליונה של שכבת העל בפינה הימנית העליונה של סרטון הפלט. בשדה startTimeOffset מציינים מתי שכבת-העל צריכה להופיע בציר הזמן של סרטון הפלט.
כדי להסיר את האנימציה הסטטית, יוצרים אובייקט animationEnd. בשדה startTimeOffset מציינים מתי האנימציה צריכה להסתיים (כלומר, מתי שכבת העל צריכה להיעלם) בציר הזמן של סרטון הפלט.
אפשר להוסיף את ההגדרה הזו לתבנית של משימה או לכלול אותה בהגדרה של משימה אד-הוק:
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud שמופיע בהגדרות IAM. -
LOCATION: המיקום שבו המשימה תפעל. להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
-
STORAGE_BUCKET_NAME: השם של הקטגוריה שיצרתם ב-Cloud Storage. -
STORAGE_INPUT_VIDEO: השם של הסרטון בקטגוריית Cloud Storage שאתם מקודדים, כמוmy-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). -
STORAGE_INPUT_OVERLAY: השם של התמונה בקטגוריית Cloud Storage שבה אתם משתמשים בשביל השכבה, למשלmy-overlay.png. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-overlay.png). -
STORAGE_OUTPUT_FOLDER: שם התיקייה ב-Cloud Storage שבה רוצים לשמור את פלט הווידאו המקודד.
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
"config": {
...
},
"state": "PENDING",
"createTime": CREATE_TIME,
"ttlAfterCompletionDays": 30
}
gcloud
- יוצרים קובץ
request.jsonשמגדיר את שדות המשימה. מחליפים את הפרטים הבאים בפקודהgcloud:- STORAGE_BUCKET_NAME: השם של קטגוריית Cloud Storage שיצרתם.
- STORAGE_INPUT_VIDEO: השם של הסרטון בקטגוריית Cloud Storage שאתם מקודדים, כמו
my-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). - STORAGE_INPUT_OVERLAY: השם של קובץ התמונה בקטגוריית Cloud Storage שבה אתם משתמשים בשביל שכבת העל, למשל
my-overlay.png. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-overlay.png). - LOCATION: המיקום שבו המשימה תפעל. בוחרים מיקום מהרשימה הבאה.
הצגת מיקומים
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- STORAGE_OUTPUT_FOLDER: שם התיקייה ב-Cloud Storage שבה רוצים לשמור את פלט הסרטון המקודד.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- מריצים את הפקודה הבאה:
אמורה להופיע תגובה שדומה לזו:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי C#הוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API C# API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Go API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Java API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Node.js API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API PHP API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Python API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Ruby
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Rubyהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Ruby API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
בסרטון הפלט, לשכבת-העל הסטטית יש את המאפיינים הבאים:
- הוא מופיע בתחילת ציר הזמן ומוצג למשך 10 שניות.
- הוא נמתח לרוחב המלא ולחצי מהגובה של סרטון הפלט.
- הוא ממוקם בפינה הימנית העליונה של סרטון הפלט.
אפשר לראות סרטון לדוגמה של הפלט של ההגדרה הזו. בסרטון הזה נעשה שימוש בתמונה לדוגמה כשכבת-על.
יצירת שכבת-על מונפשת
באובייקט image, משתמשים בשדה uri כדי לציין את תמונת השכבת-העל ב-Cloud Storage. באובייקט resolution, מגדירים את הערכים x ו-y מ-0 עד 1.0. ערך של 0 שומר על הרזולוציה של תמונת המקור עבור המימד הזה, וערך של 1.0 ימתח את התמונה כך שתתאים למימד של סרטון הפלט. לדוגמה, כדי לשמור על הרזולוציה המקורית של תמונת שכבת העל, משתמשים בערכים x: 0 ו-y: 0.
במערך animations, יוצרים אובייקט animationFade עם fadeType של
FADE_IN. מגדירים את הקואורדינטות x ו-y מ-0 עד 1.0. הקואורדינטות האלה מבוססות על רזולוציית פלט הסרטון. כדי למקם את הפינה הימנית העליונה של שכבת העל במרכז של סרטון הפלט, משתמשים בערכים x: 0.5 ו-y: 0.5.
בשדה startTimeOffset מציינים מתי שכבת-העל צריכה להתחיל להופיע בציר הזמן של סרטון הפלט. השכבה העליונה צריכה להיות גלויה במלואה עד הזמן שמוגדר בשדה endTimeOffset.
כדי ליצור אפקט הדהייה של שכבת העל, יוצרים אובייקט animationFade נוסף. הפעם, מגדירים את fadeType לערך FADE_OUT. מזינים את קואורדינטות המיקום ואת שעות ההתחלה והסיום כמו קודם.
אפשר להוסיף את ההגדרה הזו לתבנית של משימה או לכלול אותה בהגדרה של משימה אד-הוק:
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud שמופיע בהגדרות IAM. -
LOCATION: המיקום שבו המשימה תפעל. להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
-
STORAGE_BUCKET_NAME: השם של הקטגוריה שיצרתם ב-Cloud Storage. -
STORAGE_INPUT_VIDEO: השם של הסרטון בקטגוריית Cloud Storage שאתם מקודדים, כמוmy-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). -
STORAGE_INPUT_OVERLAY: השם של התמונה בקטגוריית Cloud Storage שבה אתם משתמשים בשביל השכבה, למשלmy-overlay.png. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-overlay.png). -
STORAGE_OUTPUT_FOLDER: שם התיקייה ב-Cloud Storage שבה רוצים לשמור את פלט הווידאו המקודד.
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID",
"config": {
...
},
"state": "PENDING",
"createTime": CREATE_TIME,
"ttlAfterCompletionDays": 30
}
gcloud
- יוצרים קובץ
request.jsonשמגדיר את שדות המשימה. מחליפים את הפרטים הבאים בפקודהgcloud:- STORAGE_BUCKET_NAME: השם של קטגוריית Cloud Storage שיצרתם.
- STORAGE_INPUT_VIDEO: השם של הסרטון בקטגוריית Cloud Storage שאתם מקודדים, כמו
my-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). - STORAGE_INPUT_OVERLAY: השם של קובץ התמונה בקטגוריית Cloud Storage שבה אתם משתמשים בשביל שכבת העל, למשל
my-overlay.png. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-overlay.png). - LOCATION: המיקום שבו המשימה תפעל. בוחרים מיקום מהרשימה הבאה.
הצגת מיקומים
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- STORAGE_OUTPUT_FOLDER: שם התיקייה ב-Cloud Storage שבה רוצים לשמור את פלט הסרטון המקודד.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- מריצים את הפקודה הבאה:
אמורה להופיע תגובה שדומה לזו:gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי C#הוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API C# API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Go API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Java API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Node.js API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API PHP API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Python API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Ruby
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Rubyהוראות ההגדרה שבמדריך לתחילת העבודה עם Transcoder API באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Transcoder API Ruby API.
כדי לבצע אימות ב-Transcoder API, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
בסרטון שנוצר, שכבת-העל המונפשת כוללת את המאפיינים הבאים:
- הוא מתחיל לדהות פנימה בסימן של 5 שניות בסרטון הפלט. ערך האלפא של שכבת העל מתחיל ב-0 ומסתיים ב-1.0. הפינה השמאלית העליונה של שכבת העל מופיעה במרכז של סרטון הפלט. שכבת-העל מופיעה ברזולוציה המקורית של תמונת שכבת-העל.
- אחרי שהשכבה העליונה מופיעה בהדרגה, היא מוצגת למשך 2 שניות.
- ההנפשה מתחילה לדהות אחרי 12 שניות בסרטון הפלט. ערך האלפא של שכבת העל מתחיל ב-1.0 ומסתיים ב-0.
- האנימציה נעלמת אחרי 15 שניות.
אפשר לראות סרטון לדוגמה של הפלט עם ההגדרה הזו. בסרטון הזה נעשה שימוש בתמונה לדוגמה כשכבת-על.