# Video Streaming

**Streaming videos** with Uiza is pretty straightforward where the whole process could be summarized in 4 simple steps:&#x20;

1. You give us the video,
2. You allow us to publish the video,
3. We let you know when your video is published, and
4. You tell your player to start streaming :nerd:&#x20;

![](https://1745826395-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvrzIvDAhLQiG23XLCQ%2F-LxQXkTNioLWcQ4SBhXS%2F-LxQZO0_8W966JjHyU7S%2FVideo%20quick%20start.gif?alt=media\&token=63608bc8-2794-4bdc-a9a8-4feda3b287b0)

## Step 1: Create a video entity

You can create a [`video_entity`](https://docs.uiza.io/api-reference/video-entities) using HTTP/HTTPS URL links to your original video files. In case the video file is located in your PC, you can upload the video via the [Uiza Developer Console](https://app.uiza.io/) by following these steps:

1. Login to Uiza Developer Console
2. **Start** your application, then go to **Upload Video** page
3. Browse to your local video file or enter multiple HTTP/HTTPS URLs
4. Click **Proceed** to start uploading your selected video files

![Upload Video Selection Page](https://1745826395-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvrzIvDAhLQiG23XLCQ%2F-M4TREyB674nAG26Gwwy%2F-M4TeyQWizdpvWNf-YHt%2Fimage.png?alt=media\&token=85fb0715-165d-4332-8c09-d5007e7ceb40)

Successfully uploaded `video_entities` will be ingested and listed out in the Developer Console. To transcode the video, click on "Publish" or move to step 2.

![Upload Video Result Page](https://1745826395-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvrzIvDAhLQiG23XLCQ%2F-M4TREyB674nAG26Gwwy%2F-M4ThijWbsfQ-GAmQAf_%2Fimage.png?alt=media\&token=70a68fa3-b4fc-481c-81da-d869c08b16fe)

Go to **Entities** page and select created video entity for checking `id` and other details.

## Step 2: Publish the video entity

The renditions of your video, as the output of transcoding, will be distributed to Uiza's [Content Delivery Network](https://en.wikipedia.org/wiki/Content_delivery_network) (CDN) through which it is delivered to viewers.&#x20;

To let Uiza know that you are ready to publish your video to your viewers, you can use [Uiza Developer Console](https://app.uiza.io/) or send a request to ***Publish a video entity*** API.

## /v1/video\_entities/:id/publish

<mark style="color:green;">`POST`</mark> `https://api.uiza.sh/v1/video_entities/:id/publish`

#### Path Parameters

| Name | Type   | Description                                         |
| ---- | ------ | --------------------------------------------------- |
| id   | string | The identifier of the video entity to be published. |

{% tabs %}
{% tab title="200 " %}

```
{
 "message": "Video entity started to publish successfully"
}
```

{% endtab %}
{% endtabs %}

{% code title="Sample Request" %}

```
curl -X POST https://api.uiza.sh/v1/video_entities/f42b4ac3-869e-4010-8e21-042e40be7655/publish 
     -H 'Accept: */*' 
     -H 'Authorization: uap-c1ffbff4db954ddcb050c6af0b43ba56-41193b64' 
     -H 'Cache-Control: no-cache' 
     -H 'Connection: keep-alive'
```

{% endcode %}

## Step 3: Retrieve the video entity's information

The process of transferring the renditions of your video to Uiza's CDN takes time. You player can only start playing the video after it has been successfully published. To keep track of this process, retrieve the video entity's information. The `publish_to_cdn` argument indicates the publishing status of your video entity. If the value is `success`, you are good to go.

## /v1/video\_entities/:id

<mark style="color:blue;">`GET`</mark> `https://api.uiza.sh/v1/video_entities/:id`

#### Path Parameters

| Name | Type   | Description                                         |
| ---- | ------ | --------------------------------------------------- |
| id   | string | The identifier of the video entity to be retrieved. |

{% tabs %}
{% tab title="200 " %}
{% tabs %}
{% tab title="The Video Entity has not been published" %}

```
{
 "id": "f42b4ac3-869e-4010-8e21-042e40be7655",
 "name": "Sample Demo-Video",
 "description": "Lorem ipsum dolor sit amet, vis odio oratio scripserit ut",
 "short_description": "Duo ad graeci principes, legimus mnesarchum scribentur ut pro",
 "view": 1000,
 "poster": "Lorem ipsum dolor",
 "thumbnail": "Lorem ipsum dolor",
 "type": "VOD",
 "duration": 11213,
 "publish_to_cdn": "queue",
 "created_at": "2019-12-11T02:47:04Z",
 "updated_at": "2019-12-11T02:47:04Z"
}
```

{% endtab %}

{% tab title="The Video Entity is published successfully" %}

```
{
    "id": "77123e09-a30b-456b-b954-c16fe81f97f7",
    "name": "test 998",
    "description": "Entity for Test",
    "short_description": "",
    "view": 0,
    "poster": "",
    "thumbnail": "",
    "input_type": "UNKNOWNVODINPUTTYPE",
    "duration": 269.588,
    "publish_to_cdn": "success",
    "playback": {
        "hls": "https://dvr-playback-secure.uizadev.io/05bb5869-e134-4e9e-a2d2-de5c77dd182f/77123e09-a30b-456b-b954-c16fe81f97f7/master.m3u8",
        "hls_ts": "",
        "mpd": ""
    },
    "created_at": "2020-02-12T12:28:00Z",
    "updated_at": "2020-02-12T12:32:30Z"
}
```

{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

{% code title="Sample Request" %}

```
curl -X GET https://api.uiza.sh/v1/live_entities/22013d8a-d5fa-48f0-9a63-1f471ca9e81d 
     -H 'Accept: */*' 
     -H 'Accept-Encoding: gzip, deflate' 
     -H 'Authorization: uap-c1ffbff4db954ddcb050c6af0b43ba56-41193b64' 
     -H 'Cache-Control: no-cache' 
     -H 'Connection: keep-alive'
```

{% endcode %}

## Step 4: **Configure the playback link to your player and start streaming!**

Three playback links are returned in the response of Step 3. These playback links represent the 3 streaming protocols that Uiza currently supports:

* `hls` for HLS fMP4 streaming,
* `hls_ts` for HLS ts streaming, and
* `mpd` for MPEG-dash streaming.

Configure these playback links to your player will enable your player to get the video chunks from Uiza's CDN, decode and display them to your viewers. And that is How to stream your first video with Uiza in 4 simple steps. :wink:&#x20;
