

# IVS 스트림 수집 \$1 실시간 스트리밍
<a name="rt-stream-ingest"></a>

IVS 브로드캐스트 SDK를 사용하는 대안으로 WHIP 또는 RTMP 소스의 IVS 스테이지에 비디오를 게시할 수 있습니다. 이 접근 방식에서는 SDK 사용이 불가능하거나 선호되지 않는 워크플로에 유연성을 제공합니다(예: OBS Studio 또는 하드웨어 인코더의 비디오를 게시하는 경우). 서드파티 솔루션과 IVS의 성능 또는 호환성을 보장할 수 없으므로 가능하면 IVS 브로드캐스트 SDK를 사용하는 것이 좋습니다.

이 다이어그램에서는 WHIP 및 RTMP를 사용하는 게시의 작동 방식을 보여줍니다.

![\[WHIP 및 RTMP를 사용하는 게시입니다.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/Stream_Ingest.png)


## 지원되는 프로토콜
<a name="supported-protocols"></a>

IVS 실시간 스트리밍에서는 여러 가지 수집 프로토콜을 지원합니다.
+ RTMP 및 RTMPS - RTMP(Real-Time Messaging Protocol)는 네트워크를 통한 비디오 전송의 업계 표준입니다. RTMPS는 TLS를 통해 작동하는 안전한 RTMP 버전입니다.

  IVS는 E-RTMP(향상된 RTMP)의 멀티트랙 비디오 기능을 지원합니다. IVS RTMP 게시 설명서의 [E-RTMP 멀티트랙 비디오](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-rtmp-publishing.html#rtmp-multitrack)를 참조하세요.
+ WHIP(WebRTC-HTTP Ingestion Protocol) - WebRTC 수집을 표준화하기 위해 개발된 IETF 초안입니다.

 이러한 프로토콜 사용에 대한 자세한 지침은 [RTMP](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-rtmp-publishing.html) 및 [WHIP](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/obs-whip-support.html) 설명서를 참조하세요.

## 지원되는 미디어 사양
<a name="supported-media-specifications"></a>
+ 오디오 입력 형식
  + 코덱: RTMP용 AAC-LC 및 WHIP용 Opus
  + 채널: 2(스테레오) 또는 1(모노)
  + 샘플 속도: 44.1kHz 또는 48kHz
  + 최대 비트레이트: 160Kbps
+ 비디오 입력 형식
  + 코덱: H.264
  + H.264 프로필: 기준
  + IDR 간격: 1초 또는 2초
  + 프레임 속도: 10\$160FPS
  + B-프레임: 0

    참고: IVS 브로드캐스트 SDK에는 기본적으로 B 프레임이 활성화되어 있지만 버전 1.25.0부터는 IVS 단계로 브로드캐스트할 때 B 프레임이 자동으로 비활성화됩니다. 다른 RTMP 인코더를 사용한 실시간 스트리밍의 경우 개발자는 B 프레임을 비활성화해야 합니다. *다른 RTMP 인코더를 이용하는 개발자가 B 프레임을 비활성화하지 않으면 스트림 연결이 해제됩니다*.
  + 해상도: 최대: 720p. 최소: 160p
  + 최대 비트레이트: 8.5Mbps

    참고: 단일 트랙 RTMP 스트림의 경우 이 제한은 해당 트랙에 적용됩니다. 향상된 RTMP를 사용하여 게시된 멀티트랙 비디오의 경우 제한은 모든 비디오 트랙의 결합된 비트레이트에 적용됩니다.
  + 인코더 구성: H.264 인코더에 `veryfast` 및 `zerolatency` 설정을 사용하는 것이 좋습니다. 또한 `sliced_threads` x264 옵션이 `zerolatency` 사전 설정에 포함되어 있으므로 비활성화하는 것이 좋습니다. 예를 들어, FFmpeg를 사용할 때 명령에 `-preset:v veryfast -tune zerolatency -x264-params sliced-threads=0`을 포함해야 합니다.

# 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)을 참조하세요.

# IVS WHIP 게시 \$1 실시간 스트리밍
<a name="obs-whip-support"></a>

이 문서에서는 OBS와 같은 WHIP 호환 인코더를 사용하여 IVS 실시간 스트리밍에 게시하는 방법을 설명합니다. [WHIP](https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html)(WebRTC-HTTP 수집 프로토콜)는 WebRTC 수집을 표준화하기 위해 개발된 IETF 초안입니다.

WHIP는 OBS와 같은 소프트웨어의 호환성을 지원하여 데스크톱 게시에 대한 (IVS Broadcast SDK의) 대안을 제공합니다. OBS에 익숙하며 더 섬세한 스트리머는 장면 전환, 오디오 믹싱, 오버레이 그래픽과 같은 고급 프로덕션 특성 때문에 OBS를 선호할 수도 있습니다. 개발자에게 용도가 다양한 옵션이 제공됩니다. 직접 브라우저 게시에 IVS 웹 브로드캐스트 SDK를 사용하거나, 스트리머가 데스크톱에서 OBS를 사용하여 더 강력한 도구를 사용할 수 있습니다.

WHIP는 IVS 브로드캐스트 SDK 사용이 불가능하거나 선호되지 않는 상황에서도 유용합니다. 예를 들어 하드웨어 인코더와 관련된 설정에서는 IVS Broadcast SDK가 적합하지 않을 수 있습니다. 하지만 인코더가 WHIP를 지원하는 경우에는 계속해서 인코더에서 IVS로 직접 게시할 수 있습니다.

**WHIP 요구 사항:**
+ 오디오만 게시하는 경우에도 SDP 제안에는 H.264 비디오 트랙이 포함되어야 합니다. 제안에 비디오 트랙이 포함되지 않은 경우 연결이 거부됩니다.
+ 글로벌 WHIP 엔드포인트(https://global.whip.live-video.net)에서는 307 임시 리디렉션을 반환합니다. WHIP 클라이언트에서는 WHIP 사양에 따라 요구되는 대로 307 리디렉션을 올바르게 처리하고 리디렉션된 요청에서 헤더를 지속시켜야 합니다.

## OBS 안내서
<a name="whip-support-obs-guide"></a>

OBS는 버전 30 현재 WHIP를 지원합니다. 시작하려면 OBS v30 이상을 다운로드하세요([https://obsproject.com/](https://obsproject.com/)).

WHIP를 통해 OBS를 사용하여 IVS 스테이지에 게시하려면 다음과 같은 단계를 따르세요.

1. 게시 기능으로 참가자 토큰을 [생성](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/getting-started-distribute-tokens.html)합니다. WHIP 용어 중 참가자 토큰은 보유자 토큰입니다. 기본적으로 참가자 토큰은 12시간 후에 만료되지만, 기간을 14일까지 연장할 수 있습니다.

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

1. **서버**에는 https://global.whip.live-video.net를 입력합니다.

1. **보유자 토큰**에는 1단계에서 생성한 참가자 토큰을 입력합니다.

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

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

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

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

1. **스트리밍 시작**을 누릅니다.

**참고**: OBS의 WHIP에서 발생할 수 있는 품질 문제(예: 간헐적인 비디오 머멈춤)를 알고 있습니다. 이러한 문제는 일반적으로 방송사의 네트워크가 불안정할 때 발생합니다. WHIP를 프로덕션 라이브 스트림에 사용하기 전에 OBS에서 테스트하는 것이 좋습니다. 브로드캐스트 비트레이트를 낮추는 것도 이러한 문제의 발생을 줄이는 데 도움이 될 수 있습니다.