

# IVS RTMP 게시 \$1 실시간 스트리밍
<a name="rt-rtmp-publishing"></a>

이 문서에서는 RTMP를 사용하여 IVS 스테이지에 게시하는 프로세스를 간략하게 설명합니다. 다양한 수집 옵션에 대한 자세한 내용은 [스트림 수집](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html) 설명서를 참조하세요.

## 사전 조건
<a name="rtmp-prerequisites"></a>

### 스테이지 생성
<a name="rtmp-create-stage"></a>

스테이지를 생성하려면 다음과 명령을 사용하세요.

`aws ivs-realtime create-stage --name "test-stage"`

응답을 포함한 자세한 내용은 [CreateStage](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateStage.html)를 참조하세요.

**중요:** 응답에서 RTMP 및 RTMPS 엔드포인트가 모두 나열되는 `endpoints` 필드에 주목하세요. RTMP 인코더 설정에 필요합니다.

### 수신 구성 생성
<a name="rtmp-create-an-ingest-configuration"></a>

RTMPS를 사용하여 스테이지에 게시하려면 먼저 수집 구성을 생성하여 스테이지와 연결해야 합니다. 스테이지에 게시하면(수집 구성의 스트림 키와 스테이지의 RTMP 엔드포인트 사용) 미디어가 참가자로 스테이지에 게시됩니다. 스테이지에 연결되는 [참가자](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_Participant.html)와 연결할 `userId` 및 사용자 지정 `attributes`를 지정하는 옵션이 있습니다.

```
aws ivs-realtime create-ingest-configuration \
  --name 'test' \
  --stage-arn arn:aws:ivs:us-east-1:123456789012:stage/8faHz1SQp0ik \
  --user-id '123' \
  --ingest-protocol 'RTMPS'
```

응답을 포함한 자세한 내용은 [CreateIngestConfiguration](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateIngestConfiguration.html)을 참조하세요.

수집 구성을 생성할 때 미리 특정 스테이지 ARN과 연결할 수 있습니다. 이 연결이 없으면 스트림 키를 사용할 수 없습니다. [UpdateIngestConfiguration](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_UpdateIngestConfiguration.html) 작업을 통해 수집 구성(`stageArn` 필드 포함)을 업데이트할 수 있으므로 여러 스테이지에 동일한 구성을 재사용할 수도 있습니다.

**참고:** 수집 구성 `insecureIngest` 필드의 기본값은 `false`이며, RTMPS를 사용해야 합니다. RTMP 연결이 거부됩니다. RTMP를 사용해야 한다면 `insecureIngest`를 `true`로 설정하세요. RTMP가 필요한 구체적이고 검증된 사용 사례가 없는 한 RTMPS를 사용하는 것이 좋습니다.

## RTMP 단일 트랙 비디오
<a name="rtmp-singletrack"></a>

다음에서는 OBS Studio를 사용하는 방법을 보여줍니다. 그러나 IVS [미디어 사양](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html#supported-media-specifications)을 충족하는 모든 RTMP 인코더를 사용할 수 있습니다.

### OBS 안내서
<a name="rtmp-singletrack-obs"></a>

1. 소프트웨어를 다운로드하여 설치합니다. [https://obsproject.com/download](https://obsproject.com/download).

1. **설정**을 클릭합니다. **설정** 패널의 **스트림** 섹션에서 **서비스** 드롭다운의 **사용자 지정**을 선택합니다.

1. **서버**에는 스테이지의 RTMP 또는 RTMPS 엔드포인트를 입력합니다.

1. **스트림 키**에는 수집 구성의 `streamKey`를 입력합니다.

1. 몇 가지 제한 사항을 제외하고 평소와 마찬가지로 비디오 설정을 구성합니다.

   1. IVS 실시간 스트리밍에서는 8.5Mbps에서 최대 720p 입력을 지원합니다. 이러한 제한 중 하나라도 초과하면 스트림 연결이 해제됩니다.

   1. **출력** 패널에서 **키프레임 간격**을 1초 또는 2초로 설정하는 것이 좋습니다. 키프레임 간격이 짧으면 시청자가 비디오 재생을 더 빠르게 시작할 수 있습니다. **CPU 사용량 사전 설정**을 **veryfast**으로 설정하고 **튜닝**을 **zerolatency**로 가장 짧은 지연 시간을 활성화하는 것도 좋습니다.

   1. OBS에서는 동시 방송을 지원하지 않으므로 비트레이트를 2.5Mbps 미만으로 유지하는 것이 좋습니다. 그러면 연결 대역폭이 더 낮은 시청자가 볼 수 있습니다.

   1. B-프레임이 있는 스트림은 자동으로 연결이 해제되므로 B-프레임을 비활성화합니다. 다음 중 하나를 수행하세요.
      + x264 옵션에 `bframes=0 sliced-threads=0`을 입력합니다.
      + B 프레임이 옵션이라면 0으로 설정합니다(예: NVENC의 경우).

   참고: RTMP 스트림에는 오디오 트랙과 비디오 트랙이 모두 포함되어야 합니다. 그렇지 않으면 연결이 해제됩니다.

1. **스트리밍 시작**을 선택합니다.

**중요:** 인코더의 최대 비트레이트가 8.5Mbps로 설정되면 게시자가 가끔 세션에서 사라집니다. 최대 비트레이트 설정이 목표일 뿐이며, 인코더에서 가끔 목표를 초과하기 때문입니다. 이를 방지하려면 인코더의 최대 비트레이트를 더 낮게 설정하세요(예: 6Mbps).

## E-RTMP 멀티트랙 비디오
<a name="rtmp-multitrack"></a>

IVS는 E-RTMP(Enhanced Real-Time Messaging Protocol)의 멀티트랙 비디오 기능을 지원하므로 단일 RTMP 스트림을 여러 비디오 품질로 IVS 스테이지에 게시할 수 있습니다. 이를 통해 적응형 비트레이트 스트리밍이 가능하므로 구독자는 자동으로 네트워크 연결에 가장 적합한 품질로 시청할 수 있습니다.

수집되면 다양한 비디오 품질이 구독자에게 동시 방송 계층으로 전달됩니다. 구독자가 수신하는 계층을 구성하려면 실시간 스트리밍 방송 SDK 가이드 [Android](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-android.html), [iOS](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-ios.html) 및 [Web](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-web.html)의 '동시 방송을 사용한 계층화된 인코딩' 섹션을 참조하세요.

샘플 코드는 GitHub의 [aws-samples/sample-amazon-ivs-multitrack-video](https://github.com/aws-samples/sample-amazon-ivs-multitrack-video)를 참조하세요.

다음 다이어그램은 멀티트랙 비디오로 게시하는 방법을 보여줍니다.

![\[스테이지에 멀티트랙 비디오 게시."\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/E-RTMP.png)


### OBS 안내서
<a name="rtmp-multitrack-obs"></a>

1. OBS Studio 다운로드 및 설치:

   1. Windows: OBS Studio 30.2부터 멀티트랙 비디오가 지원됩니다.

   1. macOS: OBS Studio 31.1 베타(Apple Silicon만 해당)부터 멀티트랙 비디오가 지원됩니다.

   1. 다운로드: [https://obsproject.com/download](https://obsproject.com/download) 

1. **설정**을 클릭합니다. **설정** 패널의 **스트림** 섹션에서, **서비스** 드롭다운의 **Amazon IVS**를 선택합니다.

1. **서버**의 경우 설정을 **자동** 그대로 둡니다.

1. **스트림 키**에는 수집 구성의 `streamKey`를 입력합니다.

1. **멀티트랙 비디오** 섹션에서 **멀티트랙 비디오 활성화**를 선택합니다.

1. **비디오** 패널에서 원하는 **기본(캔버스 해상도)** 및 **출력(조정) 해상도**를 설정합니다. IVS 실시간 스트리밍에서는 최대 720p 입력을 지원합니다. 이 제한을 초과하면 스트림 연결이 해제됩니다.

   멀티트랙 비디오가 활성화되면 비디오 트랙 수, 비트레이트, 키프레임 간격과 같은 설정이 디바이스의 기능에 따라 자동으로 구성됩니다.

1. **스트리밍 시작**을 선택합니다.

### FFmpeg를 사용하여 게시
<a name="rtmp-multitrack-ffmpeg"></a>

FFmpeg를 사용하여 RTMP를 통해 IVS 실시간 스트리밍으로 라이브 비디오와 오디오를 게시할 수 있습니다. FFmpeg는 비디오, 오디오 및 기타 멀티미디어 콘텐츠를 처리하기 위한 포괄적인 소프트웨어 라이브러리와 도구 모음으로 구성된 무료 오픈 소스 프로젝트입니다.

다음 예제 명령은 색상 패턴과 톤이 포함된 스트림을 게시합니다.

```
ffmpeg \
 -re \
 -f lavfi -i testsrc=d=300:s=1280x720:r=60,format=yuv420p \
 -f lavfi -i sine=f=440:b=4:d=300 \
 -c:v libx264 \
 -b:v 2500k \
 -g 60 -bf 0 \
 -profile:v baseline \
 -preset veryfast \
 -tune zerolatency \
 -x264opts sliced-threads=0 \
 -c:a aac \
 -ac 2 \
 -b:a 160k \
 -ar 48000 \
 -f flv \
 rtmps://$INGEST_ENDPOINT/app/$STREAM_KEY
```

이 예제에서는 `$INGEST_ENDPOINT` 및 `$STREAM_KEY`을(를) IVS 콘솔 또는 API의 고유한 값으로 바꿉니다.

이 구성은 IVS 실시간 스트리밍의 [지원 미디어 사양](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html#supported-media-specifications)을 충족하며, H.264 비디오(기준 프로필, B-프레임 없음, 슬라이스 스레드 없음)와 AAC 오디오를 포함합니다.

## 스테이지로의 프라이빗 수집
<a name="private-ingest-stages"></a>

인터페이스 VPC 엔드포인트를 사용하여 Amazon VPC 내의 리소스 또는 Direct Connect에서 RTMP(S) 및 E-RTMP(S) 스트림을 스테이지에 게시할 수 있습니다. 이렇게 하면 VPC와 IVS 간의 프라이빗 연결이 활성화되어 AWS 네트워크 내에서 트래픽을 수집할 수 있습니다. IVS용 인터페이스 VPC 엔드포인트를 설정 및 구성하려면 **IVS 저지연 스트리밍 사용 설명서의 [IVS 프라이빗 수집](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-ingest-ll.html)을 참조하세요.