# Getting Started on AWS

## OvenMediaEngine Enterprise 구독하기 <a href="#subscribe-to-ovenmediaengine-enterprise" id="subscribe-to-ovenmediaengine-enterprise"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FjDiN78J1823bMMWM7ETb%2Fimage.png?alt=media&#x26;token=31159d9f-3b7f-4e78-9582-8afadeed0340" alt=""><figcaption></figcaption></figure>

1. [AWS Marketplace](https://aws.amazon.com/marketplace)에 로그인합니다.
2. <mark style="color:yellow;">**OvenMediaEngine Enterprise**</mark>을 검색한 뒤, 제품 페이지를 열어 내용을 확인합니다.
3. 이후 <mark style="color:yellow;">\[구매 옵션 보기]</mark>를 클릭하고, 약관 및 구독 조건에 동의합니다.
4. 다음 화면에서 확인이 완료되면 <mark style="color:yellow;">\[구독]</mark>을 클릭하여 구매를 완료하십시오.
   * 구독 설정이 완료되면, Amazon EC2에서 OvenMediaEngine Enterprise를 배포하고 실행할 수 있습니다.  보다 자세한 절차가 궁금한 경우, 공식 [AWS Buyer's Guide](https://docs.aws.amazon.com/marketplace/latest/buyerguide/buyer-getting-started.html)를 참고하십시오.

## OvenMediaEngine Enterprise 접속하기 <a href="#access-to-ovenmediaengine-enterprise" id="access-to-ovenmediaengine-enterprise"></a>

{% stepper %}
{% step %}

### EC2 Instance 실행 및 생성 <a href="#launch-an-ec2-instance" id="launch-an-ec2-instance"></a>

5. 구독을 결정했으면, 잠시후 표기되는 <mark style="color:yellow;">\[소프트웨어 시작]</mark> 버튼을 눌러 EC2 Instance 설정 페이지로 진입합니다.
   * 만약 기다려도 <mark style="color:yellow;">\[소프트웨어 시작]</mark> 버튼이 나타나지 않는다면, [AWS Console Home](https://console.aws.amazon.com) 또는 [AWS Marketplace](https://aws.amazon.com/marketplace)에서 <mark style="color:yellow;">\[AWS Marketpalce 소프트웨어]</mark> (또는 \[구독 관리])를 클릭하여 직접 Instance를 실행할 수 있는 페이지로 이동할 수 있습니다.

{% hint style="success" %}

1. OvenMediaEngine Enterprise는 다양한 EC2 인스턴스 타입에서 실행할 수 있지만, <mark style="color:yellow;">`c5.xlarge`</mark> <mark style="color:yellow;"></mark><mark style="color:yellow;">이상</mark>을 권장합니다.
2. 보안 그룹은 <mark style="color:yellow;">\[공급 업체 권장 보안 그룹]</mark>을 선택하여, 필요한 Port가 포함된 보안 그룹을 자동으로 생성하는 것을 권장합니다.
   {% endhint %}

#### \[Option A]  "**EC2 콘솔에서 시작**"을 선택한 경우 <a href="#launch-from-ec2-console" id="launch-from-ec2-console"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2F0yt4PHIEEaJGVKnfjNuX%2Fimage.png?alt=media&#x26;token=f5eeb603-661a-4c91-9168-6f314d2917b2" alt=""><figcaption></figcaption></figure>

2. \[설정] 화면에서 <mark style="color:yellow;">\[EC2 콘솔에서 시작]</mark>을 시작 방법으로 선택했다면, 아래 \[시작하기] 내 <mark style="color:$primary;">**\[EC2에서 시작]**</mark> 버튼을 눌러, Instance 상세 설정을 진행합니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FlzN4iWQPAMQBOZPTOK79%2Fimage.png?alt=media&#x26;token=e854026f-5877-403a-ae1e-23bb537b1232" alt=""><figcaption></figcaption></figure>

3. 이때, 상세 설정 중 <mark style="color:yellow;">\[네트워크 설정]</mark> 탭이 위 이미지 처럼 <mark style="color:$primary;">**\[공급 업체 권장 보안 그룹]**</mark>이 적용되어있는지 확인하고, 나머지 설정을 마무리합니다.
4. 이후 요약에 위치한 <mark style="color:yellow;">\[인스턴스 시작]</mark> 버튼을 눌러 Instance를 생성하고 실행합니다.

{% hint style="info" %} <mark style="color:yellow;">\[공급 업체 권장 보안 그룹]</mark>에 포함된 Port에 대한 자세한 설명은 [Inbound Security Group Rules](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/aws-marketplace/getting-started-on-aws/inbound-security-group-rules)를 참고해 주십시오.
{% endhint %}

***

#### \[Option B] "**AWS Marketplace에서 원클릭 시작**"을 선택한 경우 <a href="#one-click-launch-from-aws-marketplace" id="one-click-launch-from-aws-marketplace"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2Fw6jq9NfDr6OSRbadsj3H%2Fimage.png?alt=media&#x26;token=960d395b-a9f7-497f-b866-3848d890f6d3" alt=""><figcaption></figcaption></figure>

2. \[설정] 화면에서 <mark style="color:$primary;">\[AWS Marketplace에서 원클릭 시작]</mark>을 시작 방법으로 선택했다면, 각 항목에 맞춰 상세 설정을 진행합니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2F0CAl9zbfEGwof54c7j0L%2Fimage.png?alt=media&#x26;token=db241e57-23e8-436e-981d-ea944ce060f9" alt=""><figcaption></figcaption></figure>

3. \[보안 그룹] 항목에서 <mark style="color:yellow;">\[보안 그룹 생성]</mark> 버튼을 눌러 <mark style="color:$primary;">**\[공급업체 권장 보안 그룹 생성]**</mark> 내용 확인 후 보안 그룹을 생성하십시오.
4. 이후 아래에 위치한 시작하기 내 <mark style="color:yellow;">\[원클릭 시작]</mark> 버튼을 눌러 Instance를 생성하고 실행합니다.

{% hint style="info" %} <mark style="color:yellow;">\[공급 업체 권장 보안 그룹]</mark>에 포함된 Port에 대한 자세한 설명은 [Inbound Security Group Rules](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/aws-marketplace/getting-started-on-aws/inbound-security-group-rules)를 참고해 주십시오.
{% endhint %}
{% endstep %}

{% step %}

### Instance의 필수 정보 확인 <a href="#check-required-instance-information" id="check-required-instance-information"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FBtqzAjCE8Wgnvvda9iJX%2Fimage.png?alt=media&#x26;token=d80e3848-c0ff-42c7-920e-815efc3cd6d7" alt=""><figcaption></figcaption></figure>

5. Instance가 <mark style="color:$success;">Running</mark> 상태가 되면, EC2 Dashboard에서 아래 정보를 확인하십시오.
   * Public IPv4 Address (예: `54.x.x.x`)
   * Instance ID (예: `i-0abcdef1234567890`)
     {% endstep %}

{% step %}

### Web Console 접속 <a href="#connect-to-the-web-console-and-sign-in" id="connect-to-the-web-console-and-sign-in"></a>

6. 아래 URL을 이용해 브라우저에서 OvenMediaEngine Enterprise Web Console에 접속합니다.
   * URL 형식: <mark style="color:$primary;">**`http://`**</mark>`{Public IPv4 Address}:`<mark style="color:$primary;">**`8080`**</mark>&#x20;

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FFF0C44U85MaFkGM0HzcV%2Fimage.png?alt=media&#x26;token=ab432e59-fdd8-43f9-a878-d36295edbb68" alt=""><figcaption></figcaption></figure>

7. <mark style="color:yellow;">Password</mark> 입력란에 <mark style="color:$primary;">**Instance ID**</mark>를 입력하여 로그인합니다.

{% hint style="info" %}
Web Console 실행 시, *<mark style="color:yellow;">"Waiting for launching OvenMediaEngine Web Console"</mark>*&#xC640; 같은 Loading 페이지가 등장한다면 아직 Instance가 완벽하게 부팅이 된 것이 아니므로 잠시만 기다려주십시오.
{% endhint %}
{% endstep %}
{% endstepper %}

## OvenMediaEngine Enterprise 기본 동작 확인하기 <a href="#post-setup-verification-for-ovenmediaengine-enterprise" id="post-setup-verification-for-ovenmediaengine-enterprise"></a>

본 예제에서는 가장 보편적으로 사용되는 Live Encoder Software인 OBS Studio와 RTMP Protocol을 사용했습니다.

{% stepper %}
{% step %}

### Live Encoder로 송출 (OBS Studio) <a href="#streaming-with-a-live-encoder" id="streaming-with-a-live-encoder"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FAEmmBcvIK83BsKsZSszG%2Fimage.png?alt=media&#x26;token=4ddc8444-ef26-474d-9761-31abd8ee19a8" alt=""><figcaption></figcaption></figure>

1. Open Broadcaster Software (OBS) Studio를 실행합니다.
   * OBS Studio가 설치되어 있지 않다면, 공식 링크 (<https://obsproject.com/download>)에서 다운로드하여설치하십시오.
2. 송출할 Media Source (또는 Camera, Screen Capture 등)를 추가합니다.
3. 이후 OBS 우측 하단의 <mark style="color:yellow;">\[Settings]</mark>를 클릭합니다.
   {% endstep %}

{% step %}

### OBS에서 스트리밍 설정 <a href="#configure-the-stream-destination-in-obs" id="configure-the-stream-destination-in-obs"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FhCMqYo6DWeUT2bHUE2vy%2Fimage.png?alt=media&#x26;token=bcf215cc-c967-438f-82ac-28a94d1eb5a5" alt=""><figcaption></figcaption></figure>

4. Settings 화면 좌측에서, <mark style="color:yellow;">\[Stream]</mark> 탭을 선택합니다.
5. 그리고 <mark style="color:yellow;">\[Service]</mark>에서 <mark style="color:$primary;">**\[Custom]**</mark>을 선택한 뒤, <mark style="color:yellow;">Server</mark> 입력란에 Ingress URL을 입력합니다.
   * Ingress URL 형식: <mark style="color:$primary;">**`rtmp://`**</mark>`{Public IPv4}:`<mark style="color:$primary;">**`1935`**</mark>`/{app}/{stream}`

{% hint style="info" %}
Ingress URL에 Stream Key가 이미 포함되어 있다면, Stream Key 입력을 생략해도 됩니다.
{% endhint %}

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FQgNg2uy8I4z7C72k7eTK%2Fimage.png?alt=media&#x26;token=4f49e019-9400-4159-8619-9d7383929870" alt=""><figcaption></figcaption></figure>

6. 이후 <mark style="color:yellow;">\[Output]</mark> 탭에서 원활한 초저지연 및 저지연 스트리밍을 위해 <mark style="color:$primary;">**`Keyframe Interval`**</mark>을 <mark style="color:$primary;">**1초**</mark>로, <mark style="color:$primary;">**`B-frames`**</mark>를 <mark style="color:$primary;">**0**</mark>으로 설정할 것을 권장합니다.

{% hint style="success" %} <mark style="color:yellow;">B-frames</mark>를 <mark style="color:yellow;">0</mark>으로 설정 (`bframes=0`)하는 이유는 `WebRTC` 최종 출력 시 끊김 현상을 방지하기 위함입니다.\
위 예시는 Encoder로 `x264`를 선택했을 때의 설정 화면이며, 다른 Encoder를 선택할 경우 표시되는 항목이나 세부 구성은 달라질 수 있습니다. <mark style="color:yellow;">`WebRTC`</mark><mark style="color:yellow;">를 최종 출력</mark>으로 사용하는 경우, <mark style="color:yellow;">B-frames는 0으로 설정하는 것을 권장</mark>합니다.
{% endhint %}

7. 필요에 따라 \[Audio], \[Video] 등 각 탭에서 세부 설정을 조정한 뒤, <mark style="color:yellow;">\[OK]</mark>를 클릭하여 OBS 메인 화면으로 돌아갑니다.
8. 모든 설정이 완료되었다면, <mark style="color:yellow;">\[Start Streaming]</mark>을 클릭하여 송출을 시작합니다.

{% hint style="info" %}
다른 Protocol (RTSP Pull, WebRTC/WHIP, SRT, RTMP/E-RTMP 등)로 기본 동작을 확인하고 싶다면, [Publish Streams](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/aws-marketplace/publish-streams) 섹션을 확인하십시오.
{% endhint %}
{% endstep %}

{% step %}

### Web Console에서 스트림 상태 및 재생 확인 <a href="#verify-stream-status-and-playback-in-the-web-console" id="verify-stream-status-and-playback-in-the-web-console"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2F1DbDPhl3ALghH6LUkxFX%2Fimage.png?alt=media&#x26;token=8c8c7b2e-362b-41c2-a99f-fbb9f3f64341" alt=""><figcaption></figcaption></figure>

9. <mark style="color:yellow;">Web Console</mark>에 OBS에서 송출한 Stream이 목록에 표시되는지 확인합니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FuVsEyrSmn9OEgWYH6ov0%2Fimage.png?alt=media&#x26;token=2bd41ba5-36e3-40c0-b9c0-f793fbe00de1" alt=""><figcaption></figcaption></figure>

10. 또한, Web Console에서 Stream 상세 페이지를 통해 아래 정보를 확인합니다:
    1. 재생 상태.
    2. 재생 통계 (bitrate, FPS 등).
    3. 재생 URL 검증.
       {% endstep %}
       {% endstepper %}

## Egress Protocol (WebRTC, LLHLS, HLS, SRT)로 재생하기 <a href="#post-setup-verification-for-ovenmediaengine-enterprise" id="post-setup-verification-for-ovenmediaengine-enterprise"></a>

### 내부 Player로 재생

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FsDpTGBLNWCCof9v55wDz%2Fimage.png?alt=media&#x26;token=7407d3ee-04e1-48ac-8caa-bdc1bac7a2dc" alt=""><figcaption></figcaption></figure>

* Web Console의 Stream List (메인 화면)에서 상세 보기할 <mark style="color:yellow;">\[Stream Box]</mark>를 클릭하십시오.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FLiMWbtOrkSciEm2fjk8O%2Fimage.png?alt=media&#x26;token=e8aeda2d-4c33-44cb-80b1-b898bc7e7282" alt=""><figcaption></figcaption></figure>

* 이후 OvenMediaEngine Enteprise가 제공하는 Player (OvenPlayer)에서 <mark style="color:yellow;">`Playlist`</mark>, <mark style="color:yellow;">`Protocol`</mark>, <mark style="color:yellow;">`TLS`</mark> 등을 선택하여 재생할 수 있습니다.

### 외부 Player로 재생

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FGklOa3UWSq9RCvyUzgBq%2Fimage.png?alt=media&#x26;token=b131fa63-bb6d-44d2-a3b3-d640a4e8029d" alt=""><figcaption></figcaption></figure>

* Stream 상세 보기 화면에서 <mark style="color:yellow;">\[URLs]</mark> 탭을 클릭하여 나타나는 리스트 중 <mark style="color:yellow;">\[Egress URL]</mark>을 사용하여 외부 Player에서 재생할 수 있습니다.
  * 또는 "[내부 Player로 재생하기](#player)"에서 설정한 Playlsit, Protocol, TLS 등에 따라 하단에 나타는 <mark style="color:yellow;">\[Playback URL]</mark>을 사용하여 외부 Player에서 재생할 수 있습니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FjHWa5u1T3RBjVxxpkWHi%2Fimage.png?alt=media&#x26;token=5fe715c8-9f1a-4e45-9322-2e24b573a0e4" alt=""><figcaption></figcaption></figure>

* 위 예제처럼 [http://demo.ovenplayer.com](http://demo.ovenplayer.com/) 등의 외부 Player를 통해 재생 테스트를 해보십시오.
  * LLHLS URL 형식: `http[s]://{Public IPv4 or Domain}:{Port}/{App name}/{Stream name}/{Playlist name}.m3u8`
  * HLS URL 형식: `http[s]://{Public IPv4 or Domain}:{Port}/{App name}/{Stream name}/ts:{Playlist name}.m3u8`
  * WebRTC URL 형식: `ws[s]://{Public IPv4 or Domain}:{Port}/{App name}/{Stream name}/{Playlist name}`
  * SRT URL 형식: `srt://{Public IPv4 or Domain}:{Port}?streamid={Host name}/{App name}{Stream name}/{Playlist name}`

{% hint style="success" %}
**Non-TLS** URL로 재생을 시도할 때는 [**http://**&#x64;emo.ovenplayer.com](http://demo.ovenplayer.com/)을 이용하시고, **TLS** URL로 재생을 시도할 때는 [**https://**&#x64;emo.ovenplayer.com](https://demo.ovenplayer.com/)을 이용하십시오.
{% endhint %}
