This page describes how to create a slate and insert it into a live stream. Slates are content that can replace the main live stream content whenever you want (for example, if you are experiencing technical issues on the input stream or to hide sensitive content on the input stream).
Set up your Google Cloud project and authentication
If you have not created a Google Cloud project and credentials, see Before you begin .Upload a video to your Cloud Storage bucket
- In the Google Cloud console, go to the Cloud Storage Browser page.
Go to the Cloud Storage Browser page - Click the name of your bucket to open it.
- Click Upload files.
- Select a video file to upload from your local machine. You can use a 60 second sample video .
Your video is now saved to the Cloud Storage bucket.
Create an asset
Assets are video or images that can be used with the Live Stream API. An asset is used to create an insert slate channel event. You should create an asset long before you plan to use it for a slate because it takes time for the API to process the asset. If the asset is not ready after two seconds from the slate event execution time, a black screen displays until the asset is ready.
To create an asset, use the projects.locations.assets.create
method. The following sample
creates a video asset.
REST
Before using any of the request data, make the following replacements:
-
PROJECT_NUMBER
: your Google Cloud project number; this is located in the Project number field on the IAM Settings page -
LOCATION
: the location in which to create the asset; use one of the supported regionsShow locations-
us-central1
-
us-east1
-
us-east4
-
us-west1
-
us-west2
-
northamerica-northeast1
-
southamerica-east1
-
asia-east1
-
asia-east2
-
asia-south1
-
asia-northeast1
-
asia-southeast1
-
australia-southeast1
-
europe-north1
-
europe-west1
-
europe-west2
-
europe-west3
-
europe-west4
-
-
ASSET_ID
: a user-defined identifier for the new asset to create. This value must be 1-63 characters, begin and end with[a-z0-9]
, and can contain dashes (-) between characters. For example,my-asset
. -
ASSET_URI
: the URI of the video in your Cloud Storage bucket to use, such asgs://my-bucket/my-video.mp4
(see the supported media formats )
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "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 }
C#
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API C# API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Go
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Go API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Java
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Java API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Node.js
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Node.js API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
PHP
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API PHP API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Python
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Python API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Ruby
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Ruby API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Create an input endpoint
To create an input endpoint, use the projects.locations.inputs.create
method.
REST
Before using any of the request data, make the following replacements:
-
PROJECT_NUMBER
: your Google Cloud project number; this is located in the Project number field on the IAM Settings page -
LOCATION
: the location in which to create the input endpoint; use one of the supported regionsShow locations-
us-central1
-
us-east1
-
us-east4
-
us-west1
-
us-west2
-
northamerica-northeast1
-
southamerica-east1
-
asia-east1
-
asia-east2
-
asia-south1
-
asia-northeast1
-
asia-southeast1
-
australia-southeast1
-
europe-north1
-
europe-west1
-
europe-west2
-
europe-west3
-
europe-west4
-
-
INPUT_ID
: a user-defined identifier for the new input endpoint to create (to which you send your input stream). This value must be 1-63 characters, begin and end with[a-z0-9]
, and can contain dashes (-) between characters. For example,my-input
.
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "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 }
C#
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API C# API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Go
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Go API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Java
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Java API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Node.js
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Node.js API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
PHP
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API PHP API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Python
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Python API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Ruby
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Ruby API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Get input endpoint details
To get the details of the input endpoint, use the projects.locations.inputs.get
method.
REST
Before using any of the request data, make the following replacements:
-
PROJECT_NUMBER
: your Google Cloud project number; this is located in the Project number field on the IAM Settings page -
LOCATION
: the location where your input endpoint is located; use one of the supported regionsShow locations-
us-central1
-
us-east1
-
us-east4
-
us-west1
-
us-west2
-
northamerica-northeast1
-
southamerica-east1
-
asia-east1
-
asia-east2
-
asia-south1
-
asia-northeast1
-
asia-southeast1
-
australia-southeast1
-
europe-north1
-
europe-west1
-
europe-west2
-
europe-west3
-
europe-west4
-
-
INPUT_ID
: the user-defined identifier for the input endpoint
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "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" }
C#
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API C# API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Go
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Go API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Java
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Java API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Node.js
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Node.js API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
PHP
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API PHP API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Python
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Python API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Ruby
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Ruby API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Find the uri
field and copy the returned INPUT_STREAM_URI
to use later
in the Send the input stream
section.
Create a channel
To create a channel, use the projects.locations.channels.create
method. The following samples create a channel that generates an HLS live
stream. The live stream consists of a single, high-definition (1280x720)
rendition.
REST
Before using any of the request data, make the following replacements:
-
PROJECT_NUMBER
: your Google Cloud project number; this is located in the Project number field on the IAM Settings page -
LOCATION
: the location in which to create the channel; use one of the supported regionsShow locations-
us-central1
-
us-east1
-
us-east4
-
us-west1
-
us-west2
-
northamerica-northeast1
-
southamerica-east1
-
asia-east1
-
asia-east2
-
asia-south1
-
asia-northeast1
-
asia-southeast1
-
australia-southeast1
-
europe-north1
-
europe-west1
-
europe-west2
-
europe-west3
-
europe-west4
-
-
CHANNEL_ID
: a user-defined identifier for the channel to create; this value must be 1-63 characters, begin and end with[a-z0-9]
, and can contain dashes (-) between characters -
INPUT_ID
: the user-defined identifier for the input endpoint -
BUCKET_NAME
: the name of the Cloud Storage bucket you created to hold the live stream manifest and segment files
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "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 }
C#
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API C# API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Go
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Go API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Java
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Java API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Node.js
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Node.js API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
PHP
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API PHP API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Python
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Python API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Ruby
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Ruby API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Start the channel
To start a channel, use the projects.locations.channels.start
method.
REST
Before using any of the request data, make the following replacements:
-
PROJECT_NUMBER
: your Google Cloud project number; this is located in the Project number field on the IAM Settings page -
LOCATION
: the location where your channel is located; use one of the supported regionsShow locations-
us-central1
-
us-east1
-
us-east4
-
us-west1
-
us-west2
-
northamerica-northeast1
-
southamerica-east1
-
asia-east1
-
asia-east2
-
asia-south1
-
asia-northeast1
-
asia-southeast1
-
australia-southeast1
-
europe-north1
-
europe-west1
-
europe-west2
-
europe-west3
-
europe-west4
-
-
CHANNEL_ID
: a user-defined identifier for the channel
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "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 }
C#
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API C# API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Go
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Go API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Java
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Java API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Node.js
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Node.js API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
PHP
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API PHP API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Python
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Python API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Ruby
To learn how to install and use the client library for Live Stream API, see Live Stream API client libraries . For more information, see the Live Stream API Ruby API reference documentation .
To authenticate to Live Stream API, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .
Send the input stream
If you are using ffmpeg
to send a test stream, open a new terminal window. Run
the following command, using INPUT_STREAM_URI
from the Get input endpoint details
section:
ffmpeg
-re
-f
lavfi
-i
"testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]"
\
-acodec
aac
-vcodec
h264
-f
flv
INPUT_STREAM_URI
Play the live stream
To play the generated media file in Shaka Player , complete the following steps:
- Make the Cloud Storage bucket you created publicly readable .
- To enable cross-origin resource
sharing (CORS) on a Cloud Storage bucket
, do the following:
- Create a JSON file that contains the following:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
- Run the following command after replacing
JSON_FILE_NAME
with the name of the JSON file you created in the previous step:gcloud storage buckets update gs:// BUCKET_NAME --cors-file= JSON_FILE_NAME .json
- Create a JSON file that contains the following:
- In the Cloud Storage bucket, find the generated file. Click Copy URLin the file's Public accesscolumn.
- Navigate to Shaka Player , an online live stream player.
- Click Custom Contentin the top navigation bar.
- Click the +button.
-
Paste the public URL of the file into the Manifest URLbox.
-
Type a name in the Namebox.
-
Click Save.
-
Click Play.
You should see a test pattern play as the live stream.
Create a channel event
To create a channel event, use the projects.locations.channels.events.create
method. The
following sample inserts the slate as a channel event in the live stream.
If the slate asset is not ready (by two seconds after event execution start), then a black screen displays until the slate asset is ready.
REST
Before using any of the request data, make the following replacements:
-
PROJECT_NUMBER
: your Google Cloud project number; this is located in the Project number field on the IAM Settings page -
LOCATION
: the location where your channel is located; use one of the supported regionsShow locations-
us-central1
-
us-east1
-
us-east4
-
us-west1
-
us-west2
-
northamerica-northeast1
-
southamerica-east1
-
asia-east1
-
asia-east2
-
asia-south1
-
asia-northeast1
-
asia-southeast1
-
australia-southeast1
-
europe-north1
-
europe-west1
-
europe-west2
-
europe-west3
-
europe-west4
-
-
CHANNEL_ID
: a user-defined identifier for the channel -
EVENT_ID
: a user-defined identifier for the event -
ASSET_ID
: the user-defined identifier for the slate asset
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/ PROJECT_NUMBER /locations/ LOCATION /channels/ CHANNEL_ID /events/ EVENT_ID ", "createTime": CREATE_TIME , "updateTime": UPDATE_TIME , "slate": { "duration": "60s", "asset": "projects/ PROJECT_NUMBER /locations/ LOCATION /assets/ ASSET_ID " }, "executeNow": "true", "state": "PENDING" }
Check the live stream to see that the slate is inserted. You can also check that
the event has the state
set to SUCCEEDED
(see Get channel event details
).
To create a long running slate, remove the duration
field from the slate
object. To remove a long running slate, create a return to program channel event
.