בדף הזה מוסבר איך ליצור תמונות סטטיות של שכבות-על שמוצגות מעל שידור חי. תמונת שכבת-על סטטית מוצגת במהלך כל השידור החי. אפשר להגדיר את הרזולוציה והמיקום של תמונה סטטית של שכבת-על.
הגדרה של Google Cloud הפרויקט והאימות
אם עדיין לא יצרתם פרויקט ופרטי כניסה, כדאי לעיין במאמר לפני שמתחילים.Google Cloudהעלאת תמונה לקטגוריה שלכם ב-Cloud Storage
- פותחים את הדף Cloud Storage Browser במסוף Google Cloud .
כניסה לדף Cloud Storage Browser - לוחצים על שם ה-bucket כדי לפתוח אותו.
- לוחצים על Upload files.
- בוחרים קובץ תמונה (JPEG או PNG) להעלאה מהמחשב המקומי. אפשר להשתמש בתמונה לדוגמה של שכבת-על.
התמונה שמורה עכשיו בקטגוריה של Cloud Storage.
יצירת נכס
נכסים הם סרטונים או תמונות שאפשר להשתמש בהם עם Live Stream API. יוצרים נכס תמונה לשימוש כשכבת-על סטטית.
כדי ליצור נכס, משתמשים ב-method projects.locations.assets.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם. הוא מופיע בשדה מספר הפרויקט בדף הגדרות IAM. Google Cloud -
LOCATION: המיקום שבו רוצים ליצור את הנכס. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
-
ASSET_ID: מזהה מוגדר על ידי המשתמש של הנכס החדש שרוצים ליצור. הערך הזה צריך לכלול בין 1 ל-63 תווים, להתחיל ולהסתיים ב-[a-z0-9], ויכול לכלול מקפים (-) בין התווים. לדוגמה,my-asset. -
ASSET_URI: ה-URI של התמונה בקטגוריה של Cloud Storage שבה רוצים להשתמש, למשלgs://my-bucket/my-image.png
תוכן בקשת JSON:
{
"image": {
"uri": "ASSET_URI"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
"createTime": CREATE_TIME,
"target": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
מעתיקים את הערך OPERATION_ID שמוחזר כדי להשתמש בו בקטע הבא.
בדיקת התוצאה
משתמשים בשיטה projects.locations.operations.get כדי לבדוק אם הנכס נוצר. אם התשובה מכילה "done: false", חוזרים על הפקודה עד שהתשובה מכילה "done: true".
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם. הוא מופיע בשדה מספר הפרויקט בדף הגדרות IAM. Google Cloud -
LOCATION: המיקום שבו הנכס נמצא. צריך להשתמש באחד מהאזורים הנתמכיםהצגת מיקומיםus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
-
OPERATION_ID: המזהה של הפעולה
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
"createTime": CREATE_TIME,
"endTime": END_TIME,
"target": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.Asset",
"name": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"createTime": CREATE_TIME,
"updateTime": UPDATE_TIME,
"image": {
"uri": "ASSET_URI"
},
"crc32c": "ae1EJg==",
"state": "ACTIVE"
}
}
יצירת נקודת הקצה של הקלט
כדי ליצור את נקודת הקצה של הקלט, משתמשים בשיטה projects.locations.inputs.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם. הוא מופיע בשדה מספר הפרויקט בדף הגדרות IAM. Google Cloud -
LOCATION: המיקום שבו רוצים ליצור את נקודת הקצה של הקלט. צריך להשתמש באחד מהאזורים הנתמכיםהצגת מיקומיםus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
-
INPUT_ID: מזהה שמוגדר על ידי המשתמש לנקודת הקצה החדשה של הקלט שצריך ליצור (שאליה שולחים את זרם הקלט). הערך הזה צריך לכלול בין 1 ל-63 תווים, להתחיל ולהסתיים ב-[a-z0-9], ויכול לכלול מקפים (-) בין התווים. לדוגמה,my-input.
תוכן בקשת JSON:
{
"type": "RTMP_PUSH"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
"createTime": CREATE_TIME,
"target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של פעולת יצירת הקלט באמצעות מזהה הפעולה החדש.
קבלת פרטים של נקודת קצה של קלט
כדי לקבל את הפרטים של נקודת הקצה של הקלט, משתמשים בשיטה projects.locations.inputs.get.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם. הוא מופיע בשדה מספר הפרויקט בדף הגדרות IAM. Google Cloud -
LOCATION: המיקום של נקודת הקצה של הקלט. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
-
INPUT_ID: המזהה שמוגדר על ידי המשתמש לנקודת הקצה של הקלט
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID",
"createTime": CREATE_TIME,
"updateTime": UPDATE_TIME,
"type": "RTMP_PUSH",
"uri": "INPUT_STREAM_URI", # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b",
"tier": "HD"
}
מחפשים את השדה uri ומעתיקים את הערך שמוחזר
INPUT_STREAM_URI
כדי להשתמש בו בהמשך בקטע שליחת זרם הקלט.
יצירת הערוץ
כדי ליצור את הערוץ, משתמשים ב-method projects.locations.channels.create.
שימו לב למערך staticOverlays בהגדרות הערוץ:
"staticOverlays": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"position": {
"x": 0.5,
"y": 0.5
},
"resolution": {
"w": 0.1
},
"opacity": 0.8
}
],
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם. הוא מופיע בשדה מספר הפרויקט בדף הגדרות IAM. Google Cloud -
LOCATION: המיקום שבו רוצים ליצור את הערוץ. צריך להשתמש באחד האזורים הנתמכיםהצגת מיקומיםus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
-
CHANNEL_ID: מזהה מוגדר על ידי המשתמש של הערוץ שרוצים ליצור. הערך הזה צריך להיות באורך של 1-63 תווים, להתחיל ולהסתיים ב-[a-z0-9], ויכול להכיל מקפים (-) בין התווים -
INPUT_ID: המזהה שמוגדר על ידי המשתמש לנקודת הקצה של הקלט -
BUCKET_NAME: השם של קטגוריית Cloud Storage שיצרתם כדי לאחסן את קובץ המניפסט ואת קובצי הפלחים של השידור החי -
ASSET_ID: המזהה שהוגדר על ידי המשתמש עבור הנכס
תוכן בקשת JSON:
{
"inputAttachments": [
{
"key": "my-input",
"input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
}
],
"output": {
"uri": "gs://BUCKET_NAME"
},
"staticOverlays": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION/assets/ASSET_ID",
"position": {
"x": 0.5,
"y": 0.5
},
"resolution": {
"w": 0.1
},
"opacity": 0.8
},
],
"elementaryStreams": [
{
"key": "es_video",
"videoStream": {
"h264": {
"profile": "high",
"widthPixels": 1280,
"heightPixels": 720,
"bitrateBps": 3000000,
"frameRate": 30
}
}
},
{
"key": "es_audio",
"audioStream": {
"codec": "aac",
"channelCount": 2,
"bitrateBps": 160000
}
}
],
"muxStreams": [
{
"key": "mux_video_ts",
"container": "ts",
"elementaryStreams": ["es_video", "es_audio"],
"segmentSettings": { "segmentDuration": "2s" }
}
],
"manifests": [
{
"key": "manifest_hls",
"fileName": "main.m3u8",
"type": "HLS",
"muxStreams": [
"mux_video_ts"
],
"maxSegmentCount": 5
}
]
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
"createTime": CREATE_TIME,
"target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של פעולת יצירת הערוץ באמצעות מזהה הפעולה החדש.
הפעלת הערוץ
כדי להתחיל ערוץ, משתמשים ב-method projects.locations.channels.start.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם. הוא מופיע בשדה מספר הפרויקט בדף הגדרות IAM. Google Cloud -
LOCATION: המיקום שבו הערוץ נמצא. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
-
CHANNEL_ID: מזהה מוגדר על ידי המשתמש של הערוץ
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata",
"createTime": CREATE_TIME,
"target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID",
"verb": "start",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של פעולת הפעלת הערוץ באמצעות מזהה הפעולה החדש.
שליחת זרם הקלט
פותחים חלון טרמינל חדש. מריצים את הפקודה הבאה, באמצעות INPUT_STREAM_URI מהקטע קבלת פרטים על נקודת קצה של קלט:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
הפעלת השידור החי שנוצר
כדי להפעיל את קובץ המדיה שנוצר ב-Shaka Player, מבצעים את השלבים הבאים:
- הפיכת הקטגוריה של Cloud Storage שיצרתם לקריאה באופן ציבורי.
- כדי להפעיל שיתוף משאבים בין מקורות (CORS) בקטגוריה של Cloud Storage, מבצעים את הפעולות הבאות:
- יוצרים קובץ JSON שמכיל את הפרטים הבאים:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ] -
מריצים את הפקודה הבאה אחרי שמחליפים את
JSON_FILE_NAMEבשם של קובץ ה-JSON שיצרתם בשלב הקודם:gcloud storage buckets update gs://BUCKET_NAME --cors-file=JSON_FILE_NAME.json
- יוצרים קובץ JSON שמכיל את הפרטים הבאים:
- בקטגוריה של Cloud Storage, מוצאים את הקובץ
main.m3u8שנוצר. לוחצים על העתקת כתובת URL בעמודה גישה ציבורית של הקובץ. - עוברים אל Shaka Player, נגן שידורים חיים באינטרנט.
- בסרגל הניווט העליון, לוחצים על תוכן בהתאמה אישית.
- לוחצים על הלחצן +.
מדביקים את כתובת ה-URL הציבורית של הקובץ בתיבה Manifest URL (כתובת ה-URL של קובץ המניפסט).

מקלידים שם בתיבה שם.
לוחצים על Save.
לוחצים על הפעלה.
שכבת העל אמורה להופיע מעל השידור החי.