

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 클라이언트 측 광고 추적
<a name="ad-reporting-client-side"></a>

 AWS Elemental MediaTailor 클라이언트 측 추적 API를 사용하면 광고 시간 동안 플레이어 제어를 스트리밍 워크플로에 통합할 수 있습니다. 클라이언트 측 추적에서 플레이어 또는 클라이언트는 노출 및 사분위 광고 비컨과 같은 추적 이벤트를 광고 결정 서버(ADS) 및 기타 광고 확인 엔터티로 내보냅니다. 이러한 이벤트는 각 브레이크 내의 전체 광고 브레이크 상태와 개별 광고 시간을 모두 추적합니다. 노출 및 사분위수(ADS) 및 기타 광고 확인 엔터티에 대한 자세한 내용을 참조하세요. 노출 및 사분위 광고 비컨에 대한 자세한 내용은 섹션을 참조하세요[클라이언트 측 비컨](ad-reporting-client-side-beaconing.md). ADS 및 기타 광고 확인 엔터티에 대한 자세한 내용은 섹션을 참조하세요[클라이언트 측 광고 추적 통합](ad-reporting-client-side-ad-tracking-integrations.md).

클라이언트 측 추적을 위해 플레이어 파라미터 및 세션 데이터를 ADS에 전달하는 방법에 대한 자세한 내용은 [ADS 요청에 대한 MediaTailor 플레이어 변수](variables-player.md) 및 섹션을 참조하세요[ADS 요청에 대한 MediaTailor 세션 변수](variables-session.md).

클라이언트 측 추적을 사용하면 다음과 같은 기능을 사용할 수 있습니다.
+ 애드 브레이크 카운트다운 타이머 - 자세한 내용은 섹션을 참조하세요[광고 카운트다운 타이머](ad-reporting-client-side-ad-tracking-schema-player-controls.md#ad-reporting-client-side-ad-tracking-schema-player-controls-ad-countdown-timer).
+ 광고 클릭 - 자세한 내용은 섹션을 참조하세요[광고 클릭](ad-reporting-client-side-ad-tracking-schema-player-controls.md#ad-reporting-client-side-ad-tracking-schema-player-controls-ad-clickthrough).
+ 컴패니언 광고 표시 - 자세한 내용은 섹션을 참조하세요[컴패니언 광고](ad-reporting-client-side-ad-tracking-schema-player-controls.md#ad-reporting-client-side-ad-tracking-schema-player-controls-companion-ads).
+ 건너뛰기 가능한 광고 - 자세한 내용은 섹션을 참조하세요[건너뛰기 가능한 광고](ad-reporting-client-side-ad-tracking-schema-player-controls.md#ad-reporting-client-side-ad-tracking-schema-player-controls-skippable-ads).
+ 개인 정보 보호 규정 준수를 위한 VAST 아이콘 표시 - 자세한 내용은 섹션을 참조하세요[Google WTA(Why This Ad)용 아이콘](ad-reporting-client-side-ad-tracking-schema-player-controls.md#ad-reporting-client-side-ad-tracking-schema-player-controls-google-wta).
+ 광고 중 플레이어 스크러빙 제어 - 자세한 내용은 섹션을 참조하세요[스크러빙](ad-reporting-client-side-ad-tracking-schema-player-controls.md#ad-reporting-client-side-ad-tracking-schema-player-controls-scrubbing).

MediaTailor 클라이언트 측 추적 API를 사용하면 클라이언트 측 추적 외에도 기능을 활성화하는 메타데이터를 재생 디바이스로 전송할 수 있습니다.

## 클라이언트 측 보고 워크플로
<a name="ad-reporting-client-side-workflow"></a>

다음 다이어그램은 세션 초기화부터 광고 재생 및 비컨에 이르기까지 전체 클라이언트 측 보고 워크플로를 보여줍니다.

![\[세션 초기화부터 광고 재생 및 비컨에 이르기까지 전체 워크플로 동안 비디오 플레이어, MediaTailor, Ad Decision Server, 콘텐츠 오리진 및 광고 확인 서비스 간의 상호 작용을 보여주는 MediaTailor 클라이언트 측 보고 시퀀스 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/tracking_flow.png)


클라이언트 측 보고 워크플로에는 다음 단계가 포함됩니다.

1. **세션 초기화** - 비디오 플레이어는 `adsParams`, 오리진 토큰 및 세션 기능을 포함한 JSON 메타데이터를 사용하여 MediaTailor 세션 엔드포인트에 POST 요청을 보냅니다. MediaTailor는 세션에 `trackingUrl` 대해 `manifestUrl` 및 로 응답합니다.

1. **매니페스트 요청 및 광고 결정** - 플레이어가 MediaTailor에서 개인화된 매니페스트를 요청합니다. MediaTailor는 오리진에서 원본 콘텐츠 매니페스트를 요청하고, 플레이어 파라미터를 사용하여 광고 결정 서버(ADS)에 광고 요청을 하고, 광고 메타데이터가 포함된 VAST 응답을 수신하고, 광고 마커가 포함된 맞춤형 매니페스트를 플레이어에게 전달합니다.

1. **데이터 검색 추적** - 플레이어는 정기적으로 추적 URL을 폴링합니다(HLS의 대상 기간 또는 DASH의 최소 업데이트 기간과 일치). MediaTailor는 가용성, 광고, 추적 이벤트, 비컨 URLs 및 광고 확인 데이터가 포함된 JSON 추적 메타데이터를 반환합니다.

1. **광고 재생 및 비컨 **- 광고 시간 동안 플레이어는 추적 메타데이터를 구문 분석하고, 광고 렌더링이 시작될 때 노출 비컨을 실행하고, 적절한 시간에 사분위 비컨(시작, firstQuartile, 중간점, thirdQuartile, 완료)을 실행하고, 필요한 경우 광고 확인 JavaScript를 로드하고 실행하고, 가시성/검증 이벤트를 타사 확인 서비스에 전송합니다.

1. **연속 폴링** - 플레이어는 세션 전체에서 추적 URL을 계속 폴링하여 예정된 광고 시간 및 동적 콘텐츠에 대한 업데이트된 메타데이터를 수신합니다.

이 워크플로를 사용하면 개인 정보 보호 규정 준수를 위해 광고 카운트다운 타이머, 클릭 기능, 컴패니언 광고, 건너뛰기 가능한 광고, VAST 아이콘 표시와 같은 고급 기능을 사용할 수 있습니다.

**Topics**
+ [클라이언트 측 보고 워크플로](#ad-reporting-client-side-workflow)
+ [클라이언트 측 추적 활성화](#ad-reporting-client-side-enabling)
+ [광고 서버 파라미터](#ad-reporting-client-side-ad-server-parameters)
+ [오리진 상호 작용 쿼리 파라미터](#ad-reporting-client-side-origin-interaction-query-parameters)
+ [세션 구성 기능](#ad-reporting-client-side-session-configured-features)
+ [클라이언트 측 추적 모범 사례](#ad-reporting-client-side-best-practices)
+ [클라이언트 측 광고 추적 스키마 및 속성](ad-reporting-client-side-ad-tracking-schema.md)
+ [광고 추적 활동 타이밍](ad-reporting-client-side-ad-tracking-schema-activity-timing.md)
+ [클라이언트 측 광고 추적을 위한 플레이어 제어 및 기능](ad-reporting-client-side-ad-tracking-schema-player-controls.md)
+ [클라이언트 측 비컨](ad-reporting-client-side-beaconing.md)
+ [서버 측 광고 비컨이 있는 하이브리드 모드](ad-reporting-hybrid-mode.md)
+ [클라이언트 측 광고 추적 통합](ad-reporting-client-side-ad-tracking-integrations.md)
+ [GetTracking을 사용한 광고 비컨 페이징](#gettracking)

## 클라이언트 측 추적 활성화
<a name="ad-reporting-client-side-enabling"></a>

각 세션에 대해 클라이언트 측 추적을 활성화합니다. 플레이어는 MediaTailor 구성의 세션 초기화 접두사 엔드포인트`POST`에 HTTP를 생성합니다. 선택적으로 플레이어는 광고 호출, 매니페스트의 오리진 호출, 세션 수준에서 MediaTailor 기능 호출 또는 비활성화 시 MediaTailor가 사용할 추가 메타데이터를 전송할 수 있습니다.

다음 예제에서는 JSON 메타데이터의 구조를 보여줍니다.

```
{
  "adsParams": {                  # 'adsParams' is case sensitive
    "param1": "value1",           # key is not case sensitive
    "param2": "value2",           # Values can contain spaces. For example, 'value 2' is an allowed value. 
    },
  "origin_access_token":"abc123", # this is an example of a query parameter designated for the origin
  "overlayAvails":"on"            # 'overlayAvails' is case sensitive. This is an example of a feature that is enabled at the session level.
}
```

MediaTailor 콘솔 또는 API를 사용하여 이러한 파라미터를 참조하도록 ADS 요청 템플릿 URL을 구성합니다. 다음 예제에서 `player_params.param1`는의 플레이어 파라미터이고 `param1``player_params.param2`는의 플레이어 파라미터입니다`param2`.

```
https://my.ads.com/path?param1=[player_params.param1]&param2=[player_params.param2]
```

## 광고 서버 파라미터
<a name="ad-reporting-client-side-ad-server-parameters"></a>

JSON 구조의 최상위 수준은 `adsParams` JSON 객체입니다. 이 객체 내에는 MediaTailor가 모든 세션 요청에서 읽고 광고 서버로 전송할 수 있는 키/값 페어가 있습니다. MediaTailor는 다음 광고 서버를 지원합니다.
+ Google Ad Manager 
+ SpringServe 
+ FreeWheel 
+ 퍼블릭 

## 오리진 상호 작용 쿼리 파라미터
<a name="ad-reporting-client-side-origin-interaction-query-parameters"></a>

, `adsParams` `availSuppression`및와 같이 JSON 구조의 최상위 수준 내에 있는 예약 키/값 페어`overlayAvails`는 쿼리 파라미터 형태로 오리진 요청 URL에 추가되지 않습니다. MediaTailor가 오리진에 보내는 모든 세션 매니페스트 요청에는 이러한 쿼리 파라미터가 포함됩니다. 오리진은 불필요한 쿼리 파라미터를 무시합니다. 예를 들어 MediaTailor는 키/값 페어를 사용하여 오리진에 액세스 토큰을 보낼 수 있습니다.

## 세션 구성 기능
<a name="ad-reporting-client-side-session-configured-features"></a>

세션 초기화 JSON 구조를 사용하여 , 및 `overlayAvails``availSuppression`와 같은 MediaTailor 기능을 활성화, 비활성화 또는 재정의합니다`adSignaling`. 세션 초기화 중에 전달된 모든 기능 구성은 MediaTailor 구성 수준에서 설정을 재정의합니다.

**참고**  
세션 초기화 시 MediaTailor에 제출된 메타데이터는 변경할 수 없으며 세션 기간 동안 추가 메타데이터를 추가할 수 없습니다. SCTE-35 마커를 사용하여 세션 중에 변경되는 데이터를 전달합니다. 자세한 내용은 [ADS 요청에 대한 MediaTailor 세션 변수](variables-session.md) 단원을 참조하십시오.

**Example : HLS에 대한 클라이언트 측 광고 추적 수행**  

```
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.m3u8

        {
            "adsParams": {
               "deviceType": "ipad"   # This value does not change during the session.
               "uid": "abdgfdyei-2283004-ueu"                     
           }
        }
```

**Example : DASH에 대한 클라이언트 측 광고 추적 수행**  

```
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.mpd

        {
            "adsParams": {
               "deviceType": "androidmobile",
               "uid": "xjhhddli-9189901-uic" 
           }
        }
```

### 보고 모드 파라미터
<a name="session-initialization-reporting-mode"></a>

요청 본문에 `reportingMode` 파라미터를 포함하여 세션을 초기화할 때 보고 모드를 지정할 수 있습니다. 이 파라미터는 MediaTailor가 세션에 대한 클라이언트 측 또는 서버 측 광고 추적을 수행할지 여부를 제어합니다.
+ `client` - 플레이어가 광고 추적을 수행하고 비컨을 광고 서버로 보냅니다. 지정되지 않은 경우 기본 모드`reportingMode`입니다.
+ `server` - MediaTailor는 서버 측 광고 추적을 수행하고 비컨을 광고 서버로 직접 전송합니다.

**Example 서버 측 보고 모드를 사용한 세션 초기화**  

```
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.m3u8

        {
            "adsParams": {
               "deviceType": "ipad",
               "uid": "abdgfdyei-2283004-ueu"                     
           },
           "reportingMode": "server"
        }
```

**Example 클라이언트 측 보고 모드를 사용한 세션 초기화(명시적)**  

```
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.mpd

        {
            "adsParams": {
               "deviceType": "androidmobile",
               "uid": "xjhhddli-9189901-uic" 
           },
           "reportingMode": "client"
        }
```

**참고**  
`reportingMode` 파라미터는 세션 초기화 시 설정되며 세션 중에는 변경할 수 없습니다. 지정하지 않으면 MediaTailor`reportingMode`는 이전 버전과의 호환성을 유지하기 위해 기본적으로 클라이언트 측 보고를 사용합니다.

성공적인 응답은 응답 본문이 `200` 있는 HTTP입니다. 본문에는 `manifestUrl` 및 `trackingUrl` 키가 있는 JSON 객체가 포함되어 있습니다. 값은 플레이어가 재생 및 광고 이벤트 추적 모두에 사용할 수 있는 상대 URLs입니다.

```
{
  "manifestUrl": "/v1/dashmaster/hashed-account-id/origin-id/asset-id.m3u8?aws.sessionId=session-id",
  "trackingUrl": "/v1/tracking/hashed-account-id/origin-id/session-id"
}
```

클라이언트 측 추적 스키마에 대한 자세한 내용은 섹션을 참조하세요[클라이언트 측 광고 추적 스키마 및 속성](ad-reporting-client-side-ad-tracking-schema.md).

## 클라이언트 측 추적 모범 사례
<a name="ad-reporting-client-side-best-practices"></a>

이 섹션에서는 라이브 및 VOD 워크플로 모두에 대한 MediaTailor의 클라이언트 측 추적 모범 사례를 간략하게 설명합니다.

### 라이브 워크플로
<a name="ad-reporting-client-side-best-practices-live"></a>

항상 최신 광고 추적 메타데이터를 보유하기 위해 HLS의 모든 대상 기간 또는 DASH의 최소 업데이트 기간과 일치하는 간격으로 추적 엔드포인트를 폴링합니다. 이 간격을 일치시키는 것은 크리에이티브에 대화형 또는 오버레이 구성 요소가 있을 수 있는 워크플로에서 특히 중요합니다.

**참고**  
일부 플레이어는 폴링의 대안으로 사용할 수 있는 이벤트 리스너를 지원합니다. 예를 들어 각 세션에 대해 MediaTailor 광고 ID 장식 기능을 활성화해야 합니다. 자세한 내용은 [광고 ID 장식](ad-id-decoration.md) 단원을 참조하십시오. 이 기능을 사용하면 가용 구간의 각 광고 위에 날짜 범위(HLS) 또는 이벤트 요소(DASH) 식별자가 추가됩니다. 플레이어는 이러한 매니페스트 태그를 프롬프트로 사용하여 세션에 대한 MediaTailor 추적 엔드포인트를 호출할 수 있습니다.

### VOD 워크플로
<a name="ad-reporting-client-side-best-practices-vod"></a>

세션 초기화가 성공하고 MediaTailor가 미디어가 포함된 첫 번째 매니페스트를 수신한 후 추적 엔드포인트를 한 번만 호출하면 됩니다.

![\[VOD 워크플로에 대한 호출 흐름입니다. 세션이 초기화되고 MediaTailor가 미디어가 포함된 첫 번째 매니페스트를 수신한 후 클라이언트 측 추적 엔드포인트를 호출합니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/vod-workflow-best-practice.png)


### 서버 가이드 광고 삽입
<a name="ad-reporting-client-side-best-practices-sgai"></a>

서버 가이드 광고 삽입(SGAI) 세션은 `GetTracking` API를 사용하지 않습니다. 대신를 사용하면 `aws.reportingMode=CLIENT` MediaTailor는 플레이어가 광고 콘텐츠를 요청할 때 각 자산 목록 응답의 `TRACKING` 섹션에 추적 정보를 제공합니다. 세션 초기화 응답에는가 포함되지 않습니다`trackingUrl`.

클라이언트 측 추적 SGAI 세션에 대한 자산 목록 응답의 구조는 다음과 같습니다.

```
{
  "ASSETS": [
    { "DURATION": 20.0, "URI": "https://cdn.example.com/ad1/master.m3u8" },
    { "DURATION": 10.0, "URI": "https://cdn.example.com/ad2/master.m3u8" }
  ],
  "TRACKING": {
    ...VAST tracking events and beacon URLs for each ad...
  }
}
```

SGAI 메서드에 대한 클라이언트 측 추적을 구현하는 경우:
+ 를 호출하지 않고 자산 목록 응답에서 `TRACKING` 섹션 구문 분석 `GetTracking`
+ 광고 이벤트 보고를 위해 자산 목록에 제공된 추적 URLs 사용
+ 플레이어의 실제 광고 재생 이벤트를 기반으로 하는 발사 추적 비컨
+ 자산 목록을 가져올 때 각 광고 시간에 대한 추적을 독립적으로 처리

**중요**  
`TRACKING` 섹션은이 `aws.reportingMode=CLIENT` 설정된 경우에만 자산 목록에 포함됩니다. 서버 측 보고(SGAI의 기본값)를 사용하는 경우 MediaTailor는 `TRACKING` 섹션을 생략하고 대신 광고 URIs에 비컨 데이터를 포함합니다. 자세한 내용은 [서버 가이드 광고 삽입(SGAI)을 사용한 서버 측 추적](ad-reporting-server-side-sgai.md)을 참조하세요.

# 클라이언트 측 광고 추적 스키마 및 속성
<a name="ad-reporting-client-side-ad-tracking-schema"></a>

MediaTailor 클라이언트 측 광고 추적 기능을 사용하면 자세한 클라이언트 측 광고 추적 데이터를 플레이어 환경에 통합할 수 있습니다. 다음 섹션에서는 전체 광고 추적 스키마와 스키마를 구성하는 특정 속성 및 값을 다룹니다.

## 스키마
<a name="ad-reporting-client-side-ad-tracking-schema-table"></a>

다음 JSON 구조는 MediaTailor 클라이언트 측 광고 추적 스키마를 보여줍니다. 이 표현은 여러 부분 간의 관계를 이해하는 데 도움이 되는 스키마의 중첩 구조를 보여줍니다.

각 속성에 대한 자세한 내용은 섹션을 참조하세요[속성](#ad-reporting-client-side-ad-tracking-schema-properties).

```
{
  "avails": [
    {
      "ads": [
        {
          "adID": "string",
          "adParameters": "string",
          "adSystem": "string",
          "adTitle": "string",
          "adVerifications": [
            {
              "executableResource": [
                {
                  "apiFramework": "string",
                  "type": "string",
                  "uri": "string",
                  "language": "string"
                }
              ],
              "javaScriptResource": [
                {
                  "apiFramework": "string",
                  "browserOptional": "string",
                  "uri": "string"
                }
              ],
              "trackingEvents": [
                {
                  "event": "string",
                  "uri": "string"
                }
              ],
              "vendor": "string",
              "verificationParameters": "string"
            }
          ],
          "companionAds": [
            {
              "adParameters": "string",
              "altText": "string",
              "attributes": {
                "adSlotId": "string",
                "apiFramework": "string",
                "assetHeight": "string",
                "assetWidth": "string",
                "expandedHeight": "string",
                "expandedWidth": "string",
                "height": "string",
                "id": "string",
                "pxratio": "string",
                "renderingMode": "string",
                "width": "string"
              },
              "companionClickThrough": "string",
              "companionClickTracking": "string",
              "htmlResource": "string",
              "iFrameResource": "string",
              "sequence": "string",
              "staticResource": "string",
              "trackingEvents": [
                {
                  "event": "string",
                  "uri": "string"
                }
              ]
            }
          ],
          "creativeId": "string",
          "creativeSequence": "string",
          "duration": "string",
          "durationInSeconds": number,
          "extensions": [
            {
              "type": "string",
              "content": "string"
            }
          ],
          "icons": [
            {
              "attributes": {
                "apiFramework": "string",
                "duration": "string",
                "height": "string",
                "offset": "string",
                "program": "string",
                "pxratio": "string",
                "width": "string",
                "xPosition": "string",
                "yPosition": "string"
              },
              "htmlResource": "string",
              "iconClicks": {
                "iconClickThrough": "string",
                "iconClickTracking": {
                  "id": "string"
                },
                "iconClickFallbackImages": [
                  {
                    "altText": "string",
                    "height": "string",
                    "width": "string",
                    "staticResource": {
                      "creativeType": "string",
                      "uri": "string"
                    }
                  }
                ]
              },
              "iconViewTracking": "string",
              "iFrameResource": "string",
              "staticResource": {
                "creativeType": "string",
                "uri": "string"
              }
            }
          ],
          "mediaFiles": {
            "adParameters": "string",
            "duration": "string",
            "durationInSeconds": number,
            "mediaFilesList": [
              {
                "apiFramework": "string",
                "delivery": "string",
                "height": "string",
                "maintainAspectRatio": "string",
                "mediaFileUri": "string",
                "mediaType": "string",
                "scalable": "string",
                "width": "string",
                "bitrate": "string"
              }
            ],
            "mezzanine": "string",
            "startTime": "string",
            "startTimeInSeconds": number,
            "trackingEvents": [
              {
                "beaconUrls": ["string"],
                "duration": "string",
                "durationInSeconds": number,
                "dateTime": "string",
                "eventId": "string",
                "eventType": "string",
                "startTime": "string",
                "startTimeInSeconds": number
              }
            ]
          },
          "startTime": "string",
          "startTimeInSeconds": number,
          "dateTime": "string",
          "adBreakTrackingEvents": [...],
          "vastAdId": "string"
        }
      ],
      "adType": "string",
      "availID": "string",
      "duration": "string",
      "durationInSeconds": number,
      "startTime": "string",
      "startTimeInSeconds": number,
      "dateTime": "string",
      "adMarkerDuration": "string",
      "adProgramDateTime": "string",
      "dashAvailabilityStartTime": "string",
      "hlsAnchorMediaSequenceNumber": "string"
    }
  ],
  "nonLinearAvails": [
    {
      "nonLinearAds": [...],
      "nonLinearAdsList": [...]
    }
  ],
  "nextToken": "string",
  "meta": {}
}
```

## 속성
<a name="ad-reporting-client-side-ad-tracking-schema-properties"></a>

다음 표에는 클라이언트 측 추적 API의 속성, 정의, 값 유형 및 예제가 나와 있습니다.


****  

| 속성 | 정의 | 값 유형 | 예제 | 
| --- | --- | --- | --- | 
|   adID  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/ad-reporting-client-side-ad-tracking-schema.html) 경로: `/avails/ads/adId` VAST 매핑: 없음  | 문자열 | 10 | 
|   adBreakTrackingEvents  |  VAST 응답에서 VMAP 추적 이벤트를 전달하는 배열입니다. 자세한 내용은 [VMAP 1.0 사양의 섹션 2.3.](https://www.iab.com/guidelines/vmap/)3을 참조하세요. 경로: `/avails/ads/adBreakTrackingEvents`  | 배열 |  []  | 
|   adMarkerDuration  |  매니페스트의 광고 마커에서 관찰된 가용 기간입니다.  | 문자열 |  30  | 
|   adParameters  |  MediaTailor가 플레이어에게 전달하는 VAST VPAID의 광고 파라미터 문자열입니다. 경로: `/avails/ads/adParameters` VAST 매핑: `VAST/Ad/InLine/Creatives/Creative/Linear/AdParameters`  | 문자열 |  | 
|   adProgramDateTime  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/ad-reporting-client-side-ad-tracking-schema.html)  | 문자열 |  | 
|   ads  |  가능 구간을 구성하는 광고 객체가 포함된 배열입니다. 광고는 매니페스트에 나타나는 순서대로 나열됩니다. 경로: `/avails/ads`  | 배열 |  []  | 
|   adSystem  |  광고를 제공하는 시스템의 이름입니다.  값을 제공해야 합니다. 값을 제공하지 않으면 문제가 발생할 수 있습니다.   | 문자열 |  myADS  | 
|   adTitle  |  광고의 제목입니다.  | 문자열 |  ad1  | 
|   adVerifications  |  크리에이티브 재생을 확인하기 위해 타사 측정 코드를 실행하는 데 필요한 리소스와 메타데이터를 포함합니다. 이 속성에 대한 자세한 내용은 [VAST 4.2 사양의 섹션 3.](https://iabtechlab.com/standards/vast/)16을 참조하세요. MediaTailor는 VAST 3 확장 노드`adVerifications`로를 지원합니다. 경로: `/avails/ads/adVerifications` VAST 매핑: `VAST/Ad/InLine/AdVerifications`  | 배열 |  []  | 
|   altText  |  컴패니언 광고 이미지의 대체 텍스트입니다. 이 텍스트를 사용하면 시각 장애가 있는 플레이어가 이미지에 대한 설명을 다시 읽을 수 있습니다. 경로: `/avails/ads/companionAds/altText`  | 문자열 |  video sequence advertising sneakers  | 
|   apiFramework  |  이 광고가 VPAID 광고임을 플레이어에게 알리`VPAID`려면 로 설정합니다. 스키마의 여러 위치에 나타날 수 있습니다.  | 문자열 |  VPAID  | 
|   availID  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/ad-reporting-client-side-ad-tracking-schema.html) 경로: `/avails/availID`  | 문자열 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/ad-reporting-client-side-ad-tracking-schema.html)  | 
|   avails  |  활성 매니페스트 창에 표시되는 광고 발생 객체 또는 *가능 구간*을 포함하는 배열입니다. 가용 구간은 매니페스트에 나타나는 순서대로 나열됩니다. 경로: `/avails`  | 배열 |  []  | 
|   adType  |  광고의 유형입니다. 경로: `/avails/adType` 및 `/avails/ads/adType`  | 문자열 |  | 
|   dateTime  |  광고 가능성 또는 광고 시작을 위한 ISO 8601초 형식의 프로그램 날짜 시간입니다. 경로: `/avails/dateTime` 및 `/avails/ads/dateTime`  | 문자열 |  | 
|   duration  |  ISO 8601초 형식의 길이입니다. 비컨 지속 시간은 항상 0이지만 응답에는 전체 광고 시간 및 각 광고 및 비컨에 대한 지속 시간이 포함됩니다. 경로: `/avails/duration` 및 `/avails/ads/duration`  | 문자열 | 15.015 | 
|   durationInSeconds  |  초 형식의 길이입니다. 경로: `/avails/durationInSeconds` 및 `/avails/ads/durationInSeconds`  | 숫자 |  | 
|   extensions  |  광고 서버에서 사용하는 VAST의 사용자 지정 확장입니다. 확장에 대한 자세한 내용은 [VAST 4.2 사양의 섹션 3.](https://iabtechlab.com/standards/vast/)18을 참조하세요. 경로: `/avails/ads/extensions` VAST 매핑: `VAST/Ad/InLine/Extensions`  | 배열 | [] | 
|   icons  |  광고의 아이콘 요소입니다. 경로: `/avails/ads/icons` VAST 매핑: `VAST/Ad/InLine/Creatives/Creative/Linear/Icons`  | 배열 |  | 
|   mediaFiles  |  플레이어가 광고 시간에 필요한 비디오 및 기타 자산. 경로: `/avails/ads/mediaFiles`  | 객체 |  | 
|   nonLinearAvails  |  비선형 광고 가능 객체 배열입니다. 경로: `/nonLinearAvails`  | 배열 |  | 
|   executableResource  |  확인을 위한 실행 가능한 리소스입니다. 경로: `/avails/ads/adVerifications/executableResource` VAST 매핑: `VAST/Ad/InLine/AdVerifications/Verification/ExecutableResource`  | 배열 |  | 
|   javaScriptResource  |  확인을 위한 JavaScript 리소스입니다. 경로: `/avails/ads/adVerifications/javaScriptResource` VAST 매핑: `VAST/Ad/InLine/AdVerifications/Verification/JavaScriptResource`  | 배열 |  | 
|   trackingEvents  |  확인 또는 컴패니언 광고를 위한 이벤트 추적. 경로: `/avails/ads/adVerifications/trackingEvents` 또는 `/avails/ads/companionAds/trackingEvents`  | 배열 |  | 
|   vendor  |  확인 공급업체. 경로: `/avails/ads/adVerifications/vendor` VAST 매핑: `VAST/Ad/InLine/AdVerifications/Verification/@vendor`  | 문자열 |  | 
|   uri  |  실행 파일 자산, 비디오 자산 또는 추적 엔드포인트를 가리키는 URI입니다. 경로: 스키마의 다양한 위치 VAST 매핑: VAST의 다양한 CDATA 요소  | 문자열 | https://tracking.example.com/impression | 
|   verificationParameters  |  확인 파라미터입니다. 경로: `/avails/ads/adVerifications/verificationParameters` VAST 매핑: `VAST/Ad/InLine/AdVerifications/Verification/VerificationParameters`  | 문자열 |  | 
|   attributes  |  차원 및 렌더링 모드와 같은 컴패니언 광고 속성. 경로: `/avails/ads/companionAds/attributes`  | 객체 |  | 
|   companionClickThrough  |  최종 사용자가 컴패니언 광고를 클릭할 때 미디어 플레이어가 여는 광고자 페이지의 URL입니다. 경로: `/avails/ads/companionAds/companionClickThrough` VAST 매핑: `VAST/Ad/InLine/Creatives/Creative/CompanionAds/Companion/CompanionClickThrough`  | 문자열 | https://aws.amazon.com/ | 
|   companionClickTracking  |  `companionClickThrough` 속성의 추적 URL입니다. 경로: `/avails/ads/companionAds/companionClickTracking` VAST 매핑: `VAST/Ad/InLine/Creatives/Creative/CompanionAds/Companion/CompanionClickTracking`  | 문자열 | https://myads.com/beaconing/event=clicktracking | 
|   htmlResource  |  스트리밍 공급자의 HTML 페이지 내에 직접 삽입되는 CDATA 인코딩 HTML입니다. 경로: `/avails/ads/companionAds/htmlResource` VAST 매핑: `VAST/Ad/InLine/Creatives/Creative/CompanionAds/Companion/HTMLResource`  | 문자열 | <\$1[CDATA[<\$1doctype html><html><head><meta name=\$1"viewport\$1" content=\$1"width=1, initial-scale=1.0, minimum-scale=1.0,...]]> | 
|   iFrameResource  |  스트리밍 공급자가 iframe에 로드하는 HTML 리소스 파일의 URL입니다. 경로: `/avails/ads/companionAds/iFrameResource` VAST 매핑: `VAST/Ad/InLine/Creatives/Creative/CompanionAds/Companion/iFrameResource`  | 문자열 |  | 
|   sequence  |  VAST 응답에서 크리에이티브에 대해 지정된 시퀀스 값입니다. 경로: `/avails/ads/companionAds/sequence`  | 문자열 | 1 | 
|   startTime  |  ISO 8601초 형식의 시간 위치입니다. HLS의 경우 재생 세션의 시작을 기준으로 합니다. DASH의 경우 이는 매니페스트의 AST(가용성 시작 시간)를 기준으로 합니다. 응답에는 전체 광고 시간과 각 광고 및 비콘에 대한 시작 시간이 포함됩니다. 경로: `/avails/startTime` 및 `/avails/ads/startTime`  | 문자열 | PT18.581355S | 
|   startTimeInSeconds  |  초 형식의 시간 위치입니다. HLS의 경우 재생 세션의 시작을 기준으로 합니다. DASH의 경우 이는 매니페스트의 AST(가용성 시작 시간)를 기준으로 합니다. 응답에는 전체 광고 시간과 각 광고 및 비콘에 대한 시작 시간이 포함됩니다. 경로: `/avails/startTimeInSeconds` 및 `/avails/ads/startTimeInSeconds`  | 숫자 | 18.581 | 
|   eventId  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/ad-reporting-client-side-ad-tracking-schema.html)  | 문자열 |  | 
|   event  |  추적 이벤트의 이름입니다. 경로: `/avails/ads/adVerifications/trackingEvents/event` 또는 `/avails/ads/companionAds/trackingEvents/event`  | 문자열 | impression, start, firstQuartile, midpoint, thirdQuartile, complete | 
|   beaconUrls  |  MediaTailor가 광고 비컨을 전송하는 URL입니다. 경로: `/avails/ads/mediaFiles/trackingEvents/beaconUrls`  | 배열 |  | 
|   bitrate  |  비디오 자산의 비트레이트입니다. 이 속성은 일반적으로 실행 가능 자산에 포함되지 않습니다.  | 문자열 | 2048 | 
|   companionAds  |  각각 사용할 리소스 파일을 지정하는 하나 이상의 컴패니언 광고 콘텐츠 사양입니다. 컴패니언 광고는 광고 시간과 함께 제공되며 광고 주변의 프레임 또는 배너와 같은 콘텐츠를 제공하여 비디오 근처에 표시합니다. 경로: `/avails/ads/companionAds`  | 배열 | [] | 
|   creativeId  |  광고에 대한 `Creative` 태그의 `Id` 속성 값입니다.  | 문자열 | creative-1 | 
|   creativeSequence  |  VAST 응답의 `Ad@id` 값에 따라 광고가 재생되어야 하는 시퀀스입니다.  | 문자열 | 1 | 
|   dashAvailabilityStartTime  |  라이브/동적 DASH의 경우 오리진 매니페스트`MPD@availabilityStartTime`의 입니다.  | 문자열 | 2022-10-05T19:38:39.263Z | 
|   delivery  |  `progressive` 또는 `streaming` 프로토콜이 사용 중인지 여부를 나타냅니다.  | 문자열 | progressive | 
|   eventType  |  비컨의 유형입니다. 경로: `/avails/ads/mediaFiles/trackingEvents/eventType`  | 문자열 | impression | 
|   height  |  비디오 자산의 픽셀 단위 높이입니다.  | 문자열 | 360 | 
|   hlsAnchorMediaSequenceNumber  |  HLS 오리진 매니페스트에 표시되는 첫 번째/가장 오래된 미디어 시퀀스의 미디어 시퀀스 번호입니다.  | 문자열 | 77 | 
|   maintainAspectRatio  |  크기 조정 중에 비디오의 종횡비를 유지할지 여부를 나타냅니다.  | 부울 | true | 
|   mediaFilesList  |  플레이어가 광고 시간에 필요한 비디오 및 기타 자산을 지정합니다. 경로: `/avails/ads/mediaFiles/mediaFilesList`  | 배열 | [] | 
|   mediaFileUri  |  실행 파일 자산 또는 비디오 자산을 가리키는 URI입니다.  | 문자열 | https://myad.com/ad/ad134/vpaid.js | 
|   mediaType  |  크리에이티브 또는 컴패니언 자산의 MIME 유형입니다.  | 문자열 | video/mp4 | 
|   meta  |  광고에 대한 추가 메타데이터입니다.  | 객체 |  | 
|   mezzanine  |  VPAID 광고에 포함된 경우 지정된 메자닌 MP4 자산의 URL입니다. 경로: `/avails/ads/mediaFiles/mezzanine`  | 문자열 | https://gcdn.2mdn.net/videoplayback/id/itag/ck2/file/file.mp4 | 
|   nextToken  |  해당 값이 존재할 때 결과의 다음 페이지를 가리키는 토큰의 값입니다.  | 문자열 | UFQzOS44NzNTXzIwMjMtMDctMzFUMTY6NTA6MDYuMzUwNjI2ODQ1Wl8x | 
|   nonLinearAds  |  비디오 콘텐츠와 함께 표시되는 비선형 광고입니다.  | 배열 | [] | 
|   nonLinearAdsList  |  비선형 광고 목록입니다.  | 배열 | [] | 
|   scalable  |  비디오를 다른 차원으로 조정할지 여부를 나타냅니다.  | 부울 | true | 
|   skipOffset  |  플레이어가 사용자가 건너뛰기 제어를 사용할 수 있도록 하는 시기를 식별하는 시간 값입니다.  | 문자열 | 00:00:05 | 
|   staticResource  |  광고 구성 요소에 사용되는 정적 크리에이티브 파일의 URL입니다. 경로: `/avails/ads/companionAds/staticResource`  | 문자열 | https://very-interactive-ads.com/campaign1/file.json?c=1019113602 | 
|   vastAdId  |  `Ad` 태그의 `Id` 속성 값입니다.  | 문자열 | ad1 | 
|   width  |  비디오 자산의 픽셀 단위 너비입니다.  | 문자열 | 640 | 
|   xPosition  |  비디오 플레이어 내 아이콘의 가로 위치입니다. 특정 픽셀 값 또는 "왼쪽" 또는 "오른쪽"과 같은 위치일 수 있습니다. 경로: `/avails/ads/icons/attributes/xPosition`  | 문자열 | left 또는 10 | 
|   yPosition  |  비디오 플레이어 내 아이콘의 세로 위치입니다. 특정 픽셀 값 또는 "상단" 또는 "하단"과 같은 위치일 수 있습니다. 경로: `/avails/ads/icons/attributes/yPosition`  | 문자열 | top 또는 10 | 
|   iconClicks  |  아이콘에 대한 클릭 및 추적 정보가 포함되어 있습니다. 경로: `/avails/ads/icons/iconClicks`  | 객체 |  | 
|   iconClickThrough  |  최종 사용자가 아이콘을 클릭할 때 미디어 플레이어가 여는 광고자 페이지의 URL입니다. 경로: `/avails/ads/icons/iconClicks/iconClickThrough`  | 문자열 | https://advertiser.com/landing-page | 
|   iconClickTracking  |  `iconClickThrough` 속성의 추적 URL입니다. 경로: `/avails/ads/icons/iconClicks/iconClickTracking`  | 객체 |  | 
|   iconClickFallbackImages  |  아이콘을 표시할 수 없는 경우 표시할 폴백 이미지 배열입니다. 경로: `/avails/ads/icons/iconClicks/iconClickFallbackImages`  | 배열 |  | 
|   iconViewTracking  |  아이콘이 표시될 때 추적하기 위한 URL입니다. 경로: `/avails/ads/icons/iconViewTracking`  | 문자열 | https://tracking.example.com/icon-view | 
|   offset  |  광고 재생 중에 아이콘이 나타나는 시간의 시간 오프셋입니다. 경로: `/avails/ads/icons/attributes/offset`  | 문자열 | 00:00:05 | 
|   program  |  “AdChoices”와 같은 아이콘과 연결된 프로그램 또는 이니셔티브입니다. 경로: `/avails/ads/icons/attributes/program`  | 문자열 | AdChoices | 
|   pxratio  |  하이 DPI 디스플레이에 사용되는 아이콘 또는 컴패니언 광고의 픽셀 비율입니다. 경로: `/avails/ads/icons/attributes/pxratio` 또는 `/avails/ads/companionAds/attributes/pxratio`  | 문자열 | 1 또는 2 | 
|   type  |  리소스 또는 확장의 유형입니다. 경로: `/avails/ads/extensions/type` 또는 `/avails/ads/adVerifications/executableResource/type`  | 문자열 | text/javascript | 
|   content  |  확장의 콘텐츠입니다. 경로: `/avails/ads/extensions/content`  | 문자열 |  | 
|   language  |  실행 리소스의 프로그래밍 언어입니다. 경로: `/avails/ads/adVerifications/executableResource/language`  | 문자열 | javascript | 
|   browserOptional  |  JavaScript 리소스에 브라우저 지원이 필요한지 여부를 나타냅니다. 경로: `/avails/ads/adVerifications/javaScriptResource/browserOptional`  | 문자열 | true 또는 false | 
|   id  |  스키마의 다양한 요소에 대한 식별자입니다. 경로: `/avails/ads/companionAds/attributes/id` 또는 `/avails/ads/icons/iconClicks/iconClickTracking/id`  | 문자열 | companion-1 | 
|   assetHeight  |  컴패니언 광고 자산의 높이입니다. 경로: `/avails/ads/companionAds/attributes/assetHeight`  | 문자열 | 250 | 
|   assetWidth  |  컴패니언 광고 자산의 너비입니다. 경로: `/avails/ads/companionAds/attributes/assetWidth`  | 문자열 | 300 | 
|   expandedHeight  |  확장 시 컴패니언 광고의 높이입니다. 경로: `/avails/ads/companionAds/attributes/expandedHeight`  | 문자열 | 600 | 
|   expandedWidth  |  확장 시 컴패니언 광고의 너비입니다. 경로: `/avails/ads/companionAds/attributes/expandedWidth`  | 문자열 | 600 | 
|   renderingMode  |  컴패니언 광고의 렌더링 모드입니다. 경로: `/avails/ads/companionAds/attributes/renderingMode`  | 문자열 | default 또는 transparent | 
|   adSlotId  |  컴패니언 광고를 표시해야 하는 광고 슬롯의 ID입니다. 경로: `/avails/ads/companionAds/attributes/adSlotId`  | 문자열 | banner-1 | 
|   creativeType  |  크리에이티브 자산의 MIME 유형입니다. 경로: `/avails/ads/icons/staticResource/creativeType`  | 문자열 | image/png | 

# 광고 추적 활동 타이밍
<a name="ad-reporting-client-side-ad-tracking-schema-activity-timing"></a>

클라이언트 측 보고를 사용하면 플레이어가 정밀도 수준으로 추적 이벤트(비컨)를 내보내야 합니다. MediaTailor 클라이언트 측 추적 스키마를 사용하면 모든 가용 시간에 대해 광고, 컴패니언, 오버레이 및 추적 이벤트, 타이밍 및 기간 정보가 다양한 형식으로 표시되도록 할 수 있습니다.

플레이어에 대해 다음 MediaTailor 키/값 페어를 사용하여 이벤트 추적과 같은 광고 이벤트 활동을 재생 위치와 정확하게 조정합니다.
+ [startTime](ad-reporting-client-side-ad-tracking-schema.md#property-starttime) 
+  [startTimeInSeconds](ad-reporting-client-side-ad-tracking-schema.md#property-starttimeinseconds) 
+  [adProgramDateTime](ad-reporting-client-side-ad-tracking-schema.md#property-adprogramdatetime) 
+  [adID](ad-reporting-client-side-ad-tracking-schema.md#property-adid)/[eventId](ad-reporting-client-side-ad-tracking-schema.md#property-eventid) 

HLS와 DASH는 및 값을 `startTimeInSeconds` 다르게 구현`startTime`합니다.
+ HLS - `startTime` 값은 재생 세션의 시작을 기준으로 합니다. 재생 세션의 시작은 시간 0으로 정의됩니다. 광고의 `startTime`는 가용 구간까지 이어지는 모든 `EXT-INF` 세그먼트 기간의 누적 값의 합계입니다. 광고 또는 추적 이벤트가 속하는 세그먼트의 미디어 시퀀스 번호도 클라이언트 측 추적 응답의 `adId` 또는 `eventId`에 해당합니다.
+ DASH:
  + 라이브/동적 매니페스트 - `startTime` 값은 DASH 매니페스트`MPD@availabilityStartTime`의를 기준으로 합니다. `MPD@avaibilityStartTime`는 스트림을 사용하는 모든 MediaTailor 세션의 타이밍 앵커입니다.
  + VOD/정적 매니페스트 - `startTime` 값은 재생 세션의 시작을 기준으로 합니다. 재생 세션의 시작은 시간 0으로 정의됩니다. 가능 구간 내의 각 광고는 자체 `Period` 요소에 포함되어 있습니다. `Period` 요소에는 클라이언트 측 추적 페이로드의 값과 동일한 `startTime` 값이 있는 `@start` 속성이 있습니다. 는 클라이언트 측 추적 응답`eventId`의 `adId` 또는 `PeriodId` 에도 해당합니다.

**Example HLS:**  
다음 예제에서는 MediaTailor 세션이 시작되었으며 다음 매니페스트는 클라이언트에 제공된 첫 번째 매니페스트입니다.  

```
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:4603263
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:23.295678Z
#EXTINF:4.010667,
https://123.cloudfront.net/out/v1/index_1_34.ts
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:27.306345Z
#EXTINF:4.010667,
https://123.cloudfront.net/out/v1/index_1_35.ts
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:31.317012Z
#EXTINF:4.010667,
https://123.cloudfront.net/out/v1/index_1_36.ts
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:35.327679Z
#EXTINF:4.010667,
https://123.cloudfront.net/out/v1/index_1_37.ts
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:39.338346Z
#EXTINF:2.538667,
https://123.cloudfront.net/out/v1/index_1_38.ts
#EXT-X-DISCONTINUITY
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:41.453Z
#EXTINF:2.0,
https://123.cloudfront.net/tm/asset_1080_4_8_00001.ts
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:43.453Z
#EXTINF:2.0,
https://123.cloudfront.net/tm/asset_1080_4_8_00002.ts
#EXT-X-PROGRAM-DATE-TIME:2023-05-03T21:24:45.453Z
#EXTINF:2.0,
https://123.cloudfront.net/tm/asset_1080_4_8_00003.ts
```
클라이언트 측 추적 JSON 페이로드에는 다음 값이 적용됩니다.  
+  `startTime`: `"PT18.581355S"` 
+  `startTimeInSeconds`: `18.581` 
+  `availProgramDateTime`: `"2023-05-03T21:24:41.453Z"` 
+  `adId`: `4603269` 

**Example DASH:**  
다음 예제에서 MediaTailor 세션은 매니페스트에서 미드롤을 가져옵니다. 광고 기간인 두 번째 기간의 `@start` 속성 값에는 값과 관련된 `MPD@availabilityStartTime` 값이 있습니다. 이 값은 MediaTailor가 모든 세션에 대해 클라이언트 측 추적 응답 `startTime` 필드에 기록하는 값입니다.  

```
<?xml version="1.0" encoding="UTF-8"?>
<MPD availabilityStartTime="2022-10-05T19:38:39.263Z" minBufferTime="PT10S" minimumUpdatePeriod="PT2S" profiles="urn:mpeg:dash:profile:isoff-live:2011" publishTime="2023-05-03T22:06:48.411Z" suggestedPresentationDelay="PT10S" timeShiftBufferDepth="PT1M30S" type="dynamic" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:scte35="urn:scte:scte35:2013:xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd">
    <BaseURL>https://123.channel-assembly.mediatailor.us-west-2.amazonaws.com/v1/channel/my-channel/</BaseURL>
    <Location>https://123.cloudfront.net/v1/dash/94063eadf7d8c56e9e2edd84fdf897826a70d0df/MediaTailor-Live-HLS-DASH/channel/channel1/dash.mpd?aws.sessionId=794a15e0-2a7f-4941-a537-9d71627984e5</Location>
    <Period id="1683151479166_1" start="PT5042H25M59.903S" xmlns="urn:mpeg:dash:schema:mpd:2011">
        <BaseURL>https://123.cloudfront.net/out/v1/f1a946be8efa45b0931ea35c9055fb74/ddb73bf548a44551a0059c346226445a/eaa5485198bf497284559efb8172425e/</BaseURL>
        <AdaptationSet ...>
            ...
        </AdaptationSet>
    </Period>
    <Period id="1683151599194_1_1" start="PT5042H27M59.931S">
        <BaseURL>https://123.cloudfront.net/tm/94063eadf7d8c56e9e2edd84fdf897826a70d0df/fpc5omz5wzd2rdepgieibp23ybyqyrme/</BaseURL>
        <AdaptationSet ...>
            ...
        </AdaptationSet>
    </Period>
</MPD>
```
클라이언트 측 추적 JSON 페이로드에는 다음 값이 적용됩니다.  
+  `startTime`: `"PT5042H27M59.931S"` 
+  `startTimeInSeconds`: `18152879.931` 
+  `availProgramDateTime`: *null* 
+  `adId`: `1683151599194_1_1` 

# 클라이언트 측 광고 추적을 위한 플레이어 제어 및 기능
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls"></a>

MediaTailor 클라이언트 측 추적 메타데이터는 다양한 플레이어 제어 및 기능을 지원합니다. 다음 목록은 인기 있는 플레이어 컨트롤을 설명합니다.

**Topics**
+ [스크러빙](#ad-reporting-client-side-ad-tracking-schema-player-controls-scrubbing)
+ [광고 카운트다운 타이머](#ad-reporting-client-side-ad-tracking-schema-player-controls-ad-countdown-timer)
+ [건너뛰기 가능한 광고](#ad-reporting-client-side-ad-tracking-schema-player-controls-skippable-ads)
+ [광고 클릭](#ad-reporting-client-side-ad-tracking-schema-player-controls-ad-clickthrough)
+ [컴패니언 광고](#ad-reporting-client-side-ad-tracking-schema-player-controls-companion-ads)
+ [대화형 광고(SIMID)](#ad-reporting-client-side-ad-tracking-schema-player-controls-simid-ads)
+ [대화형 광고(VPAID)](#ad-reporting-client-side-ad-tracking-schema-player-controls-vpaid-ads)
+ [Google WTA(Why This Ad)용 아이콘](#ad-reporting-client-side-ad-tracking-schema-player-controls-google-wta)

## 스크러빙
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-scrubbing"></a>

재생 환경을 개선하기 위해 플레이어는 재생 타임라인에 광고 위치를 표시할 수 있습니다. MediaTailor는 클라이언트 측 추적 응답에서 이러한 광고 위치를 `startTimeInSeconds` 값의 형태로 사용할 수 있도록 합니다.

**참고**  
일부 스트리밍 공급자는 광고 위치를 지나는 스크러빙을 방지합니다.

![\[광고가 재생되는 비디오 타임라인의 MediaTailor 표시 위치를 보여주는 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/scrubbing.png)


다음 클라이언트 측 추적 페이로드 JSON 응답은 가용 배열의 루트 JSON 객체 내의 가용(아드 브레이크) 시작 시간을 보여줍니다. 플레이어는이 데이터를 사용하여 플레이어 타임라인의 광고 시간 위치를 28초로 표시합니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [...],
      "availId": "7",
      "availProgramDateTime": null,
      "duration": "PT30S",
      "durationInSeconds": 30,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT28S",
      "startTimeInSeconds": 28
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQxMk0zNC44NjhTXzIwMjMtMDctMjFUMjA6MjM6MDcuNzc1NzE2MzAyWl8x",
  "nonLinearAvails": []
}
```

## 광고 카운트다운 타이머
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-ad-countdown-timer"></a>

MediaTailor를 사용하면 광고 카운트다운 타이머를 사용하여 광고 시간을 보는 동안 시청자의 참여를 유지할 수 있습니다. 대상은 타이머를 사용하여 광고 시간이 종료되고 프로그램이 재개되는 시기를 이해할 수 있습니다.

![\[광고 카운트다운 타이머를 표시하는 MediaTailor를 보여주는 스크린샷으로, 프로그램이 재개될 때까지 남은 시간을 대상에게 알려줍니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/ad-countdown-timer.png)


광고 카운트다운 타이머에서 역할을 수행하는 클라이언트 측 추적 메타데이터의 요소는 `startTime`, `startTimeInSeconds`, 및 `duration`입니다`durationInSeconds`. 플레이어는이 메타데이터를 개별적으로 추적하는 세션의 경과 시간과 함께 사용하여 타이머를 표시할 시기와 카운트다운해야 하는 값을 결정합니다.

다음 클라이언트 측 추적 페이로드 JSON 응답은 광고 카운트다운 타이머를 표시하는 데 필요한 정보를 보여줍니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [...],
      "availId": "7",
      "availProgramDateTime": null,
      "duration": "PT30S",
      "durationInSeconds": 30,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT28S",
      "startTimeInSeconds": 28
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQxMk0zNC44NjhTXzIwMjMtMDctMjFUMjA6MjM6MDcuNzc1NzE2MzAyWl8x",
  "nonLinearAvails": []
}
```

세션의 경과 시간이 가능 구간의 시작 시간에 도달하면 플레이어는 가능 구간의 기간과 일치하는 값과 함께 카운트다운 타이머를 표시합니다. 경과 시간이 가용 시작 시간 이후 진행됨에 따라 countdown-timer 값이 감소합니다.

**Example 공식: HLS(라이브 및 VOD) 및 DASH(VOD)에 대한 카운트다운 타이머**  
+ `session_start_time` = 모든 `EXT-INF` 지속 시간 값의 합계 - 세 개의 최신 `EXT-INF` 미디어 시퀀스의 지속 시간 값
+ 타이머 값 = `duration` - (`session_elapsed_time` - `startTime`)

![\[HLS(라이브 및 VOD) 및 DASH(VOD) 매니페스트에 대한 광고 카운트다운 타이머의 계산을 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/ad-countdown-timer-hls-dash-vod.png)


**Example 공식: DASH의 카운트다운 타이머(실시간)**  
+ `session_start_time` = (최신 세그먼트의 `startTime` \$1 `duration`) / `timescale` - `MPD@suggestedPresentationDelay`
+ 타이머 값 = `duration` - (`session_elapsed_time` - `startTime`)

![\[라이브 DASH 매니페스트에 대한 세션의 시작 시간 및 가용 시작 시간을 기준으로 광고 카운트다운 타이머를 계산하는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/ad-countdown-timer-dash-live.png)


## 건너뛰기 가능한 광고
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-skippable-ads"></a>

*건너뛰기 가능 광고*는 최종 사용자가 일부 광고를 건너뛰어 프로그램 보기를 재개할 수 있는 광고 스팟입니다. VAST에서 `Linear@skipOffset` 속성은 건너뛰기 가능한 광고를 식별합니다.

다음 VAST 응답은 건너뛰기 가능한 광고를 사용하는 방법을 보여줍니다.

```
<?xml version="1.0" encoding="UTF-8"?>
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad>
    <InLine>
      ...
      <Creatives>
        <Creative id="1" sequence="1">
          <Linear skipoffset="00:00:05">
            <Duration>00:00:15</Duration>
            <MediaFiles>
              <MediaFile id="EMT" delivery="progressive" width="640" height="360" type="video/mp4" bitrate="143" scalable="true" maintainAspectRatio="true"><![CDATA[https://ads.com/file.mp4]]></MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
      ...
    </InLine>
  </Ad>
</VAST>
```

다음 클라이언트 측 추적 페이로드 JSON 응답은 `ads` 배열 내의 광고 메타데이터를 보여줍니다. 배열에는 MediaTailor가 VAST 응답에서 얻은 `skipOffset` 값이 포함됩니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "1",
          "adParameters": "",
          "adProgramDateTime": "2023-07-31T16:11:40.693Z",
          "adSystem": "2.0",
          "adTitle": "AD-skiing-15",
          "adVerifications": [],
          "companionAds": [...],
          "creativeId": "1",
          "creativeSequence": "1",
          "duration": "PT15.015S",
          "durationInSeconds": 15.015,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": "00:00:05",
          "startTime": "PT9.943S",
          "startTimeInSeconds": 9.943,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://adserverbeaconing.com/v1/impression"
              ],
              "duration": "PT15.015S",
              "durationInSeconds": 15.015,
              "eventId": "2697726",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT9.943S",
              "startTimeInSeconds": 9.943
            }
          ],
          "vastAdId": ""
        }
      ],
      "availId": "2697726",
      "availProgramDateTime": "2023-07-31T16:11:40.693Z",
      "duration": "PT15.015S",
      "durationInSeconds": 15.015,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT9.943S",
      "startTimeInSeconds": 9.943
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "",
  "nonLinearAvails": []
}
```

## 광고 클릭
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-ad-clickthrough"></a>

클릭 URIs 사용하면 광고주가 광고가 시청자의 주의를 끄는 데 얼마나 성공했는지 측정할 수 있습니다. 시청자가 진행 중인 광고의 활성 비디오 프레임을 클릭하면 웹 브라우저가 광고주의 홈 페이지 또는 캠페인 랜딩 페이지에 대한 URI를 엽니다. 플레이어 개발자는 클릭하여 자세히 알아볼 수 있는 메시지와 함께 광고 비디오에 버튼 또는 레이블을 오버레이하는 등의 클릭 동작을 결정합니다. 플레이어 개발자는 최종 사용자가 활성 비디오 프레임을 클릭한 후 광고의 비디오를 일시 중지하는 경우가 많습니다.

![\[비디오 플레이어의 광고 클릭 스크린샷. 최종 사용자는 비디오 프레임을 클릭합니다. 플레이어가 비디오를 일시 중지한 다음 웹 브라우저를 열어 최종 사용자를 광고자의 홈 페이지 또는 캠페인 랜딩 페이지로 안내합니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/ad-clickthrough.png)


MediaTailor는 VAST 응답에 반환된 모든 선형 비디오 클릭 이벤트 URLs을 구문 분석하고 사용할 수 있도록 할 수 있습니다. 다음 VAST 응답은 광고 클릭의 예를 보여줍니다.

```
<?xml version="1.0" encoding="UTF-8"?>
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad>
    <InLine>
      ...
      <Creatives>
        <Creative id="1" sequence="1">
          <Linear>
            <Duration>00:00:15</Duration>
            <MediaFiles>
              <MediaFile id="EMT" delivery="progressive" width="1280" height="720" type="video/mp4" bitrate="143" scalable="true" maintainAspectRatio="true"><![CDATA[https://ads.com/file.mp4]]></MediaFile>
            </MediaFiles>
            <VideoClicks>
              <ClickThrough id="EMT"><![CDATA[https://aws.amazon.com]]></ClickThrough>
              <ClickTracking id="EMT"><![CDATA[https://myads.com/beaconing/event=clicktracking]]></ClickTracking>
            </VideoClicks>
          </Linear>
        </Creative>
      </Creatives>
      ...
    </InLine>
  </Ad>
</VAST>
```

다음 클라이언트 측 추적 페이로드 JSON 응답은 MediaTailor가 `trackingEvents` 배열 내에서 클릭 및 클릭 추적 URLs을 표시하는 방법을 보여줍니다. `clickThrough` 이벤트 유형은 클릭-스루 광고를 나타내고 `clickTracking` 이벤트 유형은 클릭-추적 URL을 나타냅니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "1",
          "adParameters": "",
          "adProgramDateTime": "2023-07-31T16:53:40.577Z",
          "adSystem": "2.0",
          "adTitle": "1",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "00006",
          "creativeSequence": "1",
          "duration": "PT14.982S",
          "durationInSeconds": 14.982,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": null,
          "startTime": "PT39.339S",
          "startTimeInSeconds": 39.339,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://myads.com/beaconing/event=impression"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698188",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            },
            {
              "beaconUrls": [
                "https://aws.amazon.com"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698188",
              "eventProgramDateTime": null,
              "eventType": "clickThrough",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            },
            {
              "beaconUrls": [
                "https://myads.com/beaconing/event=clicktracking"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698795",
              "eventProgramDateTime": null,
              "eventType": "clickTracking",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            }
          ],
          "vastAdId": ""
        }
      ],
      "availId": "2698188",
      "availProgramDateTime": "2023-07-31T16:53:40.577Z",
      "duration": "PT14.982S",
      "durationInSeconds": 14.982,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT39.339S",
      "startTimeInSeconds": 39.339
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQzOS4zMzlTXzIwMjMtMDctMzFUMTY6NTQ6MDQuODA1Mzk2NTI5Wl8x",
  "nonLinearAvails": []
}
```

## 컴패니언 광고
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-companion-ads"></a>

*동반 광고*는 선형 크리에이티브와 함께 표시됩니다. 컴패니언 광고를 사용하면 제품, 로고 및 브랜드 정보를 표시하여 광고 스팟의 효과를 높일 수 있습니다. 디스플레이 광고에는 빠른 응답(QR) 코드와 클릭 가능한 영역이 있어 시청자의 참여를 촉진할 수 있습니다.

MediaTailor는 VAST 응답에서 컴패니언 광고를 지원합니다. 각각 `StaticResource`, `iFrameResource`및 `HTMLResource` 노드에서 메타데이터를 전달할 수 있습니다.

다음 VAST 응답은 선형 광고 및 컴패니언 광고의 위치와 형식의 예를 보여줍니다.

```
<?xml version="1.0" encoding="UTF-8"?>
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad>
    <InLine>
      ...
      <Creatives>
        <Creative id="1" sequence="1">
          <Linear>
            <Duration>00:00:10</Duration>
            <MediaFiles>
              <MediaFile id="EMT" delivery="progressive" width="640" height="360" type="video/mp4" bitrate="143" scalable="true" maintainAspectRatio="true"><![CDATA[https://ads.com/file.mp4]]></MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
        <Creative id="2" sequence="1">
          <CompanionAds>
            <Companion id="2" width="300" height="250">
              <StaticResource creativeType="image/png"><![CDATA[https://emt.com/companion/9973499273]]></StaticResource>
              <TrackingEvents>
                <Tracking event="creativeView"><![CDATA[https://beacon.com/1]]></Tracking>
              </TrackingEvents>
              <CompanionClickThrough><![CDATA[https://beacon.com/2]]></CompanionClickThrough>
            </Companion>
            <Companion id="3" width="728" height="90">
              <StaticResource creativeType="image/png"><![CDATA[https://emt.com/companion/1238901823]]></StaticResource>
              <TrackingEvents>
                <Tracking event="creativeView"><![CDATA[https://beacon.com/3]]></Tracking>
              </TrackingEvents>
              <CompanionClickThrough><![CDATA[https://beacon.com/4]]></CompanionClickThrough>
            </Companion>
          </CompanionAds>
        </Creative>
      </Creatives>
      ...
    </InLine>
  </Ad>
</VAST>
```

데이터는 `/avail/x/ads/y/companionAds` 목록의 클라이언트 측 추적 응답에 표시됩니다. 각 선형 크리에이티브에는 최대 6개의 컴패니언 광고가 포함될 수 있습니다. 아래 예제와 같이 컴패니언 광고가 목록에 표시됩니다.

**참고**  
애플리케이션 개발자는 크리에이티브가 끝날 때 컴패니언 광고를 명시적으로 제거하거나 언로드하는 로직을 구현하는 것이 가장 좋습니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "0",
          "adParameters": "",
          "adProgramDateTime": null,
          "adSystem": "EMT",
          "adTitle": "sample",
          "adVerifications": [],
          "companionAds": [
            {
              "adParameters": null,
              "altText": null,
              "attributes": {
                "adSlotId": null,
                "apiFramework": null,
                "assetHeight": null,
                "assetWidth": null,
                "expandedHeight": null,
                "expandedWidth": null,
                "height": "250",
                "id": "2",
                "pxratio": null,
                "renderingMode": null,
                "width": "300"
              },
              "companionClickThrough": "https://beacon.com/2",  
              "companionClickTracking": null,
              "htmlResource": null,
              "iFrameResource": null,
              "sequence": "1",
              "staticResource": "https://emt.com/companion/9973499273",
              "trackingEvents": [
                {
                  "beaconUrls": [
                    "https://beacon.com/1"
                  ],
                  "eventType": "creativeView"
                }
              ]
            },
            {
              "adParameters": null,
              "altText": null,
              "attributes": {
                "adSlotId": null,
                "apiFramework": null,
                "assetHeight": null,
                "assetWidth": null,
                "expandedHeight": null,
                "expandedWidth": null,
                "height": "90",
                "id": "3",
                "pxratio": null,
                "renderingMode": null,
                "width": "728"
              },
              "companionClickThrough": "https://beacon.com/4",
              "companionClickTracking": null,
              "htmlResource": null,
              "iFrameResource": null,
              "sequence": "1",
              "staticResource": "https://emt.com/companion/1238901823",
              "trackingEvents": [
                {
                  "beaconUrls": [
                    "https://beacon.com/3"
                  ],
                  "eventType": "creativeView"
                }
              ]
            }
          ],
          "creativeId": "1",
          "creativeSequence": "1",
          "duration": "PT10S",
          "durationInSeconds": 10,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": null,
          "startTime": "PT0S",
          "startTimeInSeconds": 0,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://beacon.com/impression/1"
              ],
              "duration": "PT10S",
              "durationInSeconds": 10,
              "eventId": "0",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT0S",
              "startTimeInSeconds": 0
            }
          ],
          "vastAdId": ""
        }
      ],
      "availId": "0",
      "availProgramDateTime": null,
      "duration": "PT10S",
      "durationInSeconds": 10,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT0S",
      "startTimeInSeconds": 0
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQxMFNfMjAyMy0wNy0wNlQyMToxMDowOC42NzQ4NDA1NjJaXzE%3D",
  "nonLinearAvails": []
}
```

## 대화형 광고(SIMID)
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-simid-ads"></a>

*SecureInteractive Media Interface Definition*(SIMID)은 대화형 광고국(IAB)의 VAST 4.x 표준에 도입된 대화형 광고의 표준입니다. SIMID는 플레이어의 기본 선형 크리에이티브에서 대화형 요소의 로드를 분리하여 VAST 응답의 두 가지를 모두 참조합니다. MediaTailor는 기본 크리에이티브에 연결하여 재생 환경을 유지하고 클라이언트 측 추적 응답에 대화형 구성 요소의 메타데이터를 배치합니다.

다음 예제 VAST 4 응답에서 SIMID 페이로드는 `InteractiveCreativeFile` 노드 내에 있습니다.

```
<?xml version="1.0"?>
<VAST xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad id="1234567">
    <InLine>
      <AdSystem>SampleAdSystem</AdSystem>
      <AdTitle>Linear SIMID Example</AdTitle>
      <Description>SIMID example</Description>
      <Error>https://www.beacons.com/error</Error>
      <Impression>https://www.beacons.com/impression</Impression>
      <Creatives>
        <Creative sequence="1">
          <Linear>
            <Duration>00:00:15</Duration>
            <TrackingEvents>
                ...
            </TrackingEvents>
            <VideoClicks>
              <ClickThrough id="123">https://aws.amazon.com</ClickThrough>
              <ClickTracking id="123">https://www.beacons.com/click</ClickTracking>
            </VideoClicks>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4">
                                https://interactive-ads.com/interactive-media-ad-sample/media/file.mp4
                            </MediaFile>
              <InteractiveCreativeFile type="text/html" apiFramework="SIMID" variableDuration="true">
                                https://interactive-ads.com/interactive-media-ad-sample/sample_simid.html
                            </InteractiveCreativeFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>
```

다음 VAST 3 응답에서 SIMID 페이로드는 `Extensions` 노드 내에 있습니다.

```
<?xml version="1.0"?>
<VAST xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad id="1234567">
    <InLine>
      <AdSystem>SampleAdSystem</AdSystem>
      <AdTitle>Linear SIMID Example</AdTitle>
      <Description>SIMID example</Description>
      <Impression>https://www.beacons.com/impression</Impression>
      <Creatives>
        <Creative id="1" sequence="1">
          <Linear>
            <Duration>00:00:15</Duration>
            <TrackingEvents>
                ...
            </TrackingEvents>
            <VideoClicks>
              <ClickThrough id="123">https://aws.amazon.com</ClickThrough>
              <ClickTracking id="123">https://myads.com/beaconing/event=clicktracking</ClickTracking>
            </VideoClicks>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4">
                                https://interactive-ads.com/interactive-media-ad-sample/media/file.mp4
                            </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
      <Extensions>
        <Extension type="InteractiveCreativeFile">
          <InteractiveCreativeFile type="text/html" apiFramework="SIMID" variableDuration="true">
            https://interactive-ads.com/interactive-media-ad-sample/sample_simid.html
          </InteractiveCreativeFile>
        </Extension>
      </Extensions>
    </InLine>
  </Ad>
</VAST>
```

다음 클라이언트 측 추적 응답에서 SIMID 데이터가 `/avails/x/ads/y/extensions` 목록에 나타납니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "1",
          "adParameters": "",
          "adProgramDateTime": "2023-07-31T16:53:40.577Z",
          "adSystem": "2.0",
          "adTitle": "Linear SIMID Example",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "1",
          "creativeSequence": "1",
          "duration": "PT14.982S",
          "durationInSeconds": 14.982,
          "extensions": [
            {
              "content": "<InteractiveCreativeFile type=\"text/html\" apiFramework=\"SIMID\" variableDuration=\"true\">\nhttps://interactive-ads.com/interactive-media-ad-sample/sample_simid.html</InteractiveCreativeFile>",
              "type": "InteractiveCreativeFile"
            }
          ],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": null,
          "startTime": "PT39.339S",
          "startTimeInSeconds": 39.339,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://myads.com/beaconing/event=impression"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698188",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            },
            {
              "beaconUrls": [
                "https://aws.amazon.com"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698188",
              "eventProgramDateTime": null,
              "eventType": "clickThrough",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            },
            {
              "beaconUrls": [
                "https://myads.com/beaconing/event=clicktracking"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698795",
              "eventProgramDateTime": null,
              "eventType": "clickTracking",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            }
          ],
          "vastAdId": ""
        }
      ],
      "availId": "2698188",
      "availProgramDateTime": "2023-07-31T16:53:40.577Z",
      "duration": "PT14.982S",
      "durationInSeconds": 14.982,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT39.339S",
      "startTimeInSeconds": 39.339
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQzOS4zMzlTXzIwMjMtMDctMzFUMTY6NTQ6MDQuODA1Mzk2NTI5Wl8x",
  "nonLinearAvails": []
}
```

## 대화형 광고(VPAID)
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-vpaid-ads"></a>

*비디오 플레이어 광고 인터페이스 정의*(VPAID)는 광고와 비디오 플레이어 간의 프로토콜을 지정하여 광고 상호 작용 및 기타 기능을 활성화합니다. 라이브 스트림의 경우 MediaTailor는 가용 시간 동안 슬레이트 세그먼트를에 스티칭하고 비디오 플레이어가 사용하는 클라이언트 측 추적 응답에 VPAID 크리에이티브에 대한 메타데이터를 배치하여 VPAID 형식을 지원합니다. 플레이어는 VPAID 파일을 다운로드하고 선형 크리에이티브를 재생하고 클라이언트의 스크립트를 실행합니다. 플레이어는 슬레이트 세그먼트를 재생*해서는 안* 됩니다.

**참고**  
VPAID는 VAST 4.1부터 더 이상 사용되지 않습니다.

![\[VPAID 광고 재생 다이어그램. MediaTailor는 콘텐츠 타임라인의 가용 기간 동안 슬레이트 세그먼트를 연결합니다. 플레이어는 가용 기간 동안 VPAID 자산으로 전환합니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/interactive-ads-vpaid.png)


다음 예제는 VAST 응답의 VPAID 콘텐츠를 보여줍니다.

```
<?xml version="1.0"?>
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad id="1234567">
    <InLine>
      <AdSystem>GDFP</AdSystem>
      <AdTitle>VPAID</AdTitle>
      <Description>Vpaid Linear Video Ad</Description>
      <Error>http://www.example.com/error</Error>
      <Impression>http://www.example.com/impression</Impression>
      <Creatives>
        <Creative sequence="1">
          <Linear>
            <Duration>00:00:00</Duration>
            <TrackingEvents>
              <Tracking event="start">http://www.example.com/start</Tracking>
              <Tracking event="firstQuartile">http://www.example.com/firstQuartile</Tracking>
              <Tracking event="midpoint">http://www.example.com/midpoint</Tracking>
              <Tracking event="thirdQuartile">http://www.example.com/thirdQuartile</Tracking>
              <Tracking event="complete">http://www.example.com/complete</Tracking>
              <Tracking event="mute">http://www.example.com/mute</Tracking>
              <Tracking event="unmute">http://www.example.com/unmute</Tracking>
              <Tracking event="rewind">http://www.example.com/rewind</Tracking>
              <Tracking event="pause">http://www.example.com/pause</Tracking>
              <Tracking event="resume">http://www.example.com/resume</Tracking>
              <Tracking event="fullscreen">http://www.example.com/fullscreen</Tracking>
              <Tracking event="creativeView">http://www.example.com/creativeView</Tracking>
              <Tracking event="acceptInvitation">http://www.example.com/acceptInvitation</Tracking>
            </TrackingEvents>
            <AdParameters><![CDATA[ {"videos":[ {"url":"https://my-ads.com/interactive-media-ads/media/media_linear_VPAID.mp4","mimetype":"video/mp4"}]} ]]></AdParameters>
            <VideoClicks>
              <ClickThrough id="123">http://google.com</ClickThrough>
              <ClickTracking id="123">http://www.example.com/click</ClickTracking>
            </VideoClicks>
            <MediaFiles>
              <MediaFile delivery="progressive" apiFramework="VPAID" type="application/javascript" width="640" height="480"> https://googleads.github.io/googleads-ima-html5/vpaid/linear/VpaidVideoAd.js </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>
```

다음 예제에서는 추적 정보를 보여줍니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "1",
          "adParameters": "",
          "adProgramDateTime": "2023-07-31T16:53:40.577Z",
          "adSystem": "2.0",
          "adTitle": "1",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "00006",
          "creativeSequence": "1",
          "duration": "PT14.982S",
          "durationInSeconds": 14.982,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": null,
          "startTime": "PT39.339S",
          "startTimeInSeconds": 39.339,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://myads.com/beaconing/event=impression"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698188",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            },
            {
              "beaconUrls": [
                "https://aws.amazon.com"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698188",
              "eventProgramDateTime": null,
              "eventType": "clickThrough",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            },
            {
              "beaconUrls": [
                "https://myads.com/beaconing/event=clicktracking"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "2698795",
              "eventProgramDateTime": null,
              "eventType": "clickTracking",
              "startTime": "PT39.339S",
              "startTimeInSeconds": 39.339
            }
          ],
          "vastAdId": ""
        }
      ],
      "availId": "2698188",
      "availProgramDateTime": "2023-07-31T16:53:40.577Z",
      "duration": "PT14.982S",
      "durationInSeconds": 14.982,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT39.339S",
      "startTimeInSeconds": 39.339
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQzOS4zMzlTXzIwMjMtMDctMzFUMTY6NTQ6MDQuODA1Mzk2NTI5Wl8x",
  "nonLinearAvails": []
}{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "2922274",
          "adParameters": "",
          "adProgramDateTime": "2023-08-14T19:49:53.998Z",
          "adSystem": "Innovid Ads",
          "adTitle": "VPAID",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "",
          "creativeSequence": "",
          "duration": "PT16.016S",
          "durationInSeconds": 16.016,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [
              {
                "apiFramework": "VPAID",
                "bitrate": 0,
                "codec": null,
                "delivery": "progressive",
                "height": 9,
                "id": "",
                "maintainAspectRatio": false,
                "maxBitrate": 0,
                "mediaFileUri": "http://my-ads.com/mobileapps/js/vpaid/1h41kg?cb=178344c0-8e67-281a-58ca-962e4987cd60&deviceid=&ivc=",
                "mediaType": "application/javascript",
                "minBitrate": 0,
                "scalable": false,
                "width": 16
              }
            ],
            "mezzanine": "http://my-ads.com/mobileapps/js/vpaid/1h41kg?cb=178344c0-8e67-281a-58ca-962e4987cd60&deviceid=&ivc="
          },
          "skipOffset": null,
          "startTime": "PT8M42.289S",
          "startTimeInSeconds": 522.289,
          "trackingEvents": [
            {
              "beaconUrls": [
                "about:blank"
              ],
              "duration": "PT16.016S",
              "durationInSeconds": 16.016,
              "eventId": "2922274",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT8M42.289S",
              "startTimeInSeconds": 522.289
            }
          ],
          "vastAdId": "1h41kg"
        }
      ],
      "availId": "2922274",
      "availProgramDateTime": "2023-08-14T19:49:53.998Z",
      "duration": "PT16.016S",
      "durationInSeconds": 16.016,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT8M42.289S",
      "startTimeInSeconds": 522.289
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQ4TTQyLjI4OVNfMjAyMy0wOC0xNFQxOTo1MDo0MS4zOTc5MjAzODVaXzE%3D",
  "nonLinearAvails": []
}
```

## Google WTA(Why This Ad)용 아이콘
<a name="ad-reporting-client-side-ad-tracking-schema-player-controls-google-wta"></a>

*AdChoices*는 시청자에게 광고의 대상 지정 방식을 포함하여 시청자가 보는 광고에 대한 정보를 제공하는 업계 표준입니다.

![\[Google Why This Ad(WTA) 로고. WTA는 시청자에게 해당 광고가 어떻게 타겟팅되었는지를 포함하여 시청자가 보는 광고에 대해 알립니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/google-wta.png)


MediaTailor 클라이언트 측 추적 API는 VAST 응답의 VAST 확장 노드에 전달되는 아이콘 메타데이터를 지원합니다. VAST 응답의 WTA에 대한 자세한 내용은 [이 샘플 VAST XML 응답을](https://storage.googleapis.com/interactive-media-ads/ad-tags/ima_wta_sample_vast_3.xml) 참조하세요.

**참고**  
MediaTailor는 현재 VAST 버전 3만 지원합니다.

```
<VAST>
    <Ad>  
    <InLine>  
       ...
      <Extensions>
        <Extension type="IconClickFallbackImages">
          <IconClickFallbackImages program="GoogleWhyThisAd">
            <IconClickFallbackImage width="400" height="150">
              <AltText>Alt icon fallback</AltText>
              <StaticResource creativeType="image/png"><![CDATA[https://storage.googleapis.com/interactive-media-ads/images/wta_dialog.png]]></StaticResource>
            </IconClickFallbackImage>
          </IconClickFallbackImages>
          <IconClickFallbackImages program="AdChoices">
            <IconClickFallbackImage width="400" height="150">
              <AltText>Alt icon fallback</AltText>
              <StaticResource creativeType="image/png"><![CDATA[https://storage.googleapis.com/interactive-media-ads/images/wta_dialog.png?size=1x]]></StaticResource>
            </IconClickFallbackImage>
            <IconClickFallbackImage width="800" height="300">
              <AltText>Alt icon fallback</AltText>
              <StaticResource creativeType="image/png"><![CDATA[https://storage.googleapis.com/interactive-media-ads/images/wta_dialog.png?size=2x]]></StaticResource>
            </IconClickFallbackImage>
          </IconClickFallbackImages>
        </Extension>
      </Extensions>
    </InLine>
  </Ad>
</VAST>
```

다음 예제는 `/avails/x/ads/y/extensions` 목록의 클라이언트 측 추적 응답을 보여줍니다.

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "0",
          "adParameters": "",
          "adProgramDateTime": null,
          "adSystem": "GDFP",
          "adTitle": "Google Why This Ad VAST 3 Sample",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "7891011",
          "creativeSequence": "1",
          "duration": "PT10S",
          "durationInSeconds": 10,
          "extensions": [
            {
              "content": "<IconClickFallbackImages program=\"GoogleWhyThisAd\">      
                          <IconClickFallbackImage height=\"150\" width=\"400\">      
                          <AltText>Alt icon fallback</AltText>      
                          <StaticResource creativeType=\"image/png\"><![CDATA[https://storage.googleapis.com/interactive-media-ads/images/wta_dialog.png]]>
                          </StaticResource>     
                          </IconClickFallbackImage>    
                          </IconClickFallbackImages>     
                          <IconClickFallbackImages program=\"AdChoices\">     
                          <IconClickFallbackImage height=\"150\" width=\"400\">     
                          <AltText>Alt icon fallback</AltText>       
                          <StaticResource creativeType=\"image/png\"><![CDATA[https://storage.googleapis.com/interactive-media-ads/images/wta_dialog.png?size=1x]]>
                          </StaticResource>      
                          </IconClickFallbackImage>      
                          <IconClickFallbackImage height=\"300\" width=\"800\">       
                          <AltText>Alt icon fallback</AltText>       
                          <StaticResource creativeType=\"image/png\"><![CDATA[https://storage.googleapis.com/interactive-media-ads/images/wta_dialog.png?size=2x]]>
                          </StaticResource>      
                          </IconClickFallbackImage>     
                          </IconClickFallbackImages>",
              "type": "IconClickFallbackImages"
            }
          ],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": "00:00:03",
          "startTime": "PT0S",
          "startTimeInSeconds": 0,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://example.com/view"
              ],
              "duration": "PT10S",
              "durationInSeconds": 10,
              "eventId": "0",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT0S",
              "startTimeInSeconds": 0
            }
          ],
          "vastAdId": "123456"
        }
      ],
      "availId": "0",
      "availProgramDateTime": null,
      "duration": "PT10S",
      "durationInSeconds": 10,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT0S",
      "startTimeInSeconds": 0
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQxMFNfMjAyMy0wNy0wNlQyMDo0MToxNy45NDE4MDM0NDhaXzE%3D",
  "nonLinearAvails": []
}
```

# 클라이언트 측 비컨
<a name="ad-reporting-client-side-beaconing"></a>

클라이언트 측 추적 `startTimeInSeconds` 요소를 사용하면 MediaTailor를 사용하여 비컨 타이밍을 지원할 수 있습니다.

다음 JSON 응답은 노출, 시작, 사분위수 및 완료와 같은 주요 비컨 유형을 보여줍니다.

**참고**  
대화형 광고국(IAB) 비디오 노출 측정 지침에는 노출 시 광고 콘텐츠가 클라이언트 측에 로드되고 최소한 플레이어에 렌더링되기 시작하는 시간이 필요하다고 명시되어 있습니다. 자세한 내용은 IAB 웹 사이트의 [Digital Video Ad Serving Template(VAST)](https://www.iab.com/guidelines/vast/)을 참조하세요.

```
{
  "avails": [
    {
      "ads": [
        {
          "adId": "8104385",
          "duration": "PT15.100000078S",
          "durationInSeconds": 15.1,
          "startTime": "PT17.817798612S",
          "startTimeInSeconds": 17.817,
          "trackingEvents": [
          {
              "beaconUrls": [
                "http://exampleadserver.com/tracking?event=impression"
              ],
              "duration": "PT15.100000078S",
              "durationInSeconds": 15.1,
              "eventId": "8104385",
              "eventType": "impression",
              "startTime": "PT17.817798612S",
              "startTimeInSeconds": 17.817
            },
            {
              "beaconUrls": [
                "http://exampleadserver.com/tracking?event=start"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0.0,
              "eventId": "8104385",
              "eventType": "start",
              "startTime": "PT17.817798612S",
              "startTimeInSeconds": 17.817
            },
            {
              "beaconUrls": [
                "http://exampleadserver.com/tracking?event=firstQuartile"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0.0,
              "eventId": "8104386",
              "eventType": "firstQuartile",
              "startTime": "PT21.592798631S",
              "startTimeInSeconds": 21.592
            },
             {
              "beaconUrls": [
                "http://exampleadserver.com/tracking?event=midpoint"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0.0,
              "eventId": "8104387",
              "eventType": "midpoint",
              "startTime": "PT25.367798651S",
              "startTimeInSeconds": 25.367
            },
            {
              "beaconUrls": [
                "http://exampleadserver.com/tracking?event=thirdQuartile"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0.0,
              "eventId": "8104388",
              "eventType": "thirdQuartile",
              "startTime": "PT29.14279867S",
              "startTimeInSeconds": 29.142
            },
            {
              "beaconUrls": [
                "http://exampleadserver.com/tracking?event=complete"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0.0,
              "eventId": "8104390",
              "eventType": "complete",
              "startTime": "PT32.91779869S",
              "startTimeInSeconds": 32.917
            }
          ]
        }
      ],
      "availId": "8104385",
      "duration": "PT15.100000078S",
      "durationInSeconds": 15.1,
      "startTime": "PT17.817798612S",
      "startTimeInSeconds": 17.817
    }
  ]
}
```

# 서버 측 광고 비컨이 있는 하이브리드 모드
<a name="ad-reporting-hybrid-mode"></a>

MediaTailor는 세션 추적을 위한 하이브리드 모드를 지원합니다. 이 모드에서 서비스는 재생 관련 광고 추적 이벤트를 내보내지만 세션에 대해 전체 클라이언트 측 추적 페이로드를 사용할 수 있도록 합니다.

재생 접두사를 사용하여 하이브리드 추적을 활성화하려면 플레이어에서 프로토콜에 따라 다음 형식 중 하나의 요청을 사용하여 새 MediaTailor 재생 세션을 초기화합니다.

**Example : HLS 형식**  

```
POST master.m3u8
    {
        "adsParams": {
           "deviceType": "ipad"
       },
       "reportingMode":"server"
    }
```

**Example : DASH 형식**  

```
POST manifest.mpd
    {
        "adsParams": {
           "deviceType": "ipad"
       },
       "reportingMode":"server"
    }
```

MediaTailor는 하이브리드 모드에서 다음 추적 이벤트를 유지합니다.
+ 노출
+ 시작
+ 첫 번째 사분위수
+ Midpoint
+ 3사분위수
+ 완료
+ `breakStart` (vmap)
+ `breakEnd` (vmap)

# 클라이언트 측 광고 추적 통합
<a name="ad-reporting-client-side-ad-tracking-integrations"></a>

이 섹션에서는 MediaTailor와 다양한 클라이언트 측 광고 추적 서버 간의 통합에 대해 설명합니다.

**Topics**
+ [Open 측정 SDK](#ad-reporting-client-side-ad-tracking-integrations-open-measurement-sdk)
+ [Datazoom 프리 플레이어 SDKs](#ad-reporting-client-side-ad-tracking-integrations-dz)
+ [Roku 광고 프레임워크(RAF)](#ad-reporting-client-side-ad-tracking-integrations-raf)
+ [TheoPlayer](#ad-reporting-client-side-ad-tracking-integrations-theoplayer)
+ [MediaTailor SDK](#ad-reporting-client-side-ad-tracking-integrations-mediatailor-sdk)

## Open 측정 SDK
<a name="ad-reporting-client-side-ad-tracking-integrations-open-measurement-sdk"></a>

Interactive Advertising Bureau(IAB) Open Measurement SDK(OM SDK)는 웹 비디오 및 네이티브 앱 환경에 제공되는 광고에 대한 타사 가시성 및 확인 측정을 용이하게 합니다.

이전 VAST 버전 3 문서의 경우 확장 유형이 인 확장 노드로 확인 코드를 로드해야 합니다`AdVerifications`. 확장 노드의 루트는 VAST 4.1 요소와 스키마가 동일한 `AdVerifications` 노드입니다.

OM SDK를 더 쉽게 채택할 수 있도록 MediaTailor는 Datazoom과 협력하여 개방형 측정을 위해 구성되고 확인된 무료 플레이어 SDKs를 제공합니다. 자세한 내용은 [Datazoom 프리 플레이어 SDKs](#ad-reporting-client-side-ad-tracking-integrations-dz) 단원을 참조하십시오.

**참고**  
MediaTailor는 현재 VAST 버전 3만 지원합니다.

**Example : 버전 4.1 이전 VAST 3의 확인 노드**  

```
...
<Extensions>
    <Extension type="AdVerifications">
        <AdVerifications>
            <Verification vendor="company.com-omid">
                <JavaScriptResource apiFramework="omid" browserOptional="true">
                    <![CDATA[https://verification.com/omid_verification.js]]>
                </JavaScriptResource>
                <TrackingEvents>
                    <Tracking event="verificationNotExecuted">
                        <![CDATA[https://verification.com/trackingurl]]>
                    </Tracking>
                </TrackingEvents>
                <VerificationParameters>
                    <![CDATA[verification params key/value pairs]]>
                </VerificationParameters>
            </Verification>
        </AdVerifications>
    </Extension>
</Extensions>
```

MediaTailor는 `<Extensions>` 노드에서 `AdVerifications` 데이터를 추출하여 클라이언트 측 추적 응답의 `adVerifications` 배열에 배치합니다.

**Example : 클라이언트 측 추적 응답의 adVerifications 배열**  

```
{
  "avails": [
    {
      "adBreakTrackingEvents": [],
      "adMarkerDuration": null,
      "ads": [
        {
          "adId": "3062770",
          "adParameters": "",
          "adProgramDateTime": "2023-08-23T16:25:40.914Z",
          "adSystem": "2.0",
          "adTitle": "AD-polarbear-15",
          "adVerifications": [
            {
              "executableResource": [],
              "javaScriptResource": [
                {
                  "apiFramework": "omid",
                  "browserOptional": "true",
                  "uri": "https://verification.com/omid_verification.js"
                }
              ],
              "trackingEvents": [
                {
                  "event": "verificationNotExecuted",
                  "uri": "https://verification.com/trackingurl"
                }
              ],
              "vendor": "company.com-omid",
              "verificationParameters": "verification params key value pairs"
            }
          ],
          "companionAds": [],
          "creativeId": "00006",
          "creativeSequence": "1",
          "duration": "PT14.982S",
          "durationInSeconds": 14.982,
          "extensions": [
            {
              "content": "<AdVerifications>\n\t\t\t\t\t\t<Verification vendor=\"company.com-omid\">\n\t\t\t\t\t\t\t<JavaScriptResource apiFramework=\"omid\" browserOptional=\"true\"><![CDATA[https://verification.com/omid_verification.js;]]></JavaScriptResource>\n\t\t\t\t\t\t\t<TrackingEvents>\n\t\t\t\t\t\t\t\t<Tracking event=\"verificationNotExecuted\"><![CDATA[;https://verification.com/trackingurl;]]></Tracking>\n\t\t\t\t\t\t\t</TrackingEvents>\n\t\t\t\t\t\t\t<VerificationParameters><![CDATA[verification params key/value pairs;]]></VerificationParameters>\n\t\t\t\t\t\t</Verification>\n\t\t\t\t\t</AdVerifications>",
              "type": "AdVerifications"
            }
          ],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "skipOffset": null,
          "startTime": "PT10.11S",
          "startTimeInSeconds": 10.11,
          "trackingEvents": [
            {
              "beaconUrls": [
                "https://n8ljfs0h09.execute-api.us-west-2.amazonaws.com/v1/impression"
              ],
              "duration": "PT14.982S",
              "durationInSeconds": 14.982,
              "eventId": "3062770",
              "eventProgramDateTime": null,
              "eventType": "impression",
              "startTime": "PT10.11S",
              "startTimeInSeconds": 10.11
            }
          ],
          "vastAdId": ""
        }
      ],
      "availId": "3062770",
      "availProgramDateTime": "2023-08-23T16:25:40.914Z",
      "duration": "PT14.982S",
      "durationInSeconds": 14.982,
      "meta": null,
      "nonLinearAdsList": [],
      "startTime": "PT10.11S",
      "startTimeInSeconds": 10.11
    }
  ],
  "dashAvailabilityStartTime": null,
  "hlsAnchorMediaSequenceNumber": null,
  "nextToken": "UFQxMC4xMVNfMjAyMy0wOC0yM1QxNjoyNjoyNC4yNDYxMDIxOTBaXzE%3D",
  "nonLinearAvails": []
}
```

**참고**  
IAB Tech Lab과 협력하여 애플리케이션이 규정 준수를 보장하기 위해 매년 인증을 받도록 합니다.

OM SDK에 대한 자세한 내용은 IAB Tech Lab 웹 사이트의 [Open Measurement SDK](https://iabtechlab.com/standards/open-measurement-sdk/)를 참조하세요.

## Datazoom 프리 플레이어 SDKs
<a name="ad-reporting-client-side-ad-tracking-integrations-dz"></a>

플레이어 SDKs를 더 쉽게 채택할 수 있도록 MediaTailor는 Datazoom과 협력하여 [Google Ad Manager와의 클라이언트 측 AWS Elemental MediaTailor 통합](gam-integration-pal.md) 및 IAB Tech 로 구성 및 테스트된 무료 플레이어 SDKs를 제공합니다[Open 측정 SDK](#ad-reporting-client-side-ad-tracking-integrations-open-measurement-sdk).

Datazoom 플레이어 SDK는 다음 기능을 지원합니다.
+ 라이브 및 VOD 재생 목록
+ DASH 및 HLS 사양
+ Bitmovin, exoplayer, Android 미디어 플레이어, Apple AVPlayer, Brightcove, Chromecast Receiver, Dash.js, hls.js, JWPlayer, Shaka player, THEO player, Video.js, Roku 등에 대한 플레이어 공급업체 지원
+ 선택한 디바이스에서 사용 가능한 경우 IAB Tech Lab Open Measurement 인증
+ 클릭스루 이벤트 처리
+ 광고 카운트다운 타이머, 광고 오버레이 및 비선형 이벤트, 광고 중단 시작, 광고 중단 종료와 같은 광고 이벤트 디스패처
+ 클라이언트 측 광고 비컨
+ Google Programmatic Access Library(PAL) SDK, 선택적 구성 설정

또한 Datazoom은 플레이어 SDKs 지원하는 유료 분석 및 원격 측정 서비스를 제공합니다. 고객은 Datazoom 관리 콘솔에서 플레이어 SDK 원격 측정을 옵트인하고 제어할 수 있습니다. Datazoom 플레이어 SDKs에 액세스하고 부가가치 원격 측정 및 분석 서비스에 대해 자세히 알아보려면 [Datazoom 사이트의](https://www.datazoom.io/partner-aws) 연락처 정보를 사용하세요.

## Roku 광고 프레임워크(RAF)
<a name="ad-reporting-client-side-ad-tracking-integrations-raf"></a>

Roku Ad Framework(RAF)는 Roku 플랫폼 전체에서 일관된 광고 환경을 유지합니다. 비디오 광고를 포함한 모든 채널은 RAF에 대한 Roku의 인증 요구 사항을 충족해야 합니다. 특히 앱은 항상 RAF를 통한 클라이언트 측 이벤트 실행을 사용해야 합니다. MediaTailor는 서버 측 광고 삽입(SSAI) 공급자로서 클라이언트 측 이벤트 실행을 지원합니다. RAFX SSAI 어댑터는 SSAI 매니페스트 서버 또는 스티처 및 RAF 모두에 인터페이스를 제공합니다. 이러한 인터페이스에는 다음이 포함됩니다.
+ `masterURL` 응답을 구문 분석하고 `playURL`, `AdURL`및 광고 메타데이터를 추출합니다.
+ MediaTailor SSAI 광고 메타데이터를 RAF 사용 가능 광고 메타데이터로 변환하고 재생을 위해 RAF를 구성합니다.
+ 스트림 이벤트 및 시간 지정된 메타데이터 관찰.
+ 스트림 이벤트, 광고 메타데이터 및 발사 이벤트 픽셀을 정시에 일치시킵니다.
+ MediaTailor SSAI 매니페스트 서버에서 요구하는 `AdURL`대로를 핑/폴링한 다음 RAF를 구문 분석하고 재구성합니다.

RAF용 SSAI 어댑터에 대한 자세한 내용은 [Roku 웹 사이트의 Roku 어댑터를 사용하여 서버 측 광고 삽입 구현을 참조하세요](https://developer.roku.com/docs/developer-program/advertising/ssai-adapters.md).

## TheoPlayer
<a name="ad-reporting-client-side-ad-tracking-integrations-theoplayer"></a>

MediaTailor와의 TheoPlayer 통합은 다음을 수행합니다.
+ VOD 및 라이브 워크플로 모두에 대해 HLS 및 DASH에 대한 MediaTailor 클라이언트 측 이벤트 추적을 지원하는 기능을 제공합니다.
+ 선형 광고에 대해서만 추적 비컨 전송을 지원합니다.
+ 광고 중에 탐색을 비활성화합니다. 그러나 사용자가 광고 시간을 지나려고 할 때 광고를 재생하기 위한 로직은 없습니다.

TheoPlayer의 SSAI에 대한 자세한 내용과 MediaTailor용 웹, Android, iOS 및 tvOS SDKs를 검토하려면 TheoPlayer 웹 사이트의 [MediaTailor](https://docs.theoplayer.com/how-to-guides/01-ads/12-mediatailor.md)를 참조하세요.

## MediaTailor SDK
<a name="ad-reporting-client-side-ad-tracking-integrations-mediatailor-sdk"></a>

AWS Elemental은 JavaScript 기반 소프트웨어 개발 키트(SDK)를 유지 관리합니다. AWS Elemental은 묵시적 보증 없이 SDK를 있는 그대로 제공합니다. SDK를 참조 데모로 사용하여 MediaTailor를 사용하여에 대한 온보딩을 간소화합니다. SDK는 MediaTailor 클라이언트 측 추적 API와 상호 작용하는 방법을 보여줍니다. SDK는 HTML5-based 플레이어에 대한 클라이언트 측 광고 추적 및 보고를 구현합니다. SDK는 MediaTailor 클라이언트 측 보고 세션을 초기화한 다음 광고 추적 정보를 주기적으로 요청합니다. 재생 중에 SDK는 새 광고 이벤트가 감지되면 광고 추적 이벤트를 내보냅니다.

MediaTailor SDK는 다음 기능을 지원합니다.
+ 라이브 및 VOD 재생 목록
+ DASH 및 HLS 사양
+ 클릭스루 이벤트 처리
+ Ad-event 디스패처
+ 사용자 지정 이벤트 후크
+ 클라이언트 측 광고 비컨. 광고 비컨 전송에 대한 자세한 내용은 섹션을 참조하세요[클라이언트 측 비컨](ad-reporting-client-side-beaconing.md).

**참고**  
MediaTailor용 JavaScript SDK 샘플을 받으려면 AWS 지원 티켓을 제출하세요. 패키지 및 해당 파일에 대한 다운로드 링크를 받게 됩니다.

## GetTracking을 사용한 광고 비컨 페이징
<a name="gettracking"></a>

`GetTracking` 엔드포인트를 사용하여 플레이어에게 반환되는 광고 수를 좁힙니다. 예를 들어 매니페스트 기간이 넓으면 많은 시간 동안 반환된 광고 비컨 수가 플레이어 성능에 영향을 미칠 수 있습니다.

`GetTracking`는 반환된 비컨 목록을 페이징하여 반환된 비컨 수를 좁히는 데 사용할 수 있는 `NextToken` 값을 반환합니다. `NextToken` 값을 순환하여 광고 비컨 `StartTimeInSeconds` 필드의 원하는 값을 찾을 수 있습니다.
+ 에 대한 첫 번째 호출에서 각의 `NextToken` 및 값을 포함하여 매니페스트 창에 속할 수 있는 `GetTracking`모든 광고가 반환됩니다.
+ `GetTracking` 요청에가 포함되지 *않은* 경우 매니페스트 창의 `NextToken`모든 광고가 반환됩니다.
+ `GetTracking` 요청에가 포함되어 `NextToken` 있지만 반환할 새 비컨이 없는 경우 MediaTailor는 원래 요청에서 전송`NextToken`한 값과 동일한 값을 반환합니다.
+ 광고에 해당하는 비컨이 더 이상 없는 경우는 해당 응답에서 광고를 `GetTracking` 제거합니다.
+ 의 토큰은 24시간 후에 `GetTracking` 만료됩니다. `NextToken` 값이 24시간보다 오래된 경우에 대한 다음 호출은 null 값을 `GetTracking` 반환합니다`NextToken`.

### 플레이어에서 GetTracking의 일반화된 호출 시퀀스
<a name="gettracking.generalsequence"></a>

클라이언트 플레이어의 `GetTracking` 요청은 토큰과 관련된 `NextToken` 및 광고와 비컨이 포함된 요청 본문이 있는 POST입니다.

```
https://YouMediaTailorUrl/v1/tracking
{

     "NextToken": "value"
     .
     .
     .
}
```

`GetTracking`와 함께를 사용하는 일반적인 순서는 다음과 `NextToken` 같습니다.

1. 를 처음 호출합니다`GetTracking`.

   모든 광고 및 비컨과 후속 호출을 `NextToken` 위한 첫 번째가 반환됩니다.

1. 값이 null이면 MediaTailor`NextToken`는 모든 광고 비컨을 반환합니다.

1. 이 만료되면 MediaTailor`NextToken`는 HTTP 반환 코드 400 오류 메시지를 반환합니다.

   를 새로 호출`GetTracking`하여 유효한 `NextToken`를 검색합니다.

1. 전체 응답을 스캔하여 원하는 범위에 있는 광고 비컨`StartTimeInSeconds`의를 찾습니다.

1. 원하는와 `NextToken` 연결된 값을 `GetTracking` 사용하여를 새로 호출합니다`StartTimeInSeconds`.

1. 필요한 경우 재생하려는 광고를 정확히 찾을 때까지 반환된 광고를 다시 순환합니다.

#### 확장 예제
<a name="gettracking.extendedexample"></a>

이 예제에서는 `GetTracking`의를 사용하여 플레이어`NextToken`에게 반환되는 광고 비컨 수를 제한하는 방법을 보여줍니다.

MediaTailor는 `GetTracking` 요청을 수신합니다. 응답에는 ID가 9935407인 광고와 `StartTimeInSeconds` 값이 52.286 및 48.332초인 비컨 2개가 포함됩니다.

MediaTailor는 다음과 `NextToken` 같이를 사용하여 JSON 응답을 전송합니다.

```
  {
  "NextToken": JF57ITe48t1441mv7TmLKuZLroxDzfIslp6BiSNL1IJmzPVMDN0lqrBYycgMbKEb
  "avails": [
    {
      "ads": [
        {
          "adId": "9935407",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "",
          "creativeSequence": "",
          "duration": "PT15S",
          "durationInSeconds": 15,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "startTime": "PT30S",
          "StartTimeInSeconds": 45,
          "trackingEvents": [
            {
              "beaconUrls": [
                "http://adserver.com/tracking?event=Impression "
              ],
              "duration": "PT0S",
              "durationInSeconds": 0,
              "eventId": "9935414",
              "eventType": "secondQuartile",
              "startTime": "PT52.286S",
              "StartTimeInSeconds": 52.286
            },
            {
              "beaconUrls": [
                "http://adserver.com/tracking?event=firstQuartile"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0,
              "eventId": "9935412",
              "eventType": "firstQuartile",
              "startTime": "PT48.332S",
              "StartTimeInSeconds": 48.332
            }
          ],
          "vastAdId": ""
        }
      ],
      "startTime": "PT46.47S",
      "StartTimeInSeconds": 46.47
    }
  ]
}
```

다음 `GetTracking` 요청에서 MediaTailor는 JF57ITe48t1441mv7TmLKuZLroxDzfIslp6BiSNL1IJmzPVMDN0lqrBYycgMbKEb `NextToken` 값으로 응답합니다.

MediaTailor`StartTimeInSeconds`는 이전 호출`NextToken`의에 설정된와 일치하는 광고 및 비컨으로 응답합니다.

이제 응답에 ID 9235407의 이전 광고 외에 ID 9935407의 다른 광고가 포함되어 있다고 가정합니다. 광고 ID 9235407의 비컨에는 `StartTimeInSeconds`s 132.41 및 70.339가 있습니다.

MediaTailor는 세션의 모든 비컨을 반복하여 ID가 9235407인 광고의 비컨 3 및 비컨 4인 52.286초보다 `StartTimeInSeconds` 큰 비컨을 선택합니다.

```
{
  "NextToken": ZkfknvbfsdgfbsDFRdffg12EdffecFRvhjyjfhdfhnjtsg5SDGN
  "avails": [
    {
      "ads": [
        {
          "adId": "9235407",
          "adVerifications": [],
          "companionAds": [],
          "creativeId": "",
          "creativeSequence": "",
          "duration": "PT15.816S",
          "durationInSeconds": 19.716,
          "extensions": [],
          "mediaFiles": {
            "mediaFilesList": [],
            "mezzanine": ""
          },
          "startTime": "PT2M0S",
          "StartTimeInSeconds": 120.0,
          "trackingEvents": [
            {
              "beaconUrls": [
                "http://adserver.com/tracking?event=complete"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0,
              "eventId": "8935414",
              "eventType": "firstQuartile",
              "startTime": "PT1M10.330S",
              "StartTimeInSeconds": 70.339
            },
            {
              "beaconUrls": [
                "http://adserver.com/tracking?event=thirdQuartile"
              ],
              "duration": "PT0S",
              "durationInSeconds": 0,
              "eventId": "8935412",
              "eventType": "secondQuartile",
              "startTime": "PT2M12.41S",
              "StartTimeInSeconds": 132.41
            }
          ],
          "vastAdId": ""
        },   
      ],
      "startTime": "PT36.47S",
      "StartTimeInSeconds": 36.47
    }
  ]
}
```