# Stream List

## Managed Streams

Managed Stream은 OvenMediaEngine Enterprise에 <mark style="color:yellow;">사용자가 Stream 명을 미리 지정</mark>해놓고 사용하는 Stream 목록을 의미합니다.

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/dWQhe96vdfLAimeP7Hzl/image.png" alt=""><figcaption></figcaption></figure>

위 이미지 처럼 사용자에 의해 Managed Stream이 생성되었으나 아직 Stream을 전송 받지 못한 상태와 Stream을 전송 받은 상태를 Stream 목록에서 한 눈에 볼 수 있습니다.

### Managed Stream 생성

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/oHJWEAFHAJPP5poXLNrH/image.png" alt=""><figcaption></figcaption></figure>

위 이미지와 같이 OvenMediaEngine Enterprise에 최초 접속 시, 생성되어 있는 Managed Stream이 없으며 우측 상단에 위치한 <mark style="color:yellow;">Plus 버튼를 클릭해 Managed Stream을 생성</mark>할 수 있습니다. Managed Stream은 사용자가 삭제하기 전까지 목록에 표시됩니다.

### Managed Stream 삭제

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/UzKwEkrtCnQuzypFPpVT/image.png" alt=""><figcaption></figcaption></figure>

사용자가 생성한 Managed Stream Box <mark style="color:yellow;">우측 상단에 X 표시를 눌러 삭제</mark>할 수 있습니다.

이때 Managed Stream에 Stream이 송출되지 않고 있다면 Stream 목록에서 해당 Box는 사라지지만, 반대로 해당 Managed Stream에 Stream이 송출되고 있는 중에 삭제를 진행했다면, 해당 Managed Stream은 <mark style="color:yellow;">Instant Stream으로 전환</mark>되어 Stream이 유지됩니다.

해당 Stream을 완전히 중단하고 싶다면 카메라, 라이브 인코더 등에서 송출 중인 Stream (미디어 소스)을 중지해야합니다.

## Instant Streams

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/m0CVOCY1P8EnaRnrtXgB/image.png" alt=""><figcaption><p>Stream이 수신되어 Instant Stream</p></figcaption></figure>

Instant Stream은 Managed Stream에 이미 <mark style="color:yellow;">지정된 Stream 외</mark>에 OvenMediaEngine Enterprise로 송출되는 <mark style="color:yellow;">Stream을 감지해 자동으로 Instant로 분류</mark>하여 모니터링 할 수 있도록 목록화하는 기능입니다. 해당 Instant Stream이 카메라, 라이브 인코더 등으로부터 송출이 중단되는 경우 Instant Streams 목록에서 자동으로 사라집니다.

## Scheduled Channels

Scheduled Channel은 OvenMediaEngine Enterprise에서 사용자가 사전 녹화된 미디어 파일 또는 Live 등을 이용하여 <mark style="color:yellow;">정해진 일정에 맞춰 Stream을 송출</mark>하는 기능입니다.

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/iwLQdxsyo34F3BkBaiKG/image.png" alt=""><figcaption><p>예약된 시간에 맞춰 송출 중인 Scheduled Channel</p></figcaption></figure>

{% hint style="info" %}
세부 가이드: <https://airensoft.gitbook.io/ovenmediaengine/v/dev/live-source/scheduled-channel>
{% endhint %}

### Scheduled Channel 생성

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/GuPZmuyUCfvD4TN0it0O/image.png" alt=""><figcaption></figcaption></figure>

위 이미지와 같이 Web Console Home에서 사용자는 Scheduled Channel을 생성할 수 있습니다.

* <mark style="color:yellow;">**Name**</mark>: Scheduled Channel을 생성하는데 필요한 기본적인 이름 정보입니다.
* <mark style="color:yellow;">**Video track**</mark>: Scheduled Channel에서 Video 트랙을 사용할지 여부를 결정합니다. Video 트랙이 `true`로 설정되어 있고 항목에 Video 트랙이 없으면 오류가 발생합니다.
* <mark style="color:yellow;">**Audio track**</mark>: Scheduled Channel에서 Audio 트랙을 사용할지 여부를 결정합니다. Audio 트랙이 `true`로 설정되어 있고 항목에 Audio 트랙이 없으면 오류가 발생합니다.
* <mark style="color:yellow;">**Bypass transcoder**</mark>: Media Source를 트랜스코딩하지 않고 그대로 송출하고자 한다면 `true`로 설정하여 Bypass를 사용할 수 있습니다.

Fallback Program을 설정하여, 현재 시간에 예약된 프로그램이 없거나 항목에 오류가 발생하면 자동으로 화면을 전환할 수 있습니다. Program이 업데이트 되거나 스트리밍이 정상으로 돌아오면 원래 Program으로 돌아갑니다.

* <mark style="color:yellow;">**URL**</mark>: Fallback할 Media Source의 위치 (URL)입니다.
* <mark style="color:yellow;">**Start**</mark>: Fallback할 Media Source File이 어디부터 재생될지 시간을 지정할 수 있으며, 밀리초 단위로 설정할 수 있습니다.
* <mark style="color:yellow;">**Duration**</mark>: Media Source File의 재생시간을 지정할 수 있으며, 밀리초 단위로 설정할 수 있습니다.

Program에 사용자는 ISO8601 형식으로 시간 및 종료 시간을 설정하여 재생할 스트리밍을 편성할 수 있습니다.

* <mark style="color:yellow;">**Name**</mark>: Program의 이름은 선택적 참조 값이며, 설정하지 않으면 임의의 이름이 지정됩니다.
* <mark style="color:yellow;">**Scheduled**</mark>: Program의 시작 시간을 설정합니다.
* <mark style="color:yellow;">**Repeat**</mark>: Program의 재생이 끝나면, 해당 Program을 반복할지 여부를 설정합니다.
* <mark style="color:yellow;">**URL**</mark>: Media Source의 위치 (URL)입니다.
  * URL이 `file://`로 시작하면 `MediaRootDir` 디렉토리 내 File을 참조합니다.
  * URL이 `stream://`로 시작하면 같은 OvenMediaEngine 내의 다른 Stream을 참조합니다.

{% hint style="info" %}
stream://vhost\_name/app\_name/stream\_name
{% endhint %}

* <mark style="color:yellow;">**Start**</mark>: Media Source File이 어디부터 재생될지 시간을 지정할 수 있으며, 밀리초 단위로 설정할 수 있습니다. 설정하지 않으면 기본적으로 0초부터 재생합니다.
* <mark style="color:yellow;">**Duration**</mark>: Media Source의 재생시간을 지정할 수 있으며, 밀리초 단위로 설정할 수 있습니다. 지정한 Duration이 끝나면, Program 내 다음 항목을 재생합니다. Duration을 설정하지 않은 경우, Media Source의 재생 시간으로 설정됩니다.

### Scheduled Channel 수정

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/h3pL67iPAeRR4YJcOHrI/image.png" alt=""><figcaption></figcaption></figure>

Web Console Home에서 사용자가 생성한 Scheduled Channel Box 내 <mark style="color:yellow;">수정 아이콘</mark>을 눌러 수정할 수 있습니다.

### Scheduled Channel 삭제

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/9HEkYcjFmYMDqyG89OZ2/image.png" alt=""><figcaption></figcaption></figure>

Web Console Home에서 사용자가 생성한 Scheduled Channel Box 내 <mark style="color:yellow;">X 표시</mark>를 눌러 삭제할 수 있습니다.

## Multiplex Channels

사용자는 OvenMeidaEngine Enterprise 내 Multiplex Channel 기능을 사용하여 <mark style="color:yellow;">입력된 여러개의 Stream을 하나로 결합</mark>하여 ABR을 구성하거나 외부 Stream을 복제하여 다른 Application으로 전송하는데 사용할 수 있습니다. 또한 Multiplex Channel은 다른 Local Stream에서 이미 인코딩된 트랙을 가져와 자체 트랙으로 구성하는데, 이는 코덱을 변경하거나 품질을 다시 조정하려는 경우 유용할 수 있습니다.

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/EAEuU7Djh6n36iHRam2g/image.png" alt=""><figcaption><p>Multiplex Channel이 송출되고 있는 경우</p></figcaption></figure>

{% hint style="info" %}
세부 가이드: <https://airensoft.gitbook.io/ovenmediaengine/v/dev/live-source/multiplex-channel>
{% endhint %}

### Multiplex Channel 생성

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/AiW2BgW7Nm7KBZB2IPx1/image.png" alt=""><figcaption></figcaption></figure>

위 이미지와 같이 Web Console Home에서 사용자는 Multiplex Channel을 생성할 수 있습니다.

* <mark style="color:yellow;">**Name**</mark>: 새로 생성할 Multiplex Channel의 이름입니다.

Multiplex Channel은 여러 개의 Source Stream을 Multiplexing합니다. 해당 Source Stream은 다른 Vhost 또는 App에서 Stream 형식으로 로드할 수도 있습니다.

* <mark style="color:yellow;">**Name**</mark>: Multiplexing할 Source Stream의 이름입니다.
* <mark style="color:yellow;">**URL**</mark>: Source Stream의 위치 (URL)입니다.

{% hint style="info" %}
stream://\<vhost name>/\<app name>/\<stream name>
{% endhint %}

* <mark style="color:yellow;">**Source Track Name**</mark>: Source Track 이름은 해당 Source Stream의 `<OutputProfile><Encodes><VideoName>` 또는 `<OutputProfile><Encodes><AudioName>`입니다.
* <mark style="color:yellow;">**New Track Name**</mark>: 여러 Stream이 하나의 Stream으로 결합되므로 Track 이름이 중복될 수 있습니다. 따라서, 해당 Multiplex Channel에서 사용하기 위해 변경한 Track 이름입니다.

Multipelx Channel에 구성된 Playlist는 해당 Multipelx Channel에만 존재합니다. Playlist는 `<SourceStreams>`의 `<TrackMap>`에서 새로 매핑된 Track 이름을 사용하여 구성해야 하며, `<OutputProfile>`과 동일한 형식을 사용해야 합니다.

* <mark style="color:yellow;">**WebRTC Auto ABR**</mark>: 기본적으로 `true`로 설정되어 있으며, WebRTC를 사용할 때 Rendition을 자동으로 전환합니다.
* <mark style="color:yellow;">**Enable Ts Packaging**</mark>: Playlist에서 `<EnableTsPackaging>`이 켜져 있으면, HLS Publisher가 해당 Playlist를 사용하여 TS 파일을 패키징하고 스트리밍할 준비를 합니다.
* <mark style="color:yellow;">**audio**</mark>: Source Stream에 설정된 새로운 Track 이름이며, Playlist에서 Audio Track 이름으로 사용됩니다.
* <mark style="color:yellow;">**video**</mark>: Source Stream에 설정된 새로운 Track 이름이며, Playlist에서 Video Track 이름으로 사용됩니다.

### Multiplex Channel 삭제

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/mMrgFm0B1jYQMfixIgs9/image.png" alt=""><figcaption></figcaption></figure>

Web Console Home에서 사용자가 생성한 Multiplex Channel Box 내 <mark style="color:yellow;">X 표시</mark>를 눌러 삭제할 수 있습니다.

## Thumbnails

OvenMediaEngine Enterprise는 라이브 스트림에서 Thumbnail을 생성할 수 있어, 방송 목록을 구성하거나 여러 Stream을 동시에 모니터링할 수 있습니다.

### Thumbnail이 표시되지 않는 경우

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/veYq09L5KqCuZyGzSOYu/image.png" alt=""><figcaption></figcaption></figure>

Stream 송출 시 OvenMediaEngine에 Thumbnail 기능이 활성화 되어있지 않으면 Thumbnail 영역에 가이드가 표시됩니다. 해당 가이드를 참고하여 Thumbnail을 설정할 수 있습니다.

{% hint style="info" %}
세부 가이드: [https://airensoft.gitbook.io/ovenmediaengine/thumbnail](https://airensoft.gitbook.io/ovenmediaengine/thumbnail-experiment)
{% endhint %}

## Stream 대기

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/HIUTJSWJ7wkoTKf9Iorz/image.png" alt=""><figcaption><p>Stream List에서 Stream 대기</p></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Z6NWzeQyKbSWkDFSGwGx/blobs/prSU8b2O5ScXdfp72dOF/image.png" alt=""><figcaption><p>Stream Monitoring에서 Stream 대기</p></figcaption></figure>

Instant Stream을 제외하고 Managed Stream, Scheduled Channel, Multiplex Channel의 경우 <mark style="color:yellow;">Ingress 중인 Stream이 없어 시스템이 대기 중일 때</mark> `No Signal` 및 `No data`로 표시됩니다.
