# Live Streaming

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

Video SDK sessions can be live streamed to an unlimited audience using Real-Time Messaging Protocol (RTMP). This is helpful if you need to scale Video SDK attendees beyond the 1,000 real-time session user limit. For example, you can live stream to [YouTube Live](https://developers.google.com/youtube/v3/live/guides/rtmps-ingestion), [Facebook Live](https://www.facebook.com/help/755943624557739), [Twitch](<https://dev.twitch.tv/docs/video-broadcast/#:~:text=The%20tool%20sends%20a%20video,Time%20Messaging%20Protocol%20(RTMP).>), [AWS IVS](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/streaming-config.html#streaming-config-settings), and other services.

See the following for how to set up a streaming event in a third-party platform and implement a feature to start and stop live streaming of a session using the Video SDK.

## Retrieve credentials

Live streaming with SDKs requires the following information from third-party streaming platforms: Stream URL, Stream Key, Broadcast URL. See [Live stream to YouTube](#live-stream-to-youtube) for an example.

## Start live streaming

To start live streaming a session from your app, obtain an instance of `IZoomVideoSDKLiveStreamHelper` and verify that the current user can start streaming. Then call `startLiveStream` within `IZoomVideoSDKLiveStreamHelper` to begin live streaming.

```cpp
// Get the IZoomVideoSDKLiveStreamHelper to perform live stream actions.
IZoomVideoSDKLiveStreamHelper* pLiveStreamHelper = m_pVideoSDK->getLiveStreamHelper();

// Check if live stream can start.
if (pLiveStreamHelper->canStartLiveStream() == ZoomVideoSDKErrors_Success) {

    // Call startLiveStream to begin live streaming.
    int err = pLiveStreamHelper->startLiveStream(strStreamUrl, strKey, strBroadcastUrl);

    if (err == ZoomVideoSDKErrors_Success)
    {
            // Live stream successfully began.
    }
    else
    {
            // Live stream could not start.
    }
}
```

## Stop live streaming

To stop the stream with the SDK, call `stopLiveStream`.

```cpp
// Get the IZoomVideoSDKLiveStreamHelper to perform live stream actions.
IZoomVideoSDKLiveStreamHelper* pLiveStreamHelper = m_pVideoSDK->getLiveStreamHelper();

// Call stopLiveStream to stop the live stream.
pLiveStreamHelper->stopLiveStream();
```

## Listen for updates

After calling the `startLiveStream` function, you can listen for updates through your `IZoomVideoSDKDelegate` implementation's `onLiveStreamStatusChanged` callback.

| Name                                         | Description                        |
| -------------------------------------------- | ---------------------------------- |
| `ZoomVideoSDKLiveStreamStatus_None`          | No live stream is active.          |
| `ZoomVideoSDKLiveStreamStatus_InProgress`    | Live streaming is in progress.     |
| `ZoomVideoSDKLiveStreamStatus_Ended`         | Live streaming has ended.          |
| `ZoomVideoSDKLiveStreamStatus_Connecting`    | Live streaming is connecting.      |
| `ZoomVideoSDKLiveStreamStatus_FailedTimeout` | Live stream failed due to timeout. |
| `ZoomVideoSDKLiveStreamStatus_StartFailed`   | Live stream could not start.       |

## Live stream to YouTube

For instance, if you want to live stream a session to YouTube, you must [enable live streaming](https://support.google.com/youtube/answer/9227509?hl=en) on your Google account.

### Step 1:

Login to YouTube. Locate the video icon and press "Go Live".

![Go Live option on YouTube](/img/1569946554166.png)

### Step 2:

Click the Stream button in the top panel. **Note: YouTube Webcam services are not compatible with Zoom SDK**.

![YouTube Stream button](/img/1569946563191.png)

### Step 3:

Fill out the required information and toggle "Schedule for later". If this is not selected, the live stream will start immediately and will not provide setting info.

![YouTube settings for Schedule for Later](/img/1569946580691.png)

### Step 4:

After creating the stream, the Steam URL and Stream Key will be available.

![YouTube Stream URL and Key setup](/img/1569946642209.png)

### Step 5:

Click the share button beside your account icon to get the broadcast URL.

![YouTube broadcast URL](/img/vsdk-ios-youtube-broadcastURL.png)

_Use the [YouTube Live Streaming API](https://developers.google.com/youtube/v3/live/getting-started) to automate these steps and get stream information programmatically._
