# How to Setup an In-Game Video Stream

## Overview <a href="#overview" id="overview"></a>

This guide starts with the template project and ends with having a running video feed in-game.

You could use this for playing an in-world video, screen sharing, webcam feed, etc.

The simplest way to achieve this is using our Millicast integration. Millicast is a 3rd party developer platform (acquired by Dolby) that provides ultra-low-latency video streaming capabilities that scale to massive audiences.

For more information, see the reference page on [Millicast video streaming](/platform-documentation/creation/unreal-development/features-and-tutorials/video-players/millicast-video-streaming.md)

## Steps <a href="#steps" id="steps"></a>

1. Open your Unreal project

   <figure><img src="/files/i240zzHVVbJGrlhDsQP2" alt=""><figcaption></figcaption></figure>
2. Drag the 3 required Millicast assets into your level\
   \
   ![](/files/iXcaLSsEWL3fv5il37ns)

   \
   You can find the following via the Place Actors panel:\
   \
   (NOTE - Be careful not to place the `M2_` prefixed equivalents of the Screen or Control assets)

* `BP_MillicastScreen`
  * this is the actual screen displaying the video feed
    * you can have as many of these as you want
* `BPM_MillicastControl`
  * this is used to configure your Millicast stream information
    * you only need one of these
* `M2 Millicast Channel`
  * this is used as plumbing between the stream video/audio received from Millicast and the audio bus & video texture used in the client
    * you would add extra channels if you wanted different video stream feeds playing at the same time

3. Name your `BP_MillicastScreen` asset(s)\
   \
   Select your screen asset(s) in the World Outliner and, in the *Details* panel, give each a unique `Receiver Name`\\

   <figure><img src="/files/sXQWHGYaLw80Is36T7kU" alt=""><figcaption></figcaption></figure>
4. Select your MillicastChannel asset(s) and, in the *Details* panel, select a unique `Video Texture` + `Sound Source Bus` pair for each channel\
   \
   For example, your first channel should be set to have\\

   <figure><img src="/files/aVc0mGEQZnN6HmXDY5MU" alt=""><figcaption></figcaption></figure>

   \
   If you were to add a second channel, you should use `T_Millicast2` and `ASB_M2_Millicast_02` for the `Video Texture` and `Sound Source Bus` respectively\
   \\
5. Retrieve Millicast stream name and account ID to use\
   \
   If you don’t have an account, you can quickly sign up for free (at the time of writing)
   1. Go to [![](https://dashboard.dolby.io/favicon-32x32.png?v=12e45178d36bc67112c2c623aa17f300)Sign In](https://dashboard.dolby.io/)
   2. Create an account using OAuth credentials (and click through the account creation dialogue)
   3. Click on the default stream that is created for you\\

      <figure><img src="/files/YG3id8vMgkOZDm35V78u" alt=""><figcaption></figcaption></figure>
   4. Identify your stream name and account ID, e.g. `myStreamName` and `reQfTX` respectively below

      <figure><img src="/files/3eOPAOOLSK7ZepX7EQHv" alt=""><figcaption></figcaption></figure>
6. Add your Millicast stream name and account ID for your Millicast control\
   \
   Select your control asset in the World Outliner and, in the *Details* panel, configure these settings, e.g.

<figure><img src="/files/9Z6TiDb1OHtg4xuemTaN" alt=""><figcaption></figcaption></figure>

7. Give your the required in-game role to be able to change Millicast settings\\

   \
   In the *World Settings* panel:

   1. search for “roles”
   2. expand the `Default Role` setting
   3. set the `Row Name` to `Director`\\
8. Start a stream from your Millicast (Dolby streaming) account\
   \
   In practice, you might want to follow [this guide](https://docs.dolby.io/streaming-apis/docs/using-obs#webrtc-with-obs) to stream from OBS\
   \
   Initially, the easiest way to stream is via the web UI which uses a webcam feed\\
   1. From the [![](https://streaming.dolby.io/favicon.png)Dashboard](https://streaming.dolby.io/) page:
   2. Click on the BROADCAST button\\

      ![](/files/5AYfm3HGuHRy72K8bFAZ)\\
   3. Open the Media Settings via the cog icon in the bottom-right of the stream

      \
      ![](/files/e0NYhaBQu2WqnDgZJlfY)\\
   4. Toggle the codec to VP8 or VP9

      \
      NOTE - If it's already set to VP8 or VP9 by default, change it once to the other one - this is to work around a known bug in Dolby's system\
      \
      ![](/files/EjSLEHNUQmivOZCUdiZw)
   5. Click **Update**\\
   6. Click the **Start** button\
      \
      ![](/files/BZolG3cWI8ViiYyaDv8A)\\
9. Click the Play button in the unreal editor\\
10. Once in-game, open the Millicast Control panel

    \
    To do this, right-click to bring up your cursor, then left-click the Millicast Remote Control icon\\

    <figure><img src="/files/la5afcneqaxQVyYSKa4C" alt=""><figcaption></figcaption></figure>
11. In the Millicast Control panel, ensure the `Enabled` and `Receivers` boxes are ticked, then click `Apply`\
    \
    ![](/files/oMjdjKmPoPZQUtnwAUPR)
12. Your Millicast screen should now display the feed from your stream\\

    <figure><img src="/files/3MGIKMZXOxD3GB93GjiZ" alt=""><figcaption></figcaption></figure>

For more information, see the reference page on [Millicast video streaming](/platform-documentation/creation/unreal-development/features-and-tutorials/video-players/millicast-video-streaming.md)

For desktop streaming, you can follow [this guide](https://docs.dolby.io/streaming-apis/docs/using-obs#webrtc-with-obs) to stream to Millicast from OBS


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.otherside.xyz/platform-documentation/creation/unreal-development/features-and-tutorials/video-players/millicast-video-streaming/how-to-set-up-an-in-game-video-stream.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
