개요
SSAI라이브 스트리밍 이벤트 중에 지정된 시간에 광고를 표시 할 수 있습니다. 주요 기능은 다음과 같습니다.
- 인코더에서 전송된 큐 포인트를 사용하여 광고를 삽입하거나Live API
- '슬레이트' 자산을 수집하여 사용하지 않는 광고 시간을 메우세요
- 서버 측의 실시간 스트림에 연결된 광고로 광고 차단기를 피하십시오.
서버 측 광고로 라이브 스트림을 만들려면 다음 단계를 따르세요.
- Live API에 대한 일반 정보 검토
- 라이브 광고 구성 만들기 . 당신은 또한 이것을 할 수 있습니다비디오 클라우드 스튜디오 . Live API를 사용한 광고 구성 관리에 대한 자세한 내용은 아래 섹션을 참조하세요.
- 슬레이트 자산 만들기 . UI를 선호하는 경우 다음을 수행 할 수 있습니다. Studio에서 슬레이트 관리 .
- 선택사항: 큐 포인트 및 광고 비콘 삽입 .
- 이제 준비가되었습니다. Live API를 사용하여 라이브 스트림 만들기 . Studio를 선호하는 경우 다음을 수행 할 수 있습니다. 라이브 모듈에서 서버 측 광고 구현
맞춤 헤더, 광고 구성 변수, DFP 및 광고 매크로 사용에 대한 자세한 내용은이 문서의 나머지 부분을 참조하세요.
일반 정보
다음 정보는 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_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_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"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_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_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"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_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"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_transforms": [
{
"xpath": "/",
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>"
}
],
"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_transforms": [],
"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_transforms": [
{
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>",
"xpath": "/"
}
],
"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_transforms": [
{
"xslt": "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:Det=\"http://Det.com\"><xsl:output omit-xml-declaration=\"yes\"/><xsl:template match=\"node()|@*\"><xsl:copy><xsl:apply-templates select=\"node()|@*\"/></xsl:copy></xsl:template></xsl:stylesheet>",
"xpath": "/"
}
],
"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": "http://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": "http://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": "http://someS3urlpath.com/media.mp4",
"account_id": "ACCOUNT_ID",
"media_source_asset_status": "ready"
}
]
DFP에 대한 참고 사항
DFP에서 광고를받는 경우 문제를 방지하기 위해 다음 사항에 유의해야합니다.
광고 태그
Live 용 광고 태그를 만들 때 적절한 가이드 라인을 따르고/live
. DFP 문서 참조수동으로 마스터 비디오 태그 만들기자세한 내용은.
동시성
많은 양의 동시성이 예상되는 경우 DFP 계정 팀에 문의하는 것이 좋습니다.
단일 / 다중 광고 응답
그만큼singleadresponse
과multiadresponse
매개 변수는 현재 사용되지 않습니다. SSAI .
라이브SSAI단일 광고 서버 호출 만하고 응답이 광고 당 5 개의 리디렉션으로 제한되는 필수 광고 래퍼를 따르는 것을 제외하고 휴식 시간 동안 모든 광고를 포함 할 것으로 예상합니다. 다음 광고 응답 형식이 허용되며 다음과 같이 파싱됩니다.
- VAST-단일 응답 또는 단일 응답의 광고 모음
- DFP 광고 규칙-프리 롤, 미드 롤, 포스트 롤 정의 광고를 포함하여 응답에서 사용 가능한 모든 광고를 집계합니다.
- 스마트 XML-프리 롤, 미드 롤, 포스트 롤 정의 광고를 포함하여 응답에서 사용 가능한 모든 광고를 집계합니다.
광고 요청을위한 맞춤 헤더
그만큼SSAI플랫폼은 백엔드 플랫폼에서 사용하는 광고 호출 및 모든 비콘과 함께 맞춤 헤더를 전달할 수 있습니다. VideoPlaza와 같은 일부 광고 서버에는 맞춤 헤더가 필요합니다.
맞춤 헤더는 다음에서 키-값 쌍 집합으로 지정됩니다. ad_configuration_headers
의 일부인 개체application_ad_configuration
(참조광고 구성 만들기부분).
참고
- 표준 헤더는 기본적으로 다음과 같이 처리됩니다.
X-Forwarded-For
X-Device-User-Agent
- 헤더 값은광고 구성 변수
- 헤더 값은 정적 문자열 일 수도 있습니다.
광고 매크로를 사용하여 광고 타겟팅
때를광고 구성 만들기 , 광고 태그는 일반적으로 다음과 같습니다.
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에 추가 할 수 있습니다.
http://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)보다 짧으면 광고가 광고 시간보다 더 오래 반환되면 광고가 재생되지 않습니다.
-
VPAID 또는 클릭 가능한 광고는Brightcove Live SSAI .
-
광고 시간의 남은 시간이 스트림의 세그먼트 초보다 짧고 슬레이트가 표시되면 슬레이트가 세그먼트 기간 동안 표시되고 실제 광고 시간은 예상보다 길어집니다.
-
위의 경우 세션을 라이브 에지로 다시 가져오려고 시도하기 위해 다음 광고 시간 중 하나가 지연 시간만큼 축소될 수 있습니다.
- 광고가 시스템에 처음 표시되는 경우 트랜스코딩되어 제공 준비가 될 때까지 재생되지 않습니다.
- Live SSAI 용 VMAP는 현재 지원되지 않습니다.