브라이트코브 라이브 API: 서버 측 광고 삽입 (SSAI)

이 항목에서는 라이브 스트림 작업에 대해 서버 측 광고 삽입 (SSAI를) 설정하는 방법을 보여 줍니다.

개요

SSAI라이브 스트리밍 이벤트 중에 지정된 시간에 광고를 게재할 수 있습니다. 주요 기능은 다음과 같습니다.

  • 인코더에서 전송된 큐 포인트를 사용하여 광고를 삽입하거나 인코더에서 전송된 큐 포인트를 사용하여 인스턴트 큐 포인트를 만드세요. Live API
  • '슬레이트' 자산을 수집하여 사용하지 않는 광고 시간을 메우세요
  • 서버 측의 실시간 스트림에 연결된 광고로 광고 차단기를 피하십시오.

서버 측 광고로 라이브 스트림을 만들려면 다음 단계를 따르세요.

  1. Live API에 대한 일반 정보 검토
  2. 실시간 광고 구성을 만드세요 . 비디오 클라우드 스튜디오에서도 이 작업을 수행할 수있습니다. Live API를 사용한 광고 구성 관리에 대한 자세한 내용은 아래 섹션을 참조하세요.
  3. 슬레이트 에셋만들기 UI를 선호하는 경우 Studio에서 슬레이트를관리할 수있습니다.
  4. 선택사항: 큐 포인트와 광고 비콘을삽입합니다.
  5. 이제 Live API를 사용하여 실시간 스트림을만들 준비가 되었습니다 . Studio를 선호하는 경우 다음을 수행 할 수 있습니다. 라이브 모듈에서 서버 측 광고 구현

맞춤 헤더, 광고 구성 변수, DFP 및 광고 매크로 사용에 대한 자세한 내용은이 문서의 나머지 부분을 참조하세요.

지원되는 지역

SSAI는 다음 지역에서 지원됩니다.

  • 미국 서부-2
  • 미국 동쪽-1
  • ap-남동쪽-2
  • ap-북동쪽-1
  • ap-남동쪽-1
  • 유로-센트럴-1

일반 정보

다음 정보는 SSAI 요청이있는 모든 Live API에 적용됩니다.

기본 URL

SSAI를 사용하는 Live API의 기본 URL은 다음과 같습니다.

    https://api.bcovlive.io/v1/ssai

인증

요청 인증에는 API 키가있는 헤더가 필요합니다.

    X-API-KEY: your API KEY
    

계정과 연결된 API 키를 받으려면 고객 성공 관리자에게 문의하십시오.

광고 구성 만들기

새 광고 구성을 만들려면 다음과 같이POST요청을 보내세요.

방법 POST
URL https://api.bcovlive.io/v1/ssai/applications
머리글 X-API-KEY: your API KEY

샘플 요청 본문

    {
      "application_ad_configuration": {
        "ad_configuration_compensation_disable": true,
        "ad_configuration_description": "Human readable description of the configuration",
        "ad_configuration_expected_response_type": "Dfp, Vast or SmartXML",
        "ad_configuration_headers": {
        "X-Custom-Header-Rand": "{{random.int32}}",
        "X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
        },
        "ad_configuration_headers_for_impressions": false,
        "ad_configuration_strategy": "SingleAdResponse or MultipleAdResponse",
        "ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
      },
      "application_description": "Human readable description of the ad application",
      "account_id": "User's Account ID [Optional]"
    }

샘플 응답

    {
      "application": {
        "account_id": "User Account ID",
        "application_description": "Human readable description of the ad application",
        "application_ad_configuration": {
          "ad_configuration_compensation_disable": true,
          "ad_configuration_description": "Human readable description of the configuration",
          "ad_configuration_expected_response_type": "Dfp | Vast | SmartXML",
          "ad_configuration_headers": {
            "X-Custom-Header-Rand": "{{random.int32}}",
            "X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
          },
          "ad_configuration_headers_for_impressions": false,
          "ad_configuration_strategy": "SingleAdResponse | MultipleAdResponse",
          "ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
        },
        "application_id": "Application ID"
      },
      "inserted": true
    }

광고 구성 업데이트

광고 구성을 업데이트하는 것은 구성을 만드는 것과 매우 유사합니다. 다음과 같이PUT요청하십시오.

방법 PUT
URL https://api.bcovlive.io/v1/ssai/applications/application/Application_ID
머리글 X-API-KEY: your API KEY

샘플 요청 본문

    {
      "application_ad_configuration": {
        "ad_configuration_description": "Some Updated Description Value",
        "ad_configuration_expected_response_type": "Dfp or Vast or SmartXML,
        "ad_configuration_headers": {
          "X-Custom-Header-Rand": "{{random.int32}}",
          "X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
        },
        "ad_configuration_headers_for_impressions": false,
        "ad_configuration_strategy": "SingleAdResponse or MultipleAdResponse",
        "ad_configuration_url_format": "https://updated-ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
      },
      "application_description": "Human readable description of the ad application",
      "account_id": "User's Account ID [Optional]"
    }

샘플 응답

    {
      "account_id": "User Account ID",
      "application_description": "Human readable description of the ad application",
      "application_ad_configuration": {
        "ad_configuration_description": "Some Updated Description Value",
        "ad_configuration_expected_response_type": "Dfp | Vast | SmartXML",
        "ad_configuration_headers": {
        "X-Custom-Header-Rand": "{{random.int32}}",
        "X-VIDEOPLAZA-FORWARDED-FOR": "{{client.ipaddress}}"
        },
        "ad_configuration_headers_for_impressions": false,
        "ad_configuration_strategy": "SingleAdResponse | MultipleAdResponse",
        "ad_configuration_url_format": "https://updated-ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}"
      },
      "application_id": "Application ID"
    }

모든 광고 구성 가져 오기

계정의 모든 광고 구성을 검색하려면 다음과 같이GET 요청을 제출하세요.

방법 GET
URL https://api.bcovlive.io/v1/ssai/applications/account/Account_ID
머리글 X-API-KEY: your API KEY

샘플 응답

    [
      {
        "application_id": "Application_ID_1",
        "application_description": "DFP Single Midroll",
        "application_ad_configuration": {
        "ad_configuration_description": "DFP Test Config Single Midroll",
        "ad_configuration_strategy": "MultipleAdResponse",
        "ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler",
        "ad_configuration_expected_response_type": "Dfp"
        },
        "account_id": "Account_ID"
      },
      {
        "application_id": "Application_ID_2",
        "application_description": "Test DFP Single Midroll"
        "application_ad_configuration": {
        "ad_configuration_description": "DFP Test Config Single Midroll",
        "ad_configuration_strategy": "MultipleAdResponse",
        "ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}",
        "ad_configuration_expected_response_type": "Dfp"
        },
        "account_id": "Account_ID"
      }
    ]

광고 구성 가져 오기

특정 광고 구성을 검색할 수도 있습니다. application_id 보내서GET다음과 같이 요청합니다.

방법 GET
URL https://api.bcovlive.io/v1/ssai/applications/application/Application_ID
머리글 X-API-KEY: your API KEY

샘플 응답

    {
      "application_id": "Application_ID",
      "application_description": "Test DFP Single Midroll",
      "application_ad_configuration": {
        "ad_configuration_description": "DFP Test Config Single Midroll",
        "ad_configuration_strategy": "MultipleAdResponse",
        "ad_configuration_url_format": "https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&num={{random.int32}}&ses={{session.session_id}}",
        "ad_configuration_expected_response_type": "Dfp"
      },
      "account_id": "Account_ID"
    }

광고 구성 삭제

광고 구성을 삭제하려면 다음과 같이DELETE요청을 보내세요.

방법 DELETE
URL https://api.bcovlive.io/v1/ssai/applications/application/APPLICATION_ID
머리글 X-API-KEY: your API KEY

샘플 응답

    {
    "application_id": "Application_ID",
    "deleted": true
    }

슬레이트 관리

슬레이트는 사용하지 않는 광고 시간을 채우는 데 사용되는 자체 자산입니다. 슬레이트를 사용하여 "곧 돌아 오십시오"라는 메시지 또는 원하는 콘텐츠를 제공 할 수 있습니다.

다음은 슬레이트 애셋을 추가하고 관리하기위한 API 요청에 대한 세부 정보입니다.

슬레이트 자산 추가

새 슬레이트 미디어 소스 에셋을 인제스트하려면POST요청을 제출하세요.

방법 POST
URL https://api.bcovlive.io/v1/ssai/slates
머리글 X-API-KEY: your API KEY

샘플 요청 본문

    {
      "source_url": "https://somesourceasset.com/slate-to-ingest.mp4",
      "account_id": "Account_ID [Optional]",
      "source_description": "User identifiable description for the slate  [Optional]"
    }
    
    

샘플 응답

    {
      "media_source_asset_id": "New_UUID",
      "account_id": "Account_ID",
      "media_source_asset_default": false,
      "media_source_asset_type": "slate",
      "media_source_asset_url": "https://somesourceasset.com/slate-to-ingest.mp4",
      "media_source_asset_status": "transcoding"
      "media_source_asset_description": "User identifiable description for the slate"
    }

슬레이트 자산 삭제

슬레이트 미디어 소스 애셋을 삭제하려면DELETE요청을 보내세요.

방법 DELETE
URL https://api.bcovlive.io/v1/ssai/slates/slate/Slate_MSA_ID
머리글 X-API-KEY: your API KEY

샘플 응답

    {
      "media_source_asset_id": "MSA_UUID",
      "media_source_asset_type": "slate",
      "media_source_asset_url": "https://someS3urlpath/media.mp4",
      "media_source_asset_default": false,
      "media_source_asset_status": "ready",
      "account_id": "ACCOUNT_ID"
    }

슬레이트 자산 가져 오기

GET요청을 보내면 계정에 대한 모든 슬레이트 미디어 소스 애셋의 배열을 검색할 수 있습니다.

방법 GET
URL https://api.bcovlive.io/v1/ssai/slates/account/Account_ID
머리글 X-API-KEY: your API KEY

샘플 응답

    [
      {
      "media_source_asset_id": "MSA_UUID_1",
      "media_source_asset_type": "slate",
      "media_source_asset_default": false,
      "media_source_asset_url": "https://someS3urlpath.com/media.mp4",
      "account_id": "ACCOUNT_ID",
      "media_source_asset_status": "ready"
      },
      {
      "media_source_asset_id": "MSA_UUID_2",
      "media_source_asset_type": "slate",
      "media_source_asset_default": true,
      "media_source_asset_url": "https://someS3urlpath.com/media.mp4",
      "account_id": "ACCOUNT_ID",
      "media_source_asset_status": "ready"
      }
    ]

DFP에 대한 참고 사항

DFP에서 광고를받는 경우 문제를 방지하기 위해 다음 사항에 유의해야합니다.

광고 태그

Live용 광고 태그를 만들 때는 다음을 포함한 적절한 가이드라인을 준수해야/live 합니다. 자세한 내용은 DFP 문서 수동 마스터 비디오 태그만들기를 참조하십시오.

동시성

많은 양의 동시성이 예상되는 경우 DFP 계정 팀에 문의하는 것이 좋습니다.

단일 / 다중 광고 응답

singleadresponse multiadresponse 매개변수는 현재 에서 사용되지 않습니다SSAI .

Live는 한 번의 광고 서버SSAI호출만 수행하며 응답에는 중단에 대한 모든 광고가 포함될 것으로 예상합니다. 단, 광고당 리디렉션 횟수는 5회로 제한되어 있는 필수 광고 래퍼를 추적합니다. 다음 광고 응답 형식이 허용되며 다음과 같이 파싱됩니다.

  • VAST-단일 응답 또는 단일 응답의 광고 모음
  • DFP 광고 규칙-프리 롤, 미드 롤, 포스트 롤 정의 광고를 포함하여 응답에서 사용 가능한 모든 광고를 집계합니다.
  • 스마트 XML-프리 롤, 미드 롤, 포스트 롤 정의 광고를 포함하여 응답에서 사용 가능한 모든 광고를 집계합니다.

광고 요청을위한 맞춤 헤더

SSAI플랫폼은 백엔드 플랫폼에서 사용하는 광고 호출 및 모든 비콘과 함께 맞춤 헤더를 전달할 수 있습니다. VideoPlaza와 같은 일부 광고 서버에는 맞춤 헤더가 필요합니다.

맞춤 헤더는 객체의 키-값 쌍 집합으로 지정되며, 이는ad_configuration_headers객체의 키-값 쌍 집합으로 지정됩니다application_ad_configuration (광고 구성만들기섹션 참조).

참고

광고 매크로를 사용하여 광고 타겟팅

광고 구성을만들 때 광고 태그는 일반적으로 다음과 같이 표시됩니다.

      https://ad-provider-host.com/path/to/ad-handler?ip={{client.ipaddress}}&
      num={{random.int32}}&ses={{session.session_id}}&IDFA={{deviceid}}&
      sitesection={{sitesection}}&breakid={{breakid}}&breaktheme={{breaktheme}}

이중 중괄호 안의 항목은 광고 매크로라고도하는 변수이며, Brightcove Live는 광고 요청을 보낼 때 값이있는 경우 값으로 대체합니다.

광고 매크로 값은 다음과 같은 방법으로 제공 할 수 있습니다.

헤더 정보 사용

위의광고 구성 변수섹션에 자세히 설명된 헤더 정보는 모든 요청에 사용할 수 있습니다. 광고 구성에서 적절한 키 이름으로 원하는 변수를 지정하기 만하면됩니다.

URL 추가

다음과 같이 추가 세션 값을 실시간 스트림의 URL에 추가 할 수 있습니다.

      https://playback.bcovlive.io/e058d9f2737e18/us-west-2/NA/
      playlist.m3u8?deviceid=123456&sitesection=services"

동적으로 URL 추가

Javascript 및 Brightcove Player API를 사용하여 URL을 동적으로 추가 할 수 있습니다.

      <!DOCTYPE html>
      <body>
        <video
        id="myPlayerID"
        data-video-id="5975635167001"
        data-account="3737230870001"
        data-player="tIG7lVKBm"
        data-embed="default"
        data-application-id
        class="video-js"
        controls
        width="640"
        height="360"></video>
        <script src="//players.brightcove.net/3737230870001/tIG7lVKBm_default/index.min.js"></script>

        <script type="text/javascript">
        var player = videojs("myPlayerID");

        player.one("loadstart", function(){
          var sourceUrl = player.currentSource();
          console.log(sourceUrl);
          var liveUrlWithParams = sourceUrl.src + "?player_width={width}&player_height={height}&deviceid={deviceid}";

          player.src([{
            "type": "application/vnd.apple.mpegurl",
            "src": liveUrlWithParams
          }]);
        });
      </script>

      </body>

이 예의 키 이름은 위에 표시된 광고 태그의 변수 이름에 해당합니다.

광고 구성 변수

비콘이라고도하는 광고 구성 변수를 요청에 사용하여 광고 구성을 관리 할 수 있습니다. 자세한 내용은라이브 API를 참조하십시오. SSAI가 포함된 큐 포인트 및 광고 비콘문서.

수동 큐 포인트 사용

특정 광고 시간의 값은 수동 큐 포인트 삽입 요청으로 전송할 수 있습니다. 자세한 내용은라이브 API를 참조하십시오. 큐 포인트 및 광고 비콘문서.

알려진 문제

  • SSAI는 라이브 스트리밍 비디오에 오디오 트랙이 있어야합니다.
  • 반환 된 VAST의 광고 ID가 동일한 경우 광고 URL이 동적 변수를 사용하여 고유 한 URL을 만들더라도 서버는 광고 콘텐츠를 요청하지 않습니다. 이것은 않습니다 ~ 아니다광고에 DFP를 사용하는 경우 적용됩니다.
  • DFP를 사용하면 동일한 광고 ID를 사용할 수 있지만 여전히 다른 광고 소재 ID가 있어야합니다. 즉, MediaFile을 간단히 교체 할 수 없습니다.
  • 광고 시간의 길이가 광고 URL의 MAX 길이 (min_ad_duration = 0 & max_ad_duration = 30000)보다 짧으면 광고가 광고 시간보다 더 오래 반환되면 광고가 재생되지 않습니다.

  • VPAD 또는 클릭 가능한 광고는 지원되지 않습니다Brightcove Live SSAI .

  • 광고 시간의 남은 시간이 스트림의 세그먼트 초보다 짧고 슬레이트가 표시되면 슬레이트가 세그먼트 기간 동안 표시되고 실제 광고 시간은 예상보다 길어집니다.

  • 위의 경우 세션을 라이브 에지로 다시 가져오려고 시도하기 위해 다음 광고 시간 중 하나가 지연 시간만큼 축소될 수 있습니다.

  • 광고가 시스템에 처음 표시되는 경우 트랜스코딩되어 제공 준비가 될 때까지 재생되지 않습니다.
  • Live SSAI 용 VMAP는 현재 지원되지 않습니다.