SGAI 시작하기

서버 가이드 광고 삽입 (SGAI)은 클라이언트 기기에서 병합 기능을 사용합니다. Google 개발자 콘솔에서 광고 모음 게재 DAI를 Ad Manager 네트워크에 연결되면 SGAI를 사용할 수 있습니다. 광고 모음 게재가 DAI가 사용 설정된 경우 계정 관리자에게 문의하세요.

SGAI를 사용하면 포드 제공 API 엔드포인트를 사용하여 스트림을 만듭니다. 광고 모음 매니페스트를 가져옵니다.

매니페스트 조작 서버가 있는 경우 광고 모음 매니페스트 URL을 삽입하고 광고 모음 매니페스트 정보를 전달하는 광고 마커를 삽입합니다. 콘텐츠 스트림에 표시될 수도 있습니다.

또는 다른 메커니즘을 사용하여 광고 시점을 예약할 수도 있습니다. 더 많이 사용됩니다. 이 경우 앱은 다른 이벤트에도 영향을 주지 않습니다. 예를 들어 스트림과의 사용자 상호작용, 앱 자체, 푸시 알림을 받을 수 있습니다 이러한 이벤트가 끝나면 앱에서 광고를 생성하여 플레이어에 광고 모음 매니페스트 URL의 로드를 시작하도록 지시합니다.

기본 요건

계속하기 전에 다음 사항이 있는지 확인하세요.

  • Google Ad Manager 네트워크에서 사용 설정된 DAI 광고 모음
  • 유형이 포드 게재 매니페스트인 라이브 스트림 이벤트. 일정을 만들려면 다음 단계를 따르세요. 보기 DAI용 라이브 스트림을 설정합니다.

권장사항 따르기

하기 전에 광고 모음 매니페스트 URL을 생성하는 경우 는 Early Ad Break Notification (EABN) API 예상 시간, 타겟팅 정보 및 기타 매개변수를 추가할 수 있습니다.

프로덕션 및 테스트 스트림의 경우 EABN API를 호출하세요. 특히 광고가 프로그래매틱 캠페인이 있을 수 있습니다 자세한 내용은 프로그래매틱 다이렉트의 기능 및 가이드라인을 참조하세요.

스트림 등록 요청하기

사용자가 동영상 플레이어 앱에서 콘텐츠 스트림을 시작하면 스트리밍 세션을 만들기 위한 타겟팅 매개변수가 있는 등록 요청 살펴보겠습니다 스트림 등록을 요청하는 방법에 대한 자세한 내용은 다음을 참조하세요. Method:stream을 사용합니다. 이후에는 응답 데이터 삭제합니다.

다음은 스트림 등록을 요청하는 예시입니다.

일반 텍스트 HTTP

  • 요청:
authority: dai.google.com
method: POST
path: /ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream
scheme: https
content-type: application/x-www-form-urlencoded

cust_params=customID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2
  • 응답:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

Shell

  • 명령줄:
curl \
-H "Host: dai.google.com" \
-H "content-type: application/x-www-form-urlencoded" \
  --data-binary "cust_params=channelID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2" \
  --compressed "https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream"
  • 출력:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

JavaScript

  • Fetch API 사용:
const response = await fetch("https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "body": "cust_params=channelID%3D1543216789%26anotherKey%3Dvalue1%2Cvalue2",
  "method": "POST",
});

  const stream = await response.json();
  console.log(stream);
  • 콘솔 로그:
{
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "polling_frequency": 10,
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "manifest_format": "hls"
}

광고 시점 메타데이터 설문조사

스트림 등록을 요청한 후 광고 메타데이터를 폴링합니다. 받는사람 다음과 같은 경우 스트림 응답의 polling_frequence를 사용하여 타이머를 설정할 수 있습니다. 광고를 호출하기 위한 등록 단계 메타데이터. 설문조사마다 메타데이터가 포함된 일부 광고 목록을 수신할 수 있습니다. 확인할 수 있습니다

광고 모음 매니페스트 URL 생성

포드 리소스 포드 서빙 API의 기능을 살펴보겠습니다 그런 다음 URL을 동영상 플레이어에 전달하여 광고 모음이 로드되기 때문입니다

다음 예는 광고 모음 매니페스트 URL의 구조를 보여줍니다.

https://dai.google.com/linear/pods/v1/hls/network/51636543/custom_asset/pod_serving_hls_manifest_mp4/pod/101.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db:TUL&pd=120000

광고 시간을 기준으로 광고 모음 매니페스트 URL 매개변수를 계산할 수 있습니다. 동영상 플레이어 또는 서버 알림에서 가져온 정보입니다. 대상 요구사항에 대한 자세한 내용은 메서드: 포드 매니페스트

광고 모음 매니페스트 재생

클라이언트 동영상 플레이어 앱에서 기본 자세한 내용을 확인하고 동영상 플레이어의 설명서에 따라 광고 일정입니다.

광고 모음 매니페스트 URL을 생성하여 동영상 플레이어의 예정된 광고 시점 이벤트를 관찰하고 각 광고 시점 재생 중에 id3 이벤트를 구독합니다. 광고를 예약하는 경우 클라이언트 측에서 이벤트를 중단하고 생성 시 id3 이벤트를 구독합니다.

노출 및 광고 이벤트 보고

동영상 플레이어가 광고 모음을 재생하고 id3 시간이 지정된 메타데이터를 발견하면 광고 이벤트를 수신 대기하고 동영상 플레이어가 이를 트리거하고 처리하여 미디어 인증 핑을 전송할 수 있습니다.