בדף הזה מוסבר איך להפיץ את הפלט של השידור החי לנקודות קצה מרוחקות באמצעות פרוטוקול Secure Reliable Transport (SRT) או פרוטוקול Real-Time Messaging (RTMP). הפרוטוקולים SRT ו-RTMP משמשים במצב דחיפה כדי לשלוח את הסטרימינג לנקודות הקצה. פורמטי הקונטיינר הנתמכים הם MPEG-TS עבור SRT ו-FLV עבור RTMP.
לפני שמתחילים
בדף הזה מניחים שהשלמתם את השלבים בקטע לפני שמתחילים של המדריך להתחלה מהירה לשידור חי ב-HLS.
בהתאם לפרוטוקול ההפצה שבחרתם, יוצרים נקודת קצה של SRT או RTMP אצל הספק שדרכו רוצים לקבל את הפלט במצב דחיפה. פורמט מזהה ה-URI של נקודת הקצה משתנה בהתאם לפרוטוקול:
- ב-SRT:
srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID - ל-RTMP:
rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/RTMP_STREAM_KEYאו רקrtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME
SRT_SERVER_IP ו-RTMP_SERVER_IP יכולים להיות כתובת IP או שם דומיין.
יצירת נקודת הקצה של הקלט
כדי ליצור את נקודת הקצה של הקלט, משתמשים בשיטה 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 שדומה לזו:
{
"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
}
מעתיקים את הערך OPERATION_ID שמוחזר כדי להשתמש בו בקטע הבא.
בדיקת התוצאה
משתמשים בשיטה projects.locations.operations.get כדי לבדוק אם נוצרה נקודת הקצה של הקלט. אם התשובה מכילה "done: false", חוזרים על הפקודה עד שהתשובה מכילה "done: true". יצירת נקודת הקצה הראשונה של הקלט באזור עשויה להימשך עד 10 דקות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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/inputs/INPUT_ID",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input",
"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.
כמה דברים שכדאי לשים לב אליהם בהגדרת הערוץ:
- המערך
distributionStreamsמכיל את הגדרות הריבוב של הזרמים להפצות. כל אובייקט
DistributionStreamחייב לכלול את השדותkey,containerו-elementaryStreams.{ "distributionStreams": [ { "key": "ds1", "container": "ts", // to be used with an SRT distribution "elementaryStreams": [ "es_video_720", "es_audio" ] }, { "key": "ds2", "container": "flv", // to be used with an RTMP distribution "elementaryStreams": [ "es_video_640", "es_audio" ] } ] }המערך
distributionsמפרט את הגדרות ההפצה, כולל נקודות הקצה המרוחקות.מגדירים את השדה
distributionStreamבאובייקטDistributionלערךkeyשל אובייקטDistributionStream.כדי להגדיר הפצה של SRT, מגדירים את
uriבאובייקטSrtPushOutputEndpointלנקודת קצה של SRT שיצרתם. להפצה ב-RTMP, מגדירים אתuriבאובייקטRtmpPushOutputEndpointלנקודת קצה של RTMP שיצרתם.{ "distributions": [ { "key": "pd1", "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container "srtPush": { "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID" } }, { "key": "pd2", "distributionStream": "ds2", // defined in a distributionStreams[] object with an FLV container "rtmpPush": { "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/", "streamKey": "RTMP_STREAM_KEY" } } ] }כדי להפיץ כתוביות שנוצרו על ידי AI וכתוביות מתורגמות, אפשר לעיין במדריך בנושא הגדרת כתוביות ותרגומים אוטומטיים.
בדוגמאות הבאות נעשה שימוש רק באובייקט DistributionStream אחד ובאובייקט Distribution אחד.
REST
SRT
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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 שיצרתם כדי לאחסן את קובץ המניפסט ואת קובצי הפלחים של השידור החי -
SRT_SERVER_IP: כתובת ה-IP או שם הדומיין של נקודת הקצה המרוחקת SRT_SERVER_PORT: מספר היציאה של נקודת הקצה המרוחקת-
SRT_SERVER_STREAM_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": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
RTMP
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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 שיצרתם כדי לאחסן את קובץ המניפסט ואת קובצי הפלחים של השידור החי -
RTMP_SERVER_IP: כתובת ה-IP או שם הדומיין של נקודת הקצה המרוחקת RTMP_SERVER_PORT: מספר היציאה של נקודת הקצה המרוחקת-
RTMP_APP_NAME: קידומת הנתיב של שם הסטרים -
RTMP_STREAM_KEY: מפתח השידור של נקודת הקצה המרוחקת
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת 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
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
קבלת הערוץ
אחרי שיוצרים את הערוץ, משתמשים בשיטה projects.locations.channels.get כדי לשלוח שאילתה לגבי מצב הערוץ.
REST
SRT
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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/channels/CHANNEL_ID",
"createTime": CREATE_TIME,
"updateTime": UPDATE_TIME,
"inputAttachments": [
{
"key": "INPUT_ID",
"input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
}
],
"activeInput": "INPUT_ID",
"output": {
"uri": "gs://BUCKET_NAME"
},
"elementaryStreams": [
{
"videoStream": {
"h264": {
"widthPixels": 1280,
"heightPixels": 720,
"frameRate": 30,
"bitrateBps": 3000000,
"gopDuration": "2s",
"vbvSizeBits": 3000000,
"vbvFullnessBits": 2700000,
"entropyCoder": "cabac",
"profile": "high"
}
},
"key": "es_video"
},
{
"audioStream": {
"codec": "aac",
"bitrateBps": 160000,
"channelCount": 2,
"sampleRateHertz": 48000
},
"key": "es_audio"
}
],
"muxStreams": [
{
"key": "mux_video_ts",
"container": "ts",
"elementaryStreams": [
"es_video",
"es_audio"
],
"segmentSettings": {
"segmentDuration": "2s"
}
}
],
"manifests": [
{
"fileName": "main.m3u8",
"type": "HLS",
"muxStreams": [
"mux_video_ts"
],
"maxSegmentCount": 5,
"segmentKeepDuration": "60s",
"key": "manifest_hls"
}
],
"streamingState": "STOPPED",
"distributionStreams": [
{
"key": "ds1",
"container": "ts",
"elementaryStreams": [
"es_video",
"es_audio"
]
}
],
"distributions": [
{
"key": "pd1",
"distributionStream": "ds1",
"state": "NOT_READY",
"srtPush": {
"uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID"
}
}
]
}
RTMP
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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/channels/CHANNEL_ID",
"createTime": CREATE_TIME,
"updateTime": UPDATE_TIME,
"inputAttachments": [
{
"key": "INPUT_ID",
"input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
}
],
"activeInput": "INPUT_ID",
"output": {
"uri": "gs://BUCKET_NAME"
},
"elementaryStreams": [
{
"videoStream": {
"h264": {
"widthPixels": 1280,
"heightPixels": 720,
"frameRate": 30,
"bitrateBps": 3000000,
"gopDuration": "2s",
"vbvSizeBits": 3000000,
"vbvFullnessBits": 2700000,
"entropyCoder": "cabac",
"profile": "high"
}
},
"key": "es_video"
},
{
"audioStream": {
"codec": "aac",
"bitrateBps": 160000,
"channelCount": 2,
"sampleRateHertz": 48000
},
"key": "es_audio"
}
],
"muxStreams": [
{
"key": "mux_video_ts",
"container": "ts",
"elementaryStreams": [
"es_video",
"es_audio"
],
"segmentSettings": {
"segmentDuration": "2s"
}
}
],
"manifests": [
{
"fileName": "main.m3u8",
"type": "HLS",
"muxStreams": [
"mux_video_ts"
],
"maxSegmentCount": 5,
"segmentKeepDuration": "60s",
"key": "manifest_hls"
}
],
"streamingState": "STOPPED",
"distributionStreams": [
{
"key": "ds1",
"container": "flv",
"elementaryStreams": [
"es_video",
"es_audio"
]
}
],
"distributions": [
{
"key": "pd1",
"distributionStream": "ds1",
"state": "NOT_READY",
"rtmpPush": {
"uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME",
"streamKey": "RTMP_STREAM_KEY"
}
}
]
}
התגובה המלאה מכילה את השדות הבאים:
{
...
"streamingState": "STOPPED",
"distributions": [
{
...
"state": "NOT_READY"
...
}
]
...
}
התגובה הזו מציינת את סטטוס הסטרימינג של הערוץ ואת הפצות הערוץ.
אם ההפצה נמצאת בNOT_READY מצב, אי אפשר להתחיל אותה. צריך להמתין עד שהסטטוס ישתנה ל-READY כדי שתוכלו להתחיל להפיץ את השידור.
יצירת ערוץ ההפצה הראשון עשויה להימשך עד 10 דקות. מצב ההפצה לא תלוי במצב הערוץ. אפשר להפעיל את הערוץ ולחכות שההפצה תהפוך לREADY ואז להפעיל את ההפצה.
עכשיו אפשר להתחיל את הערוץ.
הפעלת הערוץ
משתמשים ב-projects.locations.channels.start method כדי להתחיל את הערוץ. צריך להפעיל ערוץ כדי שיוכל לקבל זרמי קלט או ליצור זרם פלט.
הפעלת הערוץ הראשון באזור מסוים אורכת כ-10 דקות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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
}
כדי לבדוק אם הערוץ הופעל, מקבלים את פרטי הערוץ כמו שמתואר למעלה. התשובה צריכה לכלול את הפרטים הבאים:
{
...
"streamingState": "AWAITING_INPUT"
...
}
שליחת זרם הקלט
פותחים חלון טרמינל חדש. מריצים את הפקודה הבאה, באמצעות 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
הערוץ משדר עכשיו, אבל ההפצות עדיין מושבתות.
הפעלת ההפצה
כדי להתחיל את ההפצה, היא צריכה להיות במצב READY. כדי להתחיל להפיץ את הפלט של השידור החי לכל נקודות הקצה המרוחקות, משתמשים בשיטה projects.locations.channels.startdistribution.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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": "startdistribution",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש. אחרי שמתחילים הפצה, הסטטוס יכול להיות AWAITING_INPUT אם לא מתחילים את זרם הקלט, או DISTRIBUTING אם זרם הקלט מופץ לנקודות הקצה שצוינו.
(אופציונלי) הפעלת קבוצה של הפצות
אתם יכולים להתחיל סדרה של הפצות במקום את כולן בבת אחת. כדי להתחיל, מוסיפים את המפתחות של ההפצות שרוצים להשתמש בהן לרשימת המערכים distributionKeys.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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: מזהה מוגדר על ידי המשתמש של הערוץ -
DISTRIBUTION_KEYS: רשימה מופרדת בפסיקים של מפתחות מחרוזת (לדוגמה,"pd1")
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת 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": "startdistribution",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
אימות שההפצות פועלות
כדי לוודא שההפצות התחילו, מקבלים את פרטי הערוץ כמו שעשיתם קודם. התשובה צריכה לכלול את הפרטים הבאים:
{
"distributions": [
{
...
"state": "DISTRIBUTING"
...
},
...
]
}
בשרת המרוחק SRT או RTMP, מוודאים שנקודת הקצה שיצרתם מקבלת נתונים.
הפסקת ההפצות
כדי להפסיק את הפצת הפלט של השידור החי לכל נקודות הקצה המרוחקות, משתמשים בשיטה projects.locations.channels.stopdistribution.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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": "stopdistribution",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
(אופציונלי) הפסקת הפצה של קבוצת הפצות
אתם יכולים להפסיק קבוצה של הפצות ולא את כולן בבת אחת. מוסיפים את המפתחות של ההפצות שרוצים להפסיק לרשימת המערכים distributionKeys.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
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: מזהה מוגדר על ידי המשתמש של הערוץ -
DISTRIBUTION_KEYS: רשימה מופרדת בפסיקים של מפתחות מחרוזת (לדוגמה,"pd1")
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת 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": "stopdistribution",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
תמיכה בהצפנה של SRT
אם משתמשים בפרוטוקול SRT כדי להפיץ את הפלט של השידור החי לנקודת הקצה המרוחקת, Live Stream API מגן על התוכן של השידור החי באמצעות הצפנת AES.
יצירת ביטוי הסיסמה והכנת שרת ה-SRT המרוחק
לפני שמתחילים, יוצרים סיסמת SRT שעומדת בדרישות של שרת SRT מרוחק. בדרך כלל, ביטוי הסיסמה הוא מחרוזת של 10-79 תווים.
כדי לוודא שתהליך הפענוח פועל, צריך להגדיר את אותו משפט-סיסמה בשרת SRT המרוחק. הוראות מפורטות מופיעות במדריך למשתמש של שרת ה-SRT המרוחק.
הוספת ביטוי הגישה ל-Secret Manager
Live Stream API לא מקבל או מנהל את ביטוי הגישה ישירות. צריך לשתף את ביטוי הסיסמה עם Live Stream API דרך Google Secret Manager.
צריך להשלים את כל השלבים האלה לפני שמגדירים את הערוץ:
- יוצרים סוד באמצעות Secret Manager.
- מגדירים הרשאות לניהול זהויות והרשאות גישה (IAM) בסוד, כדי ש-Live Stream API יוכל לגשת לתוכן הסוד. כדי לעשות את זה, צריך לתת את התפקיד
secretmanager.secretAccessorלחשבון השירותservice-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com(זה דומה לאופן שבו לחשבון השירות יש גישה לקטגוריות של Cloud Storage). - מוצאים את שם המשאב של גרסת הסוד שיצרתם (לדוגמה,
projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID). השם הזה נדרש כדי להגדיר את הערוץ.
הגדרת הערוץ
גרסת הסוד של ביטוי הסיסמה מצוינת בתוך התג SrtPushOutputEndpoint:
{
"distributions": [
{
"key": "pd1",
"distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
"srtPush": {
"uri": "srt://{SRT_SERVER_IP}:{SRT_SERVER_PORT}?streamid={SRT_SERVER_STREAM_ID}",
"passphrase_secret_version": "projects/PROJECT_NUMBER/secrets/key1/versions/1"
}
}
]
}
הסרת המשאבים
כדי לא לצבור חיובים בחשבון 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
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
הפסקת זרם הקלט
אם השתמשתם ב-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
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
מחיקת נקודת הקצה של הקלט
כדי למחוק את נקודת הקצה של הקלט, משתמשים בשיטה 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
}
אפשר לבדוק את התוצאה של הפעולה באמצעות מזהה הפעולה החדש.
מחיקת הקטגוריה של Cloud Storage
פותחים את הדף Cloud Storage Browser במסוף Google Cloud .
מסמנים את התיבה ליד הקטגוריה שיצרתם.
לוחצים על Delete.
בתיבת הדו-שיח שמופיעה, לוחצים על מחיקה כדי למחוק את הקטגוריה ואת התוכן שלה.