광고 애드팟 타이밍 메타데이터로 광고 삽입

이 가이드에서는 광고 모음 타이밍 메타데이터(ATM) 메서드를 사용하여 프리롤 광고를 비롯한 광고 시점의 정확한 타이밍과 기간을 가져오는 방법으로 광고 시점을 삽입하는 방법을 설명합니다.

프리롤 광고를 삽입하고 미드롤 광고 시점 후 콘텐츠로 돌아가는 것을 관리하려면 다음 API를 호출하는 것이 좋습니다.

필요에 따라 동시성이 높은 라이브 스트림 이벤트의 경우 광고 시점이 시작되기 전에 광고 결정을 예약하도록 Early Ad Break Notification (EABN) API 를 호출하는 것이 좋습니다.

기본 요건

시작하려면 모음 게재 리디렉션 동적 광고 삽입 (DAI) 유형으로 설정된 라이브 스트림 이벤트가 필요합니다. 다음 방법 중 하나를 선택합니다.

콘텐츠 스트림 가져오기

사용자가 라이브 스트림 이벤트를 선택하면 클라이언트 앱이 Google Ad Manager에 스트림 요청을 합니다. 스트림 응답에서 앱은 스트림 매니페스트 요청에 포함할 Google DAI 세션 ID와 메타데이터를 추출합니다.

다음 예에서는 Google DAI 세션 ID를 매니페스트 조작기에 전달합니다.

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

동영상 콘텐츠 재생 요청을 처리할 때 광고 스티칭을 준비하기 위해 요청에서 Google DAI 세션 ID와 CUSTOM_ASSET_KEY를 저장합니다.

광고 모음 타이밍 메타데이터 가져오기

광고 모음 타이밍을 가져오려면 다음 단계를 따르세요.

  1. HMAC 토큰을 생성합니다.
  2. HMAC 토큰으로 ATM API를 호출합니다.

프리롤 광고의 타이밍 메타데이터 요청

다음 옵션을 사용하여 라이브 스트림 이벤트의 프리롤 설정을 확인합니다.

프리롤 광고 결정 결과를 가져오려면 ATM API에 요청을 합니다.

다음 예에서는 프리롤 광고에 대한 ATM 요청을 합니다.

curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"

미드롤 광고의 타이밍 메타데이터 요청

미드롤의 광고 모음 메타데이터를 가져오려면 다음 단계를 따르세요.

  1. 라이브 스트림 매니페스트를 파싱하여 각 미드롤 광고 시점의 타이밍과 기간이 포함된 광고 마커를 찾습니다.
  2. 정확한 광고 모음 및 슬레이트 기간을 요청하려면 ATM API 엔드포인트를 호출하세요. API는 광고 모음의 결정 결과가 포함된 JSON 객체를 반환합니다.

다음 예에서는 미드롤 광고에 대한 ATM 요청을 합니다.

curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"

성공하면 다음과 같은 JSON 객체와 유사한 출력이 표시됩니다.

{
  "status": "final",
  "ads": [
    {
      "duration_ms": 5046,
      "variants": {
        "devrel1428000": {
          "segment_extension": "ts",
          "segment_durations": {
            "timescale": 1000,
            "values": [
              5045
            ]
          }
        },
        "devrel1928000": {
          "segment_extension": "ts",
          "segment_durations": {
            "timescale": 1000,
            "values": [
              5045
            ]
          }
        }
      }
    }
  ],
  "slate": {
    "duration_ms": 0,
    "variants": {
      "devrel1428000": {
        "segment_extension": "ts",
        "segment_durations": {
          "timescale": 1000,
          "values": [
            5005,
            ...
            5046
          ]
        }
      },
      "devrel1928000": {
        "segment_extension": "ts",
        "segment_durations": {
          "timescale": 1000,
          "values": [
            5005,
            ...
            5046
          ]
        }
      }
    }
  }
}

콘텐츠 매니페스트에 광고 스티칭

다음 섹션에서는 라이브 스트림 매니페스트를 수정하고 광고 세그먼트를 추가하는 방법을 안내합니다.

광고 시점 세그먼트 식별 및 불연속성 삽입

각 변형 매니페스트를 처리할 때 스트림에서 광고 시점의 시작과 끝을 나타내는 EXT-X-CUE-INEXT-X-CUE-OUT 태그를 식별합니다.

클라이언트 동영상 플레이어가 콘텐츠와 광고 간에 전환할 수 있도록 EXT-X-CUE-INEXT-X-CUE-OUT 태그를 EXT-X-DISCONTINUITY 요소로 바꿉니다.

다음 예시 매니페스트는 EXT-X-CUE-INEXT-X-CUE-OUT 태그를 대체합니다.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

다음 예에서는 대체된 매니페스트를 보여줍니다.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Google DAI 광고 세그먼트는 암호화되지 않습니다. 콘텐츠가 암호화된 경우 각 광고 시점의 첫 번째 광고 세그먼트 앞에 EXT-X-KEY:METHOD=NONE 요소를 삽입하여 암호화를 삭제합니다. 광고 시점의 끝에 적절한 EXT-X-KEY를 삽입하여 암호화를 다시 추가합니다.

게재 예정 광고 시점의 시작 시간, 기간, 색인을 추적합니다.

광고 세그먼트 URL 빌드

EXT-X-DISCONTINUITY 태그 사이의 콘텐츠 세그먼트를 각 광고 세그먼트의 URL로 바꿉니다. 삽입할 광고 세그먼트 수를 결정하려면 ATM API의 JSON 응답에서 제공되는 ads.segment_durations.values를 사용합니다.

EXT-X-CUE-IN 태그를 감지할 때 광고 모음을 조기에 종료하려면 최종 광고 세그먼트의 URL에 d= 매개변수를 추가합니다. 이 매개변수는 클라이언트 동영상 플레이어의 타임라인에 영향을 미치지 않도록 세그먼트를 단축합니다.

다음 예에서는 프리롤 광고 세그먼트 URL을 매니페스트에 어셈블합니다. 광고 세그먼트는 0부터 시작하는 색인을 사용합니다.

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

다음 예에서는 미드롤 광고 세그먼트 URL을 매니페스트에 어셈블합니다.

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

다음 예에서는 광고 세그먼트를 매니페스트에 삽입합니다.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4

슬레이트 세그먼트 빌드

광고와 콘텐츠 간의 간격을 채우려면 슬레이트 세그먼트를 삽입합니다. ATM API의 JSON 응답에서 slates.segment_durations.values 배열을 사용하여 각 슬레이트 세그먼트의 기간을 결정합니다. 필요에 따라 세그먼트 기간의 시퀀스를 반복하여 전체 광고 시점을 채웁니다.

다음 예에서는 슬레이트 세그먼트를 어셈블합니다.

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

예의 slate/0은 슬레이트 반복 횟수를 나타냅니다. 클라이언트 동영상 플레이어의 호환성 및 캐싱 기능을 참조하여 0에서 시작하고 슬레이트의 각 루프에 대해 이 숫자를 늘릴지 아니면 모든 반복에서 0으로 유지할지 결정합니다.

콘텐츠로 돌아가기 관리

광고 모음의 모든 세그먼트를 삽입한 후 다음 방법 중 하나를 선택하여 콘텐츠 스트림으로 다시 전환합니다.

메서드 설명 클라이언트 동영상 플레이어에 미치는 영향
슬레이트 세그먼트로 채우기 슬레이트 세그먼트를 삽입하고 슬레이트를 반복합니다. 기간을 채우고 각 슬레이트 반복 사이에 EXT-X-DISCONTINUITY 요소를 삽입합니다. 영향이 없습니다.
동영상 플레이어가 변경된 타임라인 없이 콘텐츠로 다시 전환됩니다.
단일 슬레이트 세그먼트로 다시 정렬 단일 슬레이트 세그먼트를 삽입합니다. d= 매개변수를 사용하여 콘텐츠가 시작될 때까지 기간을 채웁니다. 영향이 없습니다.
동영상 플레이어가 변경된 타임라인 없이 콘텐츠로 다시 전환됩니다.
즉시 반환 콘텐츠 세그먼트를 삽입합니다. 동영상 플레이어의 타임라인이 변경됩니다.
클라이언트 동영상 플레이어가 변경된 타임라인을 처리해야 합니다.

선택사항: 광고 시점 예약

유효노출률을 높이려면 광고 모음 기간, 맞춤 타겟팅 매개변수, SCTE-35 신호 데이터와 함께 EABN (Early Ad Break Notification)을 전송합니다. 자세한 내용은 조기 광고 시점 알림 전송을 참고하세요.