이 페이지는 이동했습니다. 3초 후에 새 위치 로 이동합니다. 북마크를 업데이트하세요!

라이브 API: SSAI를 사용한 큐 포인트 및 광고 비콘

이 주제에서는 라이브 스트림 작업에 브라이트코브의 SSAI를 사용할 때 큐 포인트 및 광고 비콘을 관리하는 방법을 배웁니다.

개요

서버 측 광고 삽입(SSAI)라이브 스트리밍 이벤트 중에 지정된 시간에 광고를 표시 할 수 있습니다. 일반적인 정보는라이브 API : 서버 측 광고 삽입(SSAI)문서.

큐 포인트

광고 시간은 큐 포인트에 의해 실행되며 두 가지 방법으로 지정할 수 있습니다.

  • 인코더에서 Brightcove로 보냄
  • 를 통해 생성 된 즉시 큐 포인트Live API

인코더에서

Brightcove 실시간 전달 시스템은 인코더가 제출 한 큐 포인트를 AMF 형식으로 해석 할 수 있습니다.

  AMFDataList
  [0]:onCuePoint
  [1]:{Obj[]:
    time: 1.9889, //Difference from PTS of THIS packet to the first PTS of the 1st video frame in the adbreak
    name: "scte35",
    type: "event",
    ad_server_data: "YWJjZGVmZ2g=",	// optional introduced by Brightcove. It is a base64 encoded json map of parameters e.g. {‘key’:’value’}
    parameters: {Obj[]:
      type: "avail_in",
      duration: 12.0
    }
  }

참고:

  • 현재 RTMP 입력에서는avail_in유형 큐 포인트만 지원됩니다.
  • SCTE-35 큐 포인트는 RTP 및 SRT 입력에서 지원됩니다.

수동 큐 포인트 삽입

다음을 사용하여 즉시 큐 포인트를 만들 수 있습니다. Live API보내서POST의뢰:

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

다음을 지정하는 요청 본문을 포함합니다.

필드 유형 설명
duration 정수 휴식 시간 (초)입니다.

삽입되는 큐 포인트의 지속 시간은세그먼트 길이의 2 배 이상직장에서. 참조기간 예 .
timecode SMPTE 형식 선택 사항: SMPTE 형식의 타임 코드 HH : MM : SS : FF (FF = 프레임) : 변수 집합 (키 / 값 쌍)이 adServer에 전달되어야하는시기를 지정합니다.

생략하면 큐 포인트가 즉시 삽입됩니다.

timecode 속성을 사용하는 경우 인코더는 SMPTE 형식 ( HH:MM:SS:FF ) 타임 코드는tc속성을 통해OnFI . 타임 코드는 라이브 스트림의 시작부터입니다.
ad_server_data 객체 선택 사항: 전달하는 키 / 값 쌍은 사용중인 광고 서버에 따라 다릅니다. 자세한 내용은 광고 서버 문서 및광고 매크로를 사용하여 광고 타겟팅부분.

기간 예

삽입되는 큐 포인트의 지속 시간은세그먼트 길이의 2 배 이상직장에서.

예를 들어, 10 초 큐 포인트직장에서"segment_seconds"=4 , 잘 작동합니다. 그러나 작업에 동일한 큐 포인트를 삽입하면"segment_seconds"=6다음 오류가 발생합니다.

  "error": "The parameter duration should be greater than
    or equal to (2 * target duration) of the job"
  
 

샘플 요청 본문

  {
    "duration": 30,
    "timecode": "15:50:49:16",
    "ad_server_data" : {
    "adbreakid": 12312
    "breaktheme": "fitness"
    }
  }

참고 사항

  1. Wirecast 및 OBS와 같은 소프트웨어 인코더는 다음을 통한 전송 타임 코드를 지원하지 않습니다. OnFI RTMP 스트림의 패킷
  2. Elemental 하드웨어 인코더는 다음을 통해 전송 타임 코드를 지원합니다. OnFI RTMP 스트림의 패킷

샘플 응답

  {
    "id": "Job_ID",
    "cue_point": {
      "id": "adBreak-2f58393ada1442d98eca0817fa565ba4",
      "duration": 30,
      "accuracy": "segment", [Can be segment or frame  ]
      "inserted_at": "2017-07-21T09:30:46.307Z" [ Time when the cue point was inserted in the stream]
    },
  }

비콘

비콘은 광고 재생 여부와 재생 횟수를 추적하기 위해 타사 분석으로 전송되는 재생 데이터 포인트입니다. 이 섹션에서는 다음을 사용하여 설정할 수있는 비콘 유형을 살펴 보겠습니다. Live API및 데이터를 제공하는 데 사용할 수있는 변수입니다. 다음 섹션에서는 비콘 세트를 만들고 관리하는 데 사용하는 API 요청에 대해 자세히 설명합니다.

비콘 유형

비콘 유형
비콘 유형 설명
Load 세션 당 한 번 실행되고 최상위 매니페스트가 요청 될 때만 트리거됩니다.
Play 콘텐츠가 요청되었으며 첫 번째 세그먼트가 반환되었습니다.
Heartbeat 목표 기간 (세그먼트 초)
AdStart 개별 광고 시작
AdFirstQuartile 첫 번째 광고 사 분위수 (25 %)
AdMidpoint 두 번째 광고 사 분위수 (50 %)
AdThirdQuartile 세 번째 광고 사 분위수 (75 %)
AdComplete 개별 광고 완료
AdBreakStart 광고 시간이 시작되었습니다.
AdBreakComplete 광고 시간이 종료되었습니다

비콘 / 광고 변수

아래 표는 비콘 URL에 데이터를 제공하는 데 사용할 수있는 변수를 보여줍니다. 변수를 포함하려면 다음과 같이 이중 중괄호로 묶습니다. {{job.job_id}} . 전체 예제는 비콘 세트 관리에 대한 다음 섹션을 참조하십시오.

광고 구성 변수
변수
설명
session.session_id
고유 한 세션 ID
job.job_id
고유 한 작업 ID
videocloud.video_id
VideoCloud 비디오로 만든 작업에만 사용할 수 있습니다.
application_ad_configuration.description
세션 생성시 응용 프로그램의 가치
random.int32
임의의 32 비트 부호있는 정수
random.int64
임의의 64 비트 부호있는 정수
random.uint32
임의의 32 비트 부호없는 정수
random.uint64
임의의 64 비트 부호없는 정수
random.uuid
임의의 UUID
server.timestamputc
ads-api에서 호출이 이루어진 epoch 시간 (밀리 초)
client.useragent
세션 생성시 http 사용자 에이전트 헤더 값
client.ipaddress
세션 생성시 http x-forwarded-for 헤더 값 (제공된 경우), 그렇지 않으면 원격 주소
client.referrer
세션 생성시 http 참조 헤더 값 (참고 : 올바른 철자 임)
client.referer
세션 생성시 http 참조 자 헤더 값 (http 맞춤법)
client.ipuaid
client.ipaddress 및 client.useragent의 해시 값
live.adbreak
(현재 미사용)
live.adbreakdurationms
광고 시간 (밀리 초)
live.adbreakduration
배정 밀도 부동 소수점 초 단위 광고 시간
live.adbreakdurationint
광고 시간 (정수 초)
live.adbreak.timestamputc.wallclock
광고 서버를 호출 한 epoch 시간 (밀리 초)
live.adbreak.timestamputc.origin
오리진 청크리스트의 epoch 시간 (밀리 초)입니다. 이 값은 원본 청크 목록에 큐 아웃 청크가 생성 된 시간을 나타냅니다.
live.adbreak.timestamputc.session
ssai 청크리스트의 epoch 시간 (밀리 초). 이 값은 ssai 청크 목록에서 큐 아웃 청크의 시간을 나타냅니다. adbreak 내용과 adbreak gap은 일반적으로 동일하지 않기 때문에 첫 번째 adbreak 이후에는live.adbreak.timestamputc.origin ~와 다르다live.adbreak.timestamputc.session . 이 값은SSAI청크리스트.

SCTE-35 광고 변수

그만큼케이블 통신 엔지니어 협회 (SCTE)실시간 스트림에 대한 동적 광고 삽입 표준을 정의합니다. 다음 표에는 SCTE-35 광고 구성 변수가 요약되어 있습니다.

SCTE-35 광고 구성 변수
변수
설명
scte35_eventID
SCTE35 메시지와 함께 전달 된 고유 이벤트 ID입니다.
scte35_programID
SCTE35 메시지와 함께 전달 된 고유 프로그램 ID입니다.
scte35_availNum
광고에 사용할 수있는 특정 접속 시간에 대한 ID이며 SCTE35 메시지를 통해 전송됩니다.
scte35_breakDuration
SCTE35 메시지와 함께 전달 된 프로그램의 90kHz 클록 틱으로 표시되는 광고 시간의 휴식 시간입니다.
scte35_spliceTime
SCTE35 메시지와 함께 전달 된 프로그램의 90kHz 클럭의 틱으로 표시되는 광고 시간의 연결 시간입니다.

비콘 세트 관리

이 섹션에서는 비콘 세트를 관리하기위한 API 요청에 대해 자세히 설명합니다. 비콘 유형 및 변수는 이전 섹션을 참조하십시오.

라이브 작업에 비콘 세트를 추가하려면 먼저 비콘 세트를 만든 다음 다음과 같이 작업을 만들 때 ID를 포함합니다.

  {
  "live_stream": true,
  "region": "us-west-2",
  "reconnect_time": 30,
  "ad_insertion": true,
  "beacon_set": "beacon_set_id", ...

비콘 세트 만들기

비콘 세트를 만들려면POST의뢰:

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

샘플 요청 본문

  {
    "account_id": "User's Account ID [Optional]",
    "beacon_urls": [
      {
        "beacon_url": "https://myserver.com/beaconRX/{{job.job_id}}/load?position=load&sid={{session.session_id}}&jid={{job.job_id}}&app={{application_ad_configuration.description}}&rnd32={{random.int32}}&rnd64={{random.int64}}&bid={{random.uuid}}&t={{server.timestamputc}}&ua={{client.useragent}}&ip={{client.ipaddress}}&ref={{client.referrer}}&ref={{client.referer}}&ab={{live.adbreak}}&abd={{live.adbreakduration}}&abdi={{live.adbreakdurationint}}",
        "beacon_type": "Load"
      },
      {
        "beacon_url": "https://myserver.com/beaconRX/{{job.job_id}}/play?position=play&sid={{session.session_id}}&jid={{job.job_id}}&app={{application_ad_configuration.description}}&rnd32={{random.int32}}&rnd64={{random.int64}}&bid={{random.uuid}}&t={{server.timestamputc}}&ua={{client.useragent}}&ip={{client.ipaddress}}&ref={{client.referrer}}&ref={{client.referer}}&ab={{live.adbreak}}&abd={{live.adbreakduration}}&abdi={{live.adbreakdurationint}}",
        "beacon_type": "Play"
      }
    ]
  }

샘플 응답

  {
    "beacon_set": {
      "beacon_urls": [{
      "beacon_url": "https://myserver.com/beaconRX/{{job.job_id}}/load?position=load&sid={{session.session_id}}&jid={{job.job_id}}&app={{application_ad_configuration.description}}&rnd32={{random.int32}}&rnd64={{random.int64}}&bid={{random.uuid}}&t={{server.timestamputc}}&ua={{client.useragent}}&ip={{client.ipaddress}}&ref={{client.referrer}}&ref={{client.referer}}&ab={{live.adbreak}}&abd={{live.adbreakduration}}&abdi={{live.adbreakdurationint}}",
      "beacon_type": "Load"
    },
    {
      "beacon_url": "https://myserver.com/beaconRX/{{job.job_id}}/play?position=play&sid={{session.session_id}}&jid={{job.job_id}}&app={{application_ad_configuration.description}}&rnd32={{random.int32}}&rnd64={{random.int64}}&bid={{random.uuid}}&t={{server.timestamputc}}&ua={{client.useragent}}&ip={{client.ipaddress}}&ref={{client.referrer}}&ref={{client.referer}}&ab={{live.adbreak}}&abd={{live.adbreakduration}}&abdi={{live.adbreakdurationint}}",
      "beacon_type": "Play"
    }],
    "beacon_set_id": "Inserted Beacon Set ID",
    "account_id": "USER's ACCOUNT ID"
    }
    "inserted": true
  }

비콘 세트 업데이트

비콘 세트를 업데이트하는 것은 하나를 만드는 것과 유사합니다. 제출PUT의뢰:

방법 PUT
URL https://api.bcovlive.io/v1/ssai/beaconsets/beaconset/beacon_set_id
머리글 X-API-KEY: your API KEY

샘플 요청 본문

  {
    "account_id": "User's Account ID [Optional]",
    "beacon_urls": [
      {
      "beacon_url": "https://myserver.com/beaconRX/load",
      "beacon_type": "Load"
      },
      {
      "beacon_url": "https://myserver.com/beaconRX/play",
      "beacon_type": "Play"
      }
    ]
  }

샘플 응답

  {
    "beacon_set": {
      "account_id": "User's Account ID",
      "beacon_set_id": "Beacon set ID",
      "beacon_urls": [{
        "beacon_url": "https://myserver.com/beaconRX/load",
        "beacon_type": "Load"
        },
        {
        "beacon_url": "https://myserver.com/beaconRX/play",
        "beacon_type": "Play"
      }],
      "updated_beacon_set": {
        "beacon_set_id": "Beacon set ID",
        "beacon_urls": [{
          "beacon_url": "https://myserver.com/beaconRX/load",
          "beacon_type": "Load"
        },
        {
          "beacon_url": "https://myserver.com/beaconRX/play",
          "beacon_type": "Play"
        }],
        "account_id": "User's Account ID"
      }
    }
  }

비콘 세트 가져 오기

계정에 대한 비콘 세트를 검색하려면GET의뢰:

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

샘플 응답

  [{
      "account_id": "User's Account ID",
      "beacon_set_id": "Beacon set ID1",
      "beacon_urls": [{
      "beacon_url": "https://myserver.com/beaconRX/load",
      "beacon_type": "Load"
    }]
    },
    {
      "account_id": "User's Account ID",
      "beacon_set_id": "Beacon set ID2",
      "beacon_urls": [{
      "beacon_url": "https://myserver.com/beaconRX2/load",
      "beacon_type": "Load"
      },
      {
      "beacon_url": "https://myserver.com/beaconRX2/play",
      "beacon_type": "Play"
      }]
  }]

사용자 요청을위한 비콘 세트 가져 오기

요청 URL에 계정 ID를 포함하지 않고 요청하는 사용자의 계정에 대한 비콘 세트를 가져올 수도 있습니다.

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

샘플 응답

  [{
      "account_id": "User's Account ID",
      "beacon_set_id": "Beacon set ID1",
      "beacon_urls": [{
      "beacon_url": "https://myserver.com/beaconRX/load",
      "beacon_type": "Load"
    }]
    },
    {
      "account_id": "User's Account ID",
      "beacon_set_id": "Beacon set ID2",
      "beacon_urls": [{
      "beacon_url": "https://myserver.com/beaconRX2/load",
      "beacon_type": "Load"
      },
      {
      "beacon_url": "https://myserver.com/beaconRX2/play",
      "beacon_type": "Play"
      }]
  }]

ID로 설정된 비콘 가져 오기

ID로 설정된 단일 비콘을 검색하려면GET의뢰:

방법 GET
URL https://api.bcovlive.io/v1/ssai/beaconsets/beaconset/beacon_set_id
머리글 X-API-KEY: your API KEY

샘플 응답

  {
      "account_id": "User account ID",
      "beacon_set_id": "Beacon set ID",
      "beacon_urls": [{
        "beacon_type": "Load",
        "beacon_url": "https://myserver.com/beaconRX2/load"
    },
    {
      "beacon_type": "Play",
      "beacon_url": "https://myserver.com/beaconRX2/play"
    }]
  }

비콘 세트 삭제

마지막으로 비콘 세트를 삭제하려면DELETE의뢰:

방법 DELETE
URL https://api.bcovlive.io/v1/ssai/beaconsets/beaconset/beacon_set_id
머리글 X-API-KEY: your API KEY

샘플 응답

응답은 다음과 같습니다.

  {
    "beacon_set_id": "Beacon set ID",
    "deleted": true
  }

부록

아래는 Elemental 인코더에 대한 샘플 큐 포인트 설정을 보여주는 스크린 샷입니다.

원소 큐 포인트 설정
원소 큐 포인트 설정