클라이언트 측 광고 추적 - AWS Elemental MediaTailor

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

클라이언트 측 광고 추적

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

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

클라이언트 측 추적을 사용하면 다음과 같은 기능을 사용할 수 있습니다.

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

클라이언트 측 보고 워크플로

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

세션 초기화부터 광고 재생 및 비컨에 이르기까지 전체 워크플로 동안 비디오 플레이어, MediaTailor, Ad Decision Server, 콘텐츠 오리진 및 광고 확인 서비스 간의 상호 작용을 보여주는 MediaTailor 클라이언트 측 보고 시퀀스 다이어그램입니다.

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

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

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

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

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

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

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

클라이언트 측 추적 활성화

각 세션에 대해 클라이언트 측 추적을 활성화합니다. 플레이어는 MediaTailor 구성의 세션 초기화 접두사 엔드포인트에 HTTPPOST를 생성합니다. 선택적으로 플레이어는 광고 호출, 매니페스트의 오리진 호출, 세션 수준에서 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는의 플레이어 파라미터이고 param1player_params.param2는의 플레이어 파라미터입니다param2.

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

광고 서버 파라미터

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

  • Google Ad Manager

  • SpringServe

  • FreeWheel

  • 퍼블릭

오리진 상호 작용 쿼리 파라미터

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

세션 구성 기능

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

참고

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

예 : 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" } }
예 : DASH에 대한 클라이언트 측 광고 추적 수행
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.mpd { "adsParams": { "deviceType": "androidmobile", "uid": "xjhhddli-9189901-uic" } }

보고 모드 파라미터

요청 본문에 reportingMode 파라미터를 포함하여 세션을 초기화할 때 보고 모드를 지정할 수 있습니다. 이 파라미터는 MediaTailor가 세션에 대한 클라이언트 측 또는 서버 측 광고 추적을 수행할지 여부를 제어합니다.

  • client - 플레이어가 광고 추적을 수행하고 비컨을 광고 서버로 보냅니다. 지정되지 않은 경우 기본 모드reportingMode입니다.

  • server - MediaTailor는 서버 측 광고 추적을 수행하고 비컨을 광고 서버로 직접 전송합니다.

예 서버 측 보고 모드를 사용한 세션 초기화
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.m3u8 { "adsParams": { "deviceType": "ipad", "uid": "abdgfdyei-2283004-ueu" }, "reportingMode": "server" }
예 클라이언트 측 보고 모드를 사용한 세션 초기화(명시적)
POST mediatailorURL/v1/session/hashed-account-id/origin-id/asset-id.mpd { "adsParams": { "deviceType": "androidmobile", "uid": "xjhhddli-9189901-uic" }, "reportingMode": "client" }
참고

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

성공적인 응답은 응답 본문이 200 있는 HTTP입니다. 본문에는 manifestUrltrackingUrl 키가 있는 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" }

클라이언트 측 추적 스키마에 대한 자세한 내용은 섹션을 참조하세요클라이언트 측 광고 추적 스키마 및 속성.

클라이언트 측 추적 모범 사례

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

라이브 워크플로

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

참고

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

VOD 워크플로

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

VOD 워크플로에 대한 호출 흐름입니다. 세션이 초기화되고 MediaTailor가 미디어가 포함된 첫 번째 매니페스트를 수신한 후 클라이언트 측 추적 엔드포인트를 호출합니다.

GetTracking을 사용한 광고 비컨 페이징

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

GetTracking는 반환된 비컨 목록을 페이징하여 반환된 비컨 수를 좁히는 데 사용할 수 있는 NextToken 값을 반환합니다. NextToken 값을 순환하여 광고 비컨 StartTimeInSeconds 필드의 원하는 값을 찾을 수 있습니다.

  • 를 처음 호출하면 매니페스트 창에 속하는 각의 NextToken 및 값을 포함하여 가능한 GetTracking모든 광고가 반환됩니다.

  • GetTracking 요청에가 포함되지 않은 경우 매니페스트 창의 NextToken모든 광고가 반환됩니다.

  • GetTracking 요청에가 포함되어 NextToken 있지만 반환할 새 비컨이 없는 경우 MediaTailor는 원래 요청에서 전송NextToken한 값과 동일한 값을 반환합니다.

  • 광고에 해당하는 비컨이 더 이상 없으면는 응답에서 광고를 GetTracking 제거합니다.

  • 의 토큰은 24시간 후에 GetTracking 만료됩니다. NextToken 값이 24시간보다 오래된 경우에 대한 다음 호출은 null 값을 GetTracking 반환합니다NextToken.

플레이어에서 GetTracking의 일반화된 호출 시퀀스

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

https://YouMediaTailorUrl/v1/tracking { "NextToken": "value" . . . }

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

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

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

  2. 값이 null이면 MediaTailorNextToken는 모든 광고 비컨을 반환합니다.

  3. 이 만료되면 MediaTailorNextToken는 HTTP 반환 코드 400 오류 메시지를 반환합니다.

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

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

  5. 원하는와 NextToken 연결된 값을 GetTracking 사용하여에 대한 새 호출을 수행합니다StartTimeInSeconds.

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

확장 예제

이 예제에서는 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 값으로 응답합니다.

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

이제 응답에 ID가 9235407인 이전 광고 외에 ID가 9935407인 다른 광고가 포함되어 있다고 가정합니다. 광고 ID 9235407의 비컨에는 StartTimeInSecondss 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 } ] }