# Publish Overview

OvenMediaEngine Enterprise의 가장 중요한 기본 동작은 <mark style="color:yellow;">Media Source를 수신</mark> (Ingest/Input/Ingress)하고, 생성된 Stream을 <mark style="color:yellow;">초저지연으로 송출</mark> (Deliver/Output/Egress)하는 것입니다. 따라서 OvenMediaEngine Enterprise는 Publish Streams를 보다 쉽고 안정적으로 수행할 수 있도록 다양한 편의 기능을 제공하며, 사용자는서비스 요구사항과 운영 환경에 맞게 이용할 수 있습니다.

## Managed Stream과 Instant Stream <a href="#managed-stream-and-instant-stream" id="managed-stream-and-instant-stream"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FSPNFtKtcB7nPbD9i9zEM%2Fimage.png?alt=media&#x26;token=b48f8694-8a78-4e6d-9285-354822df159c" alt=""><figcaption></figcaption></figure>

### Managed Stream 기능 소개 <a href="#managed-stream-overview" id="managed-stream-overview"></a>

* Managed Stream은 사용자가 OvenMediaEngine Enterprise에 <mark style="color:yellow;">\[Stream Name]</mark>을 사전에 등록하여 관리하는 <mark style="color:yellow;">고정형 Stream 항목</mark>입니다. 생성한 Managed Stream은 사용자가 삭제하기 전까지 Stream List에 유지됩니다.

#### 왜 필요한가요? <a href="#why-is-managed-stream-needed" id="why-is-managed-stream-needed"></a>

* 전통적인 Broadcasting 및 Studio 운영 환경에서 <mark style="color:yellow;">반복적으로 송출되는 고정 소스</mark>의 Stream Name을 표준화 (예: `studio_cam_01`, `studio_cam_02`, `program_main`, `backup_main`, `...`)하여 운영하는 경우가 많습니다. 이처럼, Stream List가 고정되면 운영자가 송출 여부와 상태를 지속적으로 Monitoring/Tracking하기 쉽고, 알림 기준이나 운영 매뉴얼도 일관되게 유지할 수 있습니다.
* Enterprise 운영 환경에서 접근 제어/권한 정책과 연계하여 관리 대상을 명확히 해야 하는 경우, System은 <mark style="color:yellow;">사전에 정의된 Stream만 수신</mark>할 수 있고, Player 등 외부 시스템이 <mark style="color:yellow;">특정 Stream Name을 기준으로 연결</mark>되도록 설정된 경우, Managed Stream은 관리 대상의 기준점이 되어 운영 실수를 줄여줍니다.

{% hint style="success" %}
자세한 내용 및 세부 기능은 [Managed and Instant Streams](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/web-console/web-console-overview/stream-list/managed-and-instant-streams) 가이드를 참고해주십시오.
{% endhint %}

### Instant Stream 기능소개 <a href="#instant-stream-overview" id="instant-stream-overview"></a>

* Instant Stream은 Managed Stream으로 사전 등록되지 않은 Stream이 OvenMediaEngine Enterprise로 전송될 때, 이를 <mark style="color:yellow;">자동으로 감지</mark>하여 Instant Stream으로 분류하고 Stream List에 표시하는 기능입니다. 해당 Stream의 송출이 중단되면 Stream List에서 자동으로 삭제됩니다.

#### 왜 필요한가요? <a href="#why-is-instant-stream-needed" id="why-is-instant-stream-needed"></a>

* 테스트 송출, 라이브 이벤트, 현장 카메라 추가 등 Stream이 수시로 생겼다 사라지는 현장에서 매번 Stream을 System에 등록하는 것은 매우 번거롭습니다. OvenMediaEngine Enterprise는 Media Source가 들어오는 대로 자동 감지하여 즉시 Monitoring할 수 있게 해주고, Stream이 종료되면 자동으로 정리하여 임시 Stream 운영이 많은 환경에서도 관리 부담을 줄일 수 있고, 나아가 <mark style="color:yellow;">유연한 운영 프로세스 구축</mark> 환경을 제공합니다.

{% hint style="success" %}
자세한 내용 및 세부 기능은 [Managed and Instant Streams](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/web-console/web-console-overview/stream-list/managed-and-instant-streams) 가이드를 참고해주십시오.
{% endhint %}

## RTSP Pull Stream <a href="#rtsp-pull-stream" id="rtsp-pull-stream"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FwOpCyLhoemgPepyogeYC%2Fimage.png?alt=media&#x26;token=4ec71552-b07f-4686-9d80-ad054afe8962" alt=""><figcaption></figcaption></figure>

### RTSP Pull Stream 기능 소개 <a href="#rtsp-pull-stream-overview" id="rtsp-pull-stream-overview"></a>

* RTSP Pull Stream은 OvenMediaEngine Enterprise가 <mark style="color:yellow;">외부 RTSP URL</mark> (예: CCTV, IP Camera, NVR 등)<mark style="color:yellow;">에 직접 접속하여 Media Soruce를 가져오고</mark>, 이를 서비스에서 사용할 수 있는 Stream으로 가공하는 기능입니다. 별도의 송출용 Encoder나 Gateway 없이도 RTSP Pulling만으로 Stream을 만들 수 있으며, 생성된 Stream은 WebRTC, LLHLS, HLS, SRT 등 필요한 Protocol로 재송출해 서비스에 바로 연결할 수 있습니다.

#### 왜 필요한가요? <a href="#why-is-rtsp-pull-stream-needed" id="why-is-rtsp-pull-stream-needed"></a>

* CCTV, IP Camera, NVR 등 현장 장비의 RTSP Source를 초저지연 Streaming으로 변환하여 웹/모바일 플레이어에서 재생하거나, 다수 채널을 운영하며 상황을 관제해야 하는 환경에서 OvenMediaEngine Enteprise의 RTSP Pull 기능을 이용하면, <mark style="color:yellow;">장비 변경 또는 프로그램 추가 설치 없이</mark> 중앙에서 관리할 수 있는 Live Streaming 파이프라인을 손쉽게 구축할 수 있습니다.

{% hint style="success" %}
기능 사용법은 [Publish via RTSP Pull (CCTV)](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/aws-marketplace/publish-streams/publish-via-rtsp-pull-cctv) 가이드를 참고해주십시오.
{% endhint %}

## Scheduled Channel <a href="#scheduled-channel" id="scheduled-channel"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2F739dJig3GbySVKTdL7SN%2Fimage.png?alt=media&#x26;token=bc030142-e160-4671-aaf8-461ea97baf13" alt=""><figcaption></figcaption></figure>

### Scheduled Channel 기능 소개 <a href="#scheduled-channel-overview" id="scheduled-channel-overview"></a>

* Scheduled Channel은 Media File 또는 Live를 <mark style="color:yellow;">편성하여 송출</mark>하는 기능입니다. 다양한 원인으로 Live가 중단되면 Failover 기능을 통해 자동으로 대체 입력으로 전환하고, 다시 Live가 재개되면 즉시 Live로 전환하여 중단없는 Streaming 경험을 제공합니다.

#### 왜 필요한가요? <a href="#why-is-scheduled-channel-needed" id="why-is-scheduled-channel-needed"></a>

* 24/7 채널 운영, 정시 편성, 광고/하이라이트/공지 삽입 같은 운영에는 Timetable 기반 편성 송출이 필수입니다. Scheduled Channel을 사용하면 사람이 아닌 <mark style="color:yellow;">System이 일정에 맞춰 Stream을 자동으로 송출 및 전환</mark>하며, Live 장애 시에도 자동으로 Failover되어중단 없는 Streaming을 유지할 수 있습니다.

### Scheduled Channel  메뉴 소개 <a href="#scheduled-channel-menu-overview" id="scheduled-channel-menu-overview"></a>

* 위 이미지와 같이 Web Console에서 사용자는 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을 참조합니다.
  * <mark style="color:yellow;">**Start**</mark>: Media Source File이 어디부터 재생될지 시간을 지정할 수 있으며, 밀리초 단위로 설정할 수 있습니다. 설정하지 않으면 기본적으로 0초부터 재생합니다.
  * <mark style="color:yellow;">**Duration**</mark>: Media Source의 재생시간을 지정할 수 있으며, 밀리초 단위로 설정할 수 있습니다. 지정한 Duration이 끝나면, Program 내 다음 항목을 재생합니다. Duration을 설정하지 않은 경우, Media Source의 재생 시간으로 설정됩니다.

{% hint style="success" %}
자세한 내용 및 세부 기능은 [Scheduled Channels](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/web-console/web-console-overview/stream-list/scheduled-channels) 가이드를 참고해주십시오.
{% endhint %}

## Multiplex Channel <a href="#multiplex-channel" id="multiplex-channel"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FIe9Bih6COEEZ40slcofn%2Fimage.png?alt=media&#x26;token=72644825-eae6-44c3-8e31-ebda2b0d479b" alt=""><figcaption></figcaption></figure>

### Multiplex Channel 기능 소개 <a href="#multiplex-channel-overview" id="multiplex-channel-overview"></a>

* Multiplex Channel은 입력된 <mark style="color:yellow;">여러 Stream을 하나로 결합</mark>하여 <mark style="color:yellow;">ABR을 구성</mark>하거나, <mark style="color:yellow;">외부 Stream을 복제</mark>해 <mark style="color:yellow;">다른</mark> <mark style="color:yellow;"></mark><mark style="color:yellow;">`App`</mark><mark style="color:yellow;">으로 전달</mark>하는 데 사용할 수 있습니다. 또한 다른 Local Stream에서 이미 인코딩된 Track을 가져와 자체 Track으로 구성할 수 있어, Codec 변경 또는 품질 재조정이 필요한 경우에도 유용합니다.

#### 왜 필요한가요? <a href="#why-is-multiplex-channel-needed" id="why-is-multiplex-channel-needed"></a>

* Production 운영 환경에서는 입력이 여러 개로 늘어나거나 (Multi Camera/Multi Source), 서비스 요구사항에 따라 Multi Soruce를 하나로 통합 (ABR 구성/Multi View)해야 하는 경우가 있습니다. Multiplex Channel을 사용하면 Stream을 재구성하거나 복제해 재전송하는 작업을 유연하게 처리할 수 있고, 필요에 따라 기존 Track을 재활용하여 <mark style="color:yellow;">불필요한 재인코딩 부담을 줄이면서 파이프라인을 확장</mark>할 수 있습니다.

### Multiplex Channel 메뉴 소개 <a href="#multiplex-channel-menu-overview" id="multiplex-channel-menu-overview"></a>

* 위 이미지와 같이 Web Console에서 사용자는 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)입니다.
  * <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 이름으로 사용됩니다.

{% hint style="success" %}
자세한 내용 및 세부 기능은 [Multiplex Channels](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/web-console/web-console-overview/stream-list/multiplex-channels) 가이드를 참고해주십시오.
{% endhint %}
