

# IVS 서버 측 구성 \$1 실시간 스트리밍
<a name="server-side-composition"></a>

서버 측 구성은 IVS 서버를 사용하여 모든 스테이지 참가자의 오디오와 비디오를 믹싱한 다음 이 믹스된 비디오를 IVS 채널(예: 더 많은 시청자에게 도달하기 위해) 또는 S3 버킷으로 보냅니다. 서버 측 구성은 스테이지의 홈 리전에서 IVS 컨트롤 플레인 작업을 통해 간접적으로 호출됩니다.

서버 측 구성을 사용하여 스테이지를 브로드캐스팅하거나 레코딩하면 많은 이점이 있으므로 효율적이고 안정적인 클라우드 기반 비디오 워크플로를 찾는 사용자에게 매력적인 선택입니다.

**Topics**
+ [IVS 서버 측 구성 개요](ssc-overview.md)
+ [IVS 서버 측 구성 시작하기](ssc-getting-started.md)
+ [사용자 지정 참가자 순서 지정](ssc-getting-started-custom-participant-ordering.md)
+ [IVS 서버 측 구성에서 화면 공유 활성화](ssc-getting-started-screen-share.md)
+ [알려진 문제 및 해결 방법](ssc-known-issues.md)

# IVS 서버 측 구성 개요
<a name="ssc-overview"></a>

다음 다이어그램은 서버 측 구성의 작동 방식을 보여줍니다.

![\[서버 측 구성을 사용하여 스테이지를 브로드캐스팅합니다.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_Intro_Composite_Recording.png)


## 이점
<a name="ssc-benefits"></a>

클라이언트 측 구성과 비교할 때 서버 측 구성은 다음과 같은 이점이 있습니다.
+ **클라이언트 부하 감소** - 서버 측 구성을 사용하면 오디오 및 비디오 소스를 처리하고 결합하는 부담이 개별 클라이언트 디바이스에서 서버 자체로 이동합니다. 서버 측 구성을 사용하면 클라이언트 디바이스에서 보기를 합성하고 IVS로 전송하는 데 클라이언트 디바이스의 CPU와 네트워크 리소스를 사용할 필요가 없습니다. 즉, 시청자는 디바이스에서 리소스를 많이 사용하는 작업을 처리하지 않고도 브로드캐스트를 시청할 수 있으므로 배터리 수명이 향상되고 시청 환경이 개선됩니다.
+ **일관된 품질** - 서버 측 구성을 통해 최종 스트림의 품질, 해상도 및 비트레이트를 정밀하게 제어할 수 있습니다. 이를 통해 개별 디바이스의 성능과 상관없이 모든 시청자에게 일관된 시청 경험을 보장합니다.
+ **복원력** - 구성 프로세스를 서버에서 중앙 집중화함으로써 브로드캐스트가 더욱 강력해집니다. 게시자 디바이스에 기술적 제한 사항이나 변동이 있더라도 서버는 적응하여 모든 대상 멤버에게 더 원활한 스트림을 제공할 수 있습니다.
+ **대역폭 효율성** - 서버가 구성을 처리하므로 스테이지 게시자는 비디오를 IVS로 브로드캐스트하는 데 추가 대역폭을 소비하지 않아도 됩니다.

그 대신 IVS 채널로 스테이지를 브로드캐스트하려면 구성 클라이언트 측에서 할 수 있습니다. *IVS 저지연 스트리밍 사용 설명서*의 [IVS 스트림에서 다중 호스트 활성화](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/multiple-hosts.html)를 참조하세요.

## 구성 수명 주기
<a name="ssc-composition-endpoint"></a>

아래 다이어그램을 사용하여 구성의 상태 전환을 이해하세요.

![\[서버 측 구성 리소스의 수명 주기입니다.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_Composition_Lifecycle.png)


대략적으로 구성의 수명 주기는 대략 다음과 같습니다.

1. 구성 리소스는 사용자가 StartComposition 작업을 직접적으로 호출할 때 생성됩니다.

1. IVS가 구성을 성공적으로 시작하면 "IVS 구성 상태 변경(세션 시작)" EventBridge 이벤트가 전송됩니다. 이벤트에 대한 자세한 내용은 [IVS 실시간 스트리밍과 EventBridge 사용](eventbridge.md)을 참조하세요.

1. 구성이 활성 상태가 되면 다음과 같은 일이 발생할 수 있습니다.
   + 사용자가 구성 중지-StopComposition 작업이 직접적으로 호출되면 IVS는 구성의 정상 종료를 시작하여 "대상 종료" 이벤트와 "세션 종료" 이벤트를 차례로 전송합니다.
   + 구성이 자동 종료됩니다. - IVS 스테이지가 삭제되었거나 60초 동안 어떤 참가자도 IVS 스테이지에 적극적으로 게시하지 않으면, 구성이 자동으로 완료되고 EventBridge 이벤트가 전송됩니다.
   + 대상 오류 - 대상이 예기치 않게 실패하는 경우(예: IVS 채널 삭제) 대상이 해당 `RECONNECTING` 상태로 전환되고 “대상 재연결” 이벤트가 전송됩니다. 복구가 불가능한 경우 IVS는 대상을 해당 `FAILED` 상태로 전환하고 “대상 실패” 이벤트가 전송됩니다. IVS는 대상 중 하나 이상이 활성 상태인 경우 구성을 활성 상태로 유지합니다.

1. 구성이 `STOPPED` 또는 `FAILED` 상태가 되면 5분 후에 자동으로 정리됩니다. (그러면 ListCompositions이나 GetComposition으로 더 이상 검색되지 않습니다.)

## IVS API
<a name="ssc-api"></a>

서버 측 구성은 다음과 같은 주요 API 요소를 사용합니다.
+ **EncoderConfiguration 객체를 사용하면 생성할 비디오의 형식(높이, 너비, 비트레이트 및 기타 스트리밍 파라미터)을 사용자 지정할 수 있습니다. StartComposition 작업을 직접적으로 호출할 때마다 EncoderConfiguration을 재사용할 수 있습니다.
+ *구성* 작업은 비디오 구성을 추적하고 IVS 채널로 출력합니다.
+ **StorageConfiguration은 구성을 레코드하는 S3 버킷을 추적합니다.

서버 측 구성을 사용하려면 StartComposition 작업을 직접적으로 호출할 때 EncoderConfiguration을 생성하고 이를 연결해야 합니다. 이 예제에서는 SquareVideo EncoderConfiguration이 두 개의 구성에 사용됩니다.

![\[서버 측 구성은 두 가지 주요 API 요소를 사용합니다.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_IVS_API_Composite_Recording.png)


전체 내용은 [IVS 실시간 스트리밍 API 참조](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/Welcome.html)를 참조하세요.

## 레이아웃
<a name="ssc-api-layouts"></a>

StartComposition 작업에서는 그리드와 PIP(Picture in Picture)라는 두 가지 레이아웃 옵션을 제공합니다.

### 그리드 레이아웃
<a name="ssc-api-layouts-grid"></a>

그리드 레이아웃에서는 크기가 동일한 슬롯 그리드에 스테이지 참가자를 정렬합니다. 사용자 지정 가능한 다음과 같은 여러 가지 속성을 제공합니다.
+ `videoAspectRatio`에서는 비디오 타일의 종횡비를 제어하는 참가자 표시 모드를 설정합니다.
+ `videoFillMode`에서는 어떻게 하면 비디오 콘텐츠가 참가자 타일에 잘 어울리는지를 정의합니다.
+ `gridGap`에서는 참가자 타일 간 스페이스를 픽셀 단위로 지정합니다.
+ `omitStoppedVideo`에서는 구성에서 중지된 비디오 스트림 제외를 허용합니다.
+ `featuredParticipantAttribute`에서는 특성 슬롯을 식별합니다. 설정하면 주연 참가자가 기본 화면의 더 큰 슬롯에 표시되고 다른 참가자가 아래에 표시됩니다.
+ `participantOrderAttribute`는 참가자 토큰의 속성 값을 기반으로 사용자 지정 참가자 순서 지정을 활성화합니다. 지정된 경우 참가자는 속성 값의 숫자를 기준으로 정렬되고, 속성이 없는 참가자에게는 도착 시간 순서 지정이 적용됩니다. 이를 통해 결정론적 배치(선택 사항)가 가능하고 역할 기반 레이아웃을 사용할 수 있습니다.

그리드 레이아웃에 대한 자세한 내용(모든 필드의 유효한 값 및 기본값 포함)은 [GridConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_GridConfiguration.html) 데이터 유형을 참조하세요.

![\[서버 측 구성 그리드 레이아웃\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_Grid_Layout.png)


### PIP(Picture in Picture) 레이아웃
<a name="ssc-api-layouts-pip"></a>

PiP 레이아웃을 사용하면 크기, 위치 및 동작을 구성할 수 있는 오버레이 창에 참가자를 표시할 수 있습니다. 주요 속성은 다음과 같습니다.
+ `pipParticipantAttribute`에서는 PiP 창의 참가자를 지정합니다.
+ `pipPosition`에서는 PiP 창의 모서리 위치를 결정합니다.
+ `pipWidth` 및 `pipHeight`에서는 PiP 창의 너비와 높이를 구성합니다.
+ `pipOffset`에서는 PiP 창의 오프셋 위치를 가장 가까운 엣지의 픽셀 단위로 설정합니다.
+ `pipBehavior`에서는 다른 모든 참가자가 떠났을 때 PiP 동작을 정의합니다.

그리드 레이아웃과 마찬가지로 PiP 레이아웃에서는 `featuredParticipantAttribute`, `omitStoppedVideo`, `videoFillMode`, `gridGap`, `participantOrderAttribute`를 지원하여 추가적인 구성 사용자 지정이 가능합니다. `participantOrderAttribute`를 사용하면 PiP 창의 참가자 선택과 참가자 토큰의 속성 값을 기반으로 그리드 참가자 배치 모두에 대해 사용자 지정 참가자 순서 지정을 사용할 수 있습니다.

PiP 레이아웃에 대한 자세한 내용(모든 필드의 유효한 값 및 기본값 포함)은 [PipConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_PipConfiguration.html) 데이터 유형을 참조하세요.

![\[서버 측 구성 PiP(Picture-in-Picture) 레이아웃\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_PiP_Layout.png)


**참고**: 서버 측 구성에서 스테이지 게시자가 지원하는 최대 해상도는 1080p입니다. 게시자가 1080p 이상의 비디오를 전송하는 경우 게시자는 오디오 전용 참가자로 렌더링됩니다.

**중요**: 애플리케이션이 타일의 크기 및 위치와 같은 현재 레이아웃의 특정 특성에 종속되지 않는지 확인하세요. *레이아웃에 대한 시각적 개선 사항은 언제든지 도입할 수 있습니다*.

# IVS 서버 측 구성 시작하기
<a name="ssc-getting-started"></a>

이 문서에서는 IVS 서버 측 구성 시작과 관련된 단계를 안내합니다.

## 사전 조건
<a name="ssc-getting-started-prerequisites"></a>

서버 측 구성을 사용하려면 활성 게시자가 있는 스테이지가 있어야 하며 IVS 채널 및/또는 S3 버킷을 구성 대상으로 사용해야 합니다.

S3 버킷을 생성하려면 S3 설명서에서 [버킷 생성 방법](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)을 참조하세요. S3 버킷이 IVS 스테이지와 동일한 AWS 리전에 있어야 합니다.

**중요**: 기존 S3 버킷을 사용하는 경우:
+ **객체 소유권** 설정은 **버킷 소유자 적용** 또는 **버킷 소유자 기본 설정**이어야 합니다.
+ **기본 암호화** 설정은 **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**여야 합니다.

자세한 내용은 S3 설명서에서 [객체 소유권 제어](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) 및 [암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)를 참조하세요.

## API 지침
<a name="ssc-getting-started-api-instructions"></a>

아래에서는 참가자가 게시할 때 EventBridge 이벤트를 사용하여 IVS 채널에 스테이지를 브로드캐스트하는 구성을 시작하는 한 가지 가능한 워크플로를 설명합니다. 그 대신 자체 앱 로직에 따라 구성을 시작하고 중지할 수 있습니다. 서버 측 구성을 사용하여 스테이지를 S3 버킷에 직접 레코드하는 방법을 보여주는 또 다른 예제는 [복합 레코딩](rt-composite-recording.md)을 참조하세요.

1. IVS 채널을 생성하세요. [Amazon IVS Low-Latency Streaming 시작하기](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started.html)를 참조하세요.

1. 각 게시자를 위한 IVS 스테이지와 참가자 토큰을 생성하세요.

1. [EncoderConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_EncoderConfiguration.html)을 생성하세요.

1. 스테이지에 참여하고 스테이지에 게시하세요. (실시간 스트리밍 Broadcast SDK 가이드의 "게시 및 구독" 섹션: [웹](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html), [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html)를 참조하세요.)

1. 참가자가 게시한 EventBridge 이벤트를 받으면 원하는 레이아웃 구성으로 [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html)을 직접적으로 호출합니다.

1. 몇 초간 기다린 후 채널 재생에서 합성된 보기를 확인하세요.

![\[참가자가 게시할 때 EventBridge 이벤트를 사용하여 구성을 시작하는 서버 측 구성 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**참고:** 스테이지에 있는 게시자 참가자가 60초 동안 활동이 없으면 구성이 자동 종료됩니다. 이때 구성이 종료되고 `STOPPED` 상태로 전환합니다. `STOPPED` 상태로 몇 분 지나면 구성을 자동으로 삭제합니다.

## CLI 지침
<a name="ssc-getting-started-cli"></a>

AWS CLI를 사용하는 것은 고급 옵션이며, 먼저 시스템에 CLI를 다운로드하고 구성해야 합니다. 자세한 내용은 [AWS 명령줄 인터페이스 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)를 참조하세요.

이제 CLI를 사용하여 리소스를 생성하고 관리할 수 있습니다. 구성 작업은 `ivs-realtime` 네임스페이스 아래에 있습니다.

### EncoderConfiguration 리소스 생성
<a name="ssc-getting-started-cli-create-encoderconfiguration"></a>

EncoderConfiguration은 생성된 비디오의 형식(높이, 너비, 비트레이트 및 기타 스트리밍 파라미터)을 사용자 지정할 수 있는 객체입니다. 다음 단계에서 설명하는 대로 Composition 작업을 직접적으로 호출할 때마다 EncoderConfiguration을 재사용할 수 있습니다.

아래 명령은 비디오 비트레이트, 프레임 속도 및 해상도와 같은 서버 측 비디오 구성 파라미터를 구성하는 EncoderConfiguration 리소스를 생성합니다.

```
aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"
```

다음과 같이 응답합니다.

```
{
"encoderConfiguration": {
  "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4",
  "name": "MyEncoderConfig",
  "tags": {},
  "video": {
	 "bitrate": 2500000,
	 "framerate": 30,
	 "height": 720,
	 "width": 1280
    }
  }
}
```

### 구성 시작
<a name="ssc-getting-started-cli-start-mediapublish"></a>

위 응답에 제공된 EncoderConfiguration ARN을 사용하여 구성 리소스를 생성합니다.

**그리드 레이아웃 예제**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]' --layout '{"grid":{"participantOrderAttribute":"order","featuredParticipantAttribute":"isFeatured","videoFillMode":"COVER","gridGap":0}}'
```

**PiP 레이아웃 예제**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout '{"pip":{"participantOrderAttribute":"priority","pipParticipantAttribute":"isPip","pipOffset":10,"pipPosition":"TOP_RIGHT"}}'
```

**참고:** [이 도구](https://composition.ivsdemos.com/)를 사용하여 레이아웃 선택 항목에 따라 `--layout` 구성을 더 쉽게 생성할 수 있습니다.

응답은 구성이 `STARTING` 상태로 생성되었음을 보여줍니다. 구성이 구성을 게시하기 시작하면 상태가 `ACTIVE`로 전환됩니다. (ListCompositions 또는 GetComposition 작업을 직접적으로 호출하여 상태를 확인할 수 있습니다.)

구성이 `ACTIVE`가 되면 IVS 채널에서 ListCompositions를 사용하여 IVS 스테이지의 복합 보기를 볼 수 있습니다.

```
aws ivs-realtime list-compositions
```

다음과 같이 응답합니다.

```
{
"compositions": [
  {
	 "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP",
	 "destinations": [
		{
		   "id": "bD9rRoN91fHU",
		   "startTime": "2023-09-21T15:38:39+00:00",
		   "state": "ACTIVE"
		}
	 ],
	 "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik",
	 "startTime": "2023-09-21T15:38:37+00:00",
	 "state": "ACTIVE",
	 "tags": {}
    }
  ]
}
```

**참고**: 구성을 계속 유지하려면 게시자 참가자가 스테이지에 적극적으로 게시하도록 해야 합니다. 자세한 내용은 실시간 스트리밍 Broadcast SDK 가이드의 "게시 및 구독" 섹션([웹](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html), [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html))을 참조하세요. 각 참가자에 대해 별도의 스테이지 토큰을 생성해야 합니다.

# 사용자 지정 참가자 순서 지정
<a name="ssc-getting-started-custom-participant-ordering"></a>

사용자 지정 참가자 순서 지정을 사용하면 주요 참가자의 배치 및 PiP 창의 참가자 선택을 포함하여 참가자 토큰의 사용자 지정 속성 값을 기반으로 그리드 및 PiP 레이아웃 모두에서 참가자의 배치를 제어할 수 있습니다. 이를 통해 결정론적 참가자 배치가 가능하고 역할 기반 레이아웃을 활성화할 수 있습니다.

## 사용자 지정 순서 지동 작동 방식
<a name="ssc-getting-started-custom-participant-ordering-how-custom-ordering-works"></a>

`participantOrderAttribute`가 레이아웃 구성에 지정되면 참가자는 다음 규칙에 따라 순서가 지정됩니다.
+ 토큰에 순서 지정 속성이 지정된 참가자가 먼저 배치되고, 속성 값을 기준으로 숫자 순서로 정렬됩니다.
+ 순서 지정 속성이 없는 참가자는 도착 시간 순서 지정으로 돌아가서 순서가 지정된 참가자 뒤에 배치됩니다.
+ 여러 참가자의 순서 지정 값이 동일한 경우 스테이지에 도착한 시간을 기준으로 정렬됩니다.
+ 순서 지정은 (사전 순서가 아닌) 숫자 순서 정렬을 사용하므로 "10"은 ("1" 뒤가 아닌) "9" 뒤에 옵니다.
+ 음수 값이 지원됩니다. 음수 값은 양수 값 앞에 배치됩니다.
+ 숫자가 아닌 값(예: "abc", "1.5")은 유효하지 않은 것으로 취급되며, 이 값을 가진 참가자에게 도착 시간 순서 지정이 적용됩니다.

**중요:** 참가자 순서 지정(도착 시간 또는 사용자 지정 기준)은 구성이 시작된 후 적용됩니다. 구성이 시작되기 전에 스테이지에 참가하는 참가자에 대해서는 올바른 참가자 순서 지정이 보장되지 않습니다.

## 순서 지정 속성을 사용하여 토큰 생성
<a name="ssc-getting-started-custom-participant-ordering-creating-tokens-with-ordering-attributes"></a>

사용자 지정 참가자 순서 지정을 사용하려면 참가자 토큰을 생성할 때 참가자 토큰에 순서 지정 속성을 포함합니다.

```
aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=1

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=2

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=3
```

custom-participant-order 속성을 추천 슬롯 및 PiP 창의 참가자를 선택하는 속성과 결합할 수 있습니다.

```
aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=2,isFeatured=true

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=3,isFeatured=true

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=4,isPip=true
```

## 사용 사례 예시
<a name="ssc-getting-started-custom-participant-ordering-example-use-cases"></a>

사용 사례 예시:
+ 일관적인 배치 - 참가자가 동일한 토큰으로 다시 연결할 때 위치를 유지합니다.
+ 역할 기반 배치 - 예를 들어 교사에는 order=1, 학생에는 order=2를 지정할 수 있습니다.
+ 우선 순위 기반 레이아웃 - 순서 값이 낮은 VIP 참가자가 먼저 표시됩니다.
+ 동적 레이아웃 - 복잡한 시나리오에서 사용자 지정 순서 지정과 `featuredParticipantAttribute` 및 `pipParticipantAttribute`를 결합할 수 있습니다.
+ 스테이지 간 상호 작용 - 서로 다른 스테이지의 스트리머가 상호 작용하는 VS Mode 경쟁과 같은 시나리오에 참가자 복제를 사용하는 경우 순서 지정 속성을 재정의하여 대상 스테이지 구성에서의 배치를 제어할 수 있습니다.

**참고:** 참가자 복제 사용 사례의 경우 복제를 시작할 때 필요에 따라 참가자 속성(순서 속성 포함)을 재정의하여 대상 스테이지에서 원하는 레이아웃을 달성할 수 있습니다.

## 이전 버전과의 호환성
<a name="ssc-getting-started-custom-participant-ordering-backward-compatibility"></a>

사용자 지정 참가자 순서 지정은 선택적 기능이며 이전 버전과 완전히 호환됩니다. `participantOrderAttribute`가 없는 기존 구성은 도착 시간 순서 지정을 사용하여 변경 없이 계속 작동합니다. `participantOrderAttribute`가 빈 문자열로 설정된 경우 시스템은 사용자 지정 순서 지정을 완전히 무시하고 기본 동작이 적용됩니다.

# IVS 서버 측 구성에서 화면 공유 활성화
<a name="ssc-getting-started-screen-share"></a>

고정 화면 공유 레이아웃을 사용하려면 아래 단계를 따르세요.

## EncoderConfiguration 리소스 생성
<a name="ssc-getting-started-screen-share-create-encoderconfiguration"></a>

아래 명령은 서버 측 구성 파라미터(비디오 비트레이트, 프레임 속도 및 해상도)를 구성하는 EncoderConfiguration 리소스를 생성합니다.

```
aws ivs-realtime create-encoder-configuration --name "test-ssc-with-screen-share" --video={bitrate=2000000,framerate=30,height=720,width=1280}
```

`screen-share` 속성이 있는 스테이지 참가자 토큰을 생성합니다. `featured` 슬롯 이름으로 `screen-share`를 지정할 것이므로 `true` 속성이 `screen-share`로 설정된 스테이지 토큰을 생성해야 합니다.

```
aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes screen-share=true
```

다음과 같이 응답합니다.

```
{
   "participantToken": {
      "attributes": {
         "screen-share": "true"
      },
      "expirationTime": "2023-08-04T05:26:11+00:00",
      "participantId": "E813MFklPWLF",
      "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTExMjY3NzEsImlhdCI6MTY5MTA4MzU3MSwianRpIjoiRTgxM01Ga2xQV0xGIiwicmVzb3VyY2UiOiJhcm46YXdzOml2czp1cy1lYXN0LTE6OTI3ODEwOTY3Mjk5OnN0YWdlL3U5T2lFMjliVDdYcCIsInRvcGljIjoidTlPaUUyOWJUN1hwIiwiZXZlbnRzX3VybCI6IndzczovL3VzLWVhc3QtMS5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vYjJlYTVjMmZmMzU1Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiYXR0cmlidXRlcyI6eyJzY3JlZW4tc2hhcmUiOiJ0cnVlIn0sImNhcGFiaWxpdGllcyI6eyJhbGxvd19wdWJsaXNoIjp0cnVlLCJhbGxvd19zdWJzY3JpYmUiOnRydWV9LCJ2ZXJzaW9uIjoiMC4zIn0.MGUCMFvMzv35O4yVzM9tIWZl7n3mmFQhleqsRSBx_G2qT2YUDlWSNg6H1vL7sAWQMeydSAIxAIvdfqt3Fh1MLiyelc9NnTjI5hL3YPKqDX6J3NDH1fksh8_5y1jztoPDy4yVA5OmtA"
   }
}
```

## 구성 시작
<a name="ssc-getting-started-screen-share-start-mediapublish"></a>

화면 공유 기능을 사용하여 구성을 시작하려면 다음 명령을 사용합니다.

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations  '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout '{"grid":{"featuredParticipantAttribute":"screen-share"}}'
```

다음과 같이 응답합니다.

```
{
"composition" : {
"arn" : "arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz",
"destinations" : [ {
 "configuration" : {
	"channel" : {
	   "channelArn" : "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r",
	   "encoderConfigurationArn" : "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"
	},
	"name" : ""
 },
 "id" : "SGmgBXTULuXv",
 "state" : "STARTING"
} ],
"layout" : {
 "grid" : {
	"featuredParticipantAttribute" : "screen-share",
	"gridGap": 2,
	"omitStoppedVideo": false,
	"videoAspectRatio": "VIDEO"
 }
},
"stageArn" : "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik",
"startTime" : "2023-09-27T21:32:38Z",
"state" : "STARTING",
"tags" : { }
}
}
```

스테이지 `E813MFklPWLF` 참가자가 스테이지에 참여하면 해당 참가자의 비디오가 추천 슬롯에 표시되고 다른 모든 스테이지 게시자는 슬롯 아래에 렌더링됩니다.

![\[화면 공유 기능을 사용하여 구성 시작.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_StartComposition.png)


## 구성 중지
<a name="ssc-getting-started-screen-share-stop-mediapublish"></a>

언제든지 구성을 중지하려면 StopComposition 작업을 직접적으로 호출하세요.

```
aws ivs-realtime stop-composition --arn arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz
```

# 알려진 문제 및 해결 방법
<a name="ssc-known-issues"></a>

이 섹션에서는 IVS 서버 측 구성을 사용할 때 발생할 수 있는 알려진 문제를 나열하고 잠재적 해결 방법을 제안합니다.
+ 일부 구성은 무음 구간 이후에 짧은 오디오 끊김 현상이 나타날 수 있습니다.

  **해결 방법**: 없음