בדף הזה מוסבר איך לצפות בתצוגה מקדימה של זרמי הקלט עם השהיה נמוכה מאוד, כדי לזהות בעיות או אירועים פוטנציאליים כמעט בזמן אמת. כך תוכלו לבצע פעולות מתקנות, כמו השהיית הסטרימינג, הוספת מודעות או הצגת מסכים, כדי לשמור על חוויית צפייה באיכות גבוהה עבור הצופים.
התוכן של התצוגה המקדימה זמין בפורמט הבא:
- פורמט: MPEG-TS
- סרטון:
- רזולוציה: 640x480
- קודק: H.264
- קצב פריימים: 25 פריימים לשנייה (FPS)
- אודיו
- קודק: AAC
- תדירות הדגימה: 48 kHz
- פרוטוקול: HTTPS
לפני שמתחילים
בדף הזה מניחים שהשלמתם את השלבים בקטע לפני שמתחילים של המדריך להתחלה מהירה לשידור חי ב-HLS.
יצירת נקודת קצה לקלט
כדי ליצור נקודת קצה לקלט, משתמשים בשיטה 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
}
הפקודה הזו יוצרת פעולה ממושכת (LRO) שאפשר להשתמש בה כדי לעקוב אחרי התקדמות הבקשה. מידע נוסף זמין במאמר בנושא ניהול פעולות ממושכות .
קבלת פרטים של נקודת קצה של קלט
כדי לקבל את הפרטים של נקודת הקצה של הקלט, משתמשים בשיטה 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. בדוגמאות הבאות נוצר ערוץ שמפיק שידור חי בפורמט HLS. השידור החי
מורכב מגרסה אחת ברזולוציה גבוהה (1280x720).
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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 שיצרתם כדי לאחסן את קובץ המניפסט ואת קובצי הפלחים של השידור החי
תוכן בקשת JSON:
{
"inputAttachments": [
{
"key": "my-input",
"input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
}
],
"output": {
"uri": "gs://BUCKET_NAME"
},
"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
}
הפקודה הזו יוצרת פעולה ממושכת (LRO) שאפשר להשתמש בה כדי לעקוב אחרי התקדמות הבקשה. מידע נוסף זמין במאמר בנושא ניהול פעולות ממושכות .
הפעלת הערוץ
כדי להתחיל ערוץ, משתמשים ב-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
}
הפקודה הזו יוצרת פעולה ממושכת (LRO) שאפשר להשתמש בה כדי לעקוב אחרי התקדמות הבקשה. מידע נוסף זמין במאמר בנושא ניהול פעולות ממושכות .
התקנת מקודד
כדי להשתמש ב-API, צריך מקודד שיצור זרמי קלט שה-API יעבד.
כדאי להתקין את ffmpeg כי בדף הזה מוסבר איך להשתמש ב-ffmpeg כדי ליצור זרמי קלט. אפשר להתקין אותו ב-Cloud Shell באמצעות הפקודה הבאה.
sudo apt install ffmpeg
שליחת זרם הקלט
פותחים חלון טרמינל חדש. מריצים את הפקודה הבאה, באמצעות 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
קבלת כתובת ה-URL של נקודת הקצה וטוקן ה-Bearer
כדי לקבל את כתובת ה-URL של נקודת הקצה של תוכן התצוגה המקדימה ואת אסימון ה-bearer שנדרש לאימות, משתמשים ב-method projects.locations.inputs.preview.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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 שדומה לזו:
{
"uri": ENDPOINT_URL, # For example, "preview.k3fhpvei3vvf.us-central1.livestream.goog/inputs/my-preview-input",
"bearerToken": "BEARER_TOKEN"
}
תשתמשו בערכים מהשדות uri ו-bearerToken בקטע הבא.
הצגת התוכן בתצוגה המקדימה
יש לכם את האפשרויות העיקריות הבאות להצגת תוכן התצוגה המקדימה:
mpegts.js
mpegts.js היא ספריה שזמינה ב-GitHub להפעלת סטרימינג של MPEG-TS בדפדפן אינטרנט.
מעתיקים את הערכים מהשדות bearerToken ו-uri שקיבלתם בשלב הקודם אל קוד ה-HTML הבא. יוצרים קובץ HTML מהקוד הבא ופותחים אותו בדפדפן.
<html>
<head>
<script src="https://xqq.im/mpegts.js/dist/mpegts.js"></script>
<video id="video" autoplay controls muted></video>
<script>
function main() {
if (!mpegts.getFeatureList().mseLivePlayback) {
console.log("MSE live playback is not supported by the browswer!")
return;
}
var videoElement = document.getElementById("video");
player = mpegts.createPlayer(
{
type: "mse",
isLive: true,
<!-- Placeholder: Replace ENDPOINT_URL with the actual endpoint URL -->
url: "ENDPOINT_URL",
},
{
headers: {
<!-- Placeholder: Replace BEARER_TOKEN with the actual bearer token -->
Authorization: "BEARER_TOKEN",
},
}
);
player.attachMediaElement(videoElement);
player.load();
player.play();
}
main();
</script>
</body>
</html>
אמור להיות מוצג דפוס בדיקה עם זמן אחזור קצר יותר מזה של השידור החי המשויך. בנגן הזה אפשר להפעיל רק את טראק האודיו הראשון בשידור.
FFplay
FFplay הוא נגן מדיה רב-תכליתי של שורת פקודה שמשתמש בספריות FFmpeg. אפשר למצוא הורדות של FFplay בדף הורדת FFmpeg.
פותחים חלון טרמינל חדש. מעתיקים את הערכים מהשדות bearerToken ו-uri שקיבלתם בשלב הקודם לפקודה הבאה ומריצים אותה.
ffplay -headers "Authorization: Bearer BEARER_TOKEN" \ -fflags nobuffer -flags low_delay -probesize 32 -analyzeduration 0 \ ENDPOINT_URL
אמור להיות מוצג דפוס בדיקה עם זמן אחזור קצר יותר מזה של השידור החי המשויך. ffplay תומך במעבר בין טראקים של אודיו בלחיצה על המקש A.
הסרת המשאבים
כדי לא לצבור חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:
הפסקת הערוץ
כדי להפסיק את הערוץ, משתמשים בשיטה projects.locations.channels.stop. כדי למחוק ערוץ, צריך קודם להפסיק אותו.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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": "stop",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
הפקודה הזו יוצרת פעולה ממושכת (LRO) שאפשר להשתמש בה כדי לעקוב אחרי התקדמות הבקשה. מידע נוסף זמין במאמר בנושא ניהול פעולות ממושכות .
הפסקת זרם הקלט
אם השתמשתם ב-ffmpeg כדי לשלוח את זרם הקלט, החיבור ינותק אוטומטית אחרי שתפסיקו את הערוץ.
מחיקת הערוץ
משתמשים ב-method projects.locations.channels.delete כדי למחוק את הערוץ. כדי למחוק את נקודת הקצה של הקלט שמשמשת את הערוץ, צריך קודם למחוק את הערוץ.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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": "delete",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
הפקודה הזו יוצרת פעולה ממושכת (LRO) שאפשר להשתמש בה כדי לעקוב אחרי התקדמות הבקשה. מידע נוסף זמין במאמר בנושא ניהול פעולות ממושכות .
מחיקת נקודת הקצה של הקלט
כדי למחוק את נקודת הקצה של הקלט, משתמשים בשיטה projects.locations.inputs.delete.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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/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": "delete",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
הפקודה הזו יוצרת פעולה ממושכת (LRO) שאפשר להשתמש בה כדי לעקוב אחרי התקדמות הבקשה. מידע נוסף זמין במאמר בנושא ניהול פעולות ממושכות .
מחיקת הקטגוריה של Cloud Storage
פותחים את הדף Cloud Storage Browser במסוף Google Cloud .
מסמנים את התיבה ליד הקטגוריה שיצרתם.
לוחצים על Delete.
בתיבת הדו-שיח שמופיעה, לוחצים על מחיקה כדי למחוק את הקטגוריה ואת התוכן שלה.