בדף הזה נסביר איך לשלב כמה סרטוני קלט לסרטון פלט אחד. אפשר גם לחתוך את ציר הזמן של סרטוני הקלט.
לכל סרטון קלט, מוסיפים אובייקט Input למערך inputs.
כל אובייקט Input מגדיר את המפתח ואת ה-URI של סרטון הקלט המשויך. אפשר להוסיף אובייקט PreprocessingConfig אופציונלי ל-Input כדי לחתוך את סרטון הקלט, להוסיף לו שוליים או לבצע בו פעולות עיבוד מקדים אחרות. המערך inputs
לא מסודר, ואפשר להוסיף סרטוני קלט בכל סדר.
כדי להוסיף סרטון קלט לציר הזמן של סרטון הפלט, מוסיפים אובייקט EditAtom למערך editList. המערך
editList
מסודר. הקלט הראשון שמוגדר במערך הזה ישמש ראשון בסרטון הפלט, הקלט השני ישמש אחריו וכן הלאה. מזהים סרטון קלט לפי המפתח שלו.
אפשר גם לציין startTimeOffset ו-endTimeOffset כדי לחתוך את סרטון הקלט. השדות האלה הם אופציונליים. אם לא מציינים את השדות האלה, המערכת משתמשת בסרטון הקלט כולו.
ההגדרה הבאה משרשרת שני סרטוני קלט לסרטון פלט יחיד.
"inputs": [
{
"key": "input1",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1"
},
{
"key": "input2",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2"
}
],
"editList": [
{
"key": "atom1",
"inputs": [
"input1"
],
"startTimeOffset": "START_TIME_OFFSET1s",
"endTimeOffset": "END_TIME_OFFSET1s"
},
{
"key": "atom2",
"inputs": [
"input2"
],
"startTimeOffset": "START_TIME_OFFSET2s",
"endTimeOffset": "END_TIME_OFFSET2s"
}
],
אפשר להוסיף את ההגדרה הזו לתבנית של משימה או לכלול אותה בהגדרה של משימה אד-הוק:
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_VIDEO1: השם של סרטון בקטגוריה של Cloud Storage שאתם מקודדים, כמוmy-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). הסרטון הזה ישמש ראשון בציר הזמן של סרטון הפלט. -
START_TIME_OFFSET1: זמן ההתחלה, בשניות חלקיות (לדוגמה,0.0), ביחס לציר הזמן של סרטון הקלט הראשון. בשדה הזה אפשר לחתוך תוכן מתחילת הסרטון. -
END_TIME_OFFSET1: שעת הסיום, בשניות חלקיות (לדוגמה,8.1), ביחס לציר הזמן של סרטון הקלט הראשון. בשדה הזה אפשר לחתוך תוכן מהסוף של הסרטון. -
STORAGE_INPUT_VIDEO2: השם של סרטון בקטגוריה של Cloud Storage שאתם מקודדים, כמוmy-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). הסרטון הזה ישמש כסרטון השני בציר הזמן של סרטון הפלט. -
START_TIME_OFFSET2: זמן ההתחלה, בשניות חלקיות (לדוגמה,3.5), ביחס לציר הזמן של סרטון הקלט השני. בשדה הזה אפשר לחתוך תוכן מתחילת הסרטון השני. -
END_TIME_OFFSET2: שעת הסיום, בשניות חלקיות (לדוגמה,15), ביחס לציר הזמן של סרטון הקלט השני. בשדה הזה אפשר לחתוך תוכן מסוף הסרטון השני. -
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:- 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_VIDEO1:
השם של סרטון בקטגוריה של Cloud Storage שאתם מקודדים, כמו
my-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). הסרטון הזה ישמש ראשון בציר הזמן של סרטון הפלט. - START_TIME_OFFSET1: זמן ההתחלה, בשניות חלקיות (לדוגמה,
0.0), ביחס לציר הזמן של סרטון הקלט הראשון. בשדה הזה אפשר לחתוך תוכן מתחילת הסרטון. - END_TIME_OFFSET1: שעת הסיום, בשניות חלקיות (לדוגמה,
8.1), ביחס לציר הזמן של סרטון הקלט הראשון. בשדה הזה אפשר לחתוך תוכן מהסוף של הסרטון. - STORAGE_INPUT_VIDEO2:
השם של סרטון בקטגוריה של Cloud Storage שאתם מקודדים, כמו
my-vid.mp4. בשדה הזה צריך להביא בחשבון את כל התיקיות שיצרתם בדלי (לדוגמה,input/my-vid.mp4). הסרטון הזה ישמש כסרטון השני בציר הזמן של סרטון הפלט. - START_TIME_OFFSET2: זמן ההתחלה, בשניות חלקיות (לדוגמה,
3.5), ביחס לציר הזמן של סרטון הקלט השני. בשדה הזה אפשר לחתוך תוכן מתחילת הסרטון השני. - END_TIME_OFFSET2: שעת הסיום, בשניות חלקיות (לדוגמה,
15), ביחס לציר הזמן של סרטון הקלט השני. בשדה הזה אפשר לחתוך תוכן מסוף הסרטון השני. - STORAGE_OUTPUT_FOLDER: שם התיקייה ב-Cloud Storage שבה רוצים לשמור את פלט הסרטון המקודד.
{ "config": { "inputs": [ { "key": "input1", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1" }, { "key": "input2", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2" } ], "editList": [ { "key": "atom1", "inputs": [ "input1" ], "startTimeOffset": "START_TIME_OFFSET1s", "endTimeOffset": "END_TIME_OFFSET1s" }, { "key": "atom2", "inputs": [ "input2" ], "startTimeOffset": "START_TIME_OFFSET2s", "endTimeOffset": "END_TIME_OFFSET2s" } ], "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/" } } }
- LOCATION: המיקום שבו תופעל המשימה. להשתמש באחד מהאזורים הנתמכים.
- מריצים את הפקודה הבאה:
אמורה להופיע תגובה שדומה לזו: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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
דוגמה
כדאי לעיין בדוגמאות הבאות של סרטונים:
שני הסרטונים דומים בכך שהם מכילים שלושה חלקים:
- צפייה בסרט או במשחק במכשיר נייד
- צפייה באותו תוכן במסך גדול
- הצגת תוכן מודעה קצר למוצר
לדוגמה, אפשר לשרשר את שני הסרטונים כך שבסרטון הפלט יוצגו חלקים 1 ו-2 מהסרטון הראשון, ואז חלקים 2 ו-3 מהסרטון השני. אפשר לבצע את השרשור הזה באמצעות היסטים של הזמן הבאים:
- ForBiggerEscapes.mp4
startTimeOffset:0sendTimeOffset:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset:3.5sendTimeOffset:15s
אפשר להשתמש בקוד שלמעלה עם שני הסרטונים האלה וההפרשים בזמן שלהם כדי לראות סרטון תוצאות מלא באקשן.