서문
브라이트코브의 Live SSAI 플레이어 개선 기능을 통해 광고 수, 광고 카운트다운 타이머, 클릭스루 광고 및 컴패니언 광고를 통해 실시간 스트림의 광고 중단 시간을 개선할 수 있습니다.
광고 정보는 표시 할 광고를 식별하기 위해 광고의 응답을 검색하는 광고 구성을 사용하여 지정됩니다. 또한, BAST 파일에는 동반자 광고 및 비콘 URL에 대한 정보도 포함되어 있습니다.
작업 흐름
SSAI 및 플레이어 향상 기능을 사용하여 라이브 스트림을 만들려면 다음 단계를 따르십시오.
- 계정 관리자에게 라이브 스트림, 서버 측 광고 삽입 (SSAI를) 및 Live SSAI 플레이어 개선 사항에 대해 계정을 활성화하도록 요청하십시오.
- 광고 구성 만들기
- 선택 사항: 슬레이트 에셋을 만들어 사용하지 않는 광고 시간을 메우기
- 라이브 작업 만들기
- 재생 토큰 만들기
- 플레이어 구성
- 스트리밍 시작
- 큐 포인트를 사용하여 광고 트리거 (라이브 이벤트 전이나 중에 할 수 있음)
- 정리
광고 구성 만들기
광고 구성은 실시간 스트림이 있는 서버측 광고를 포함하는 데 필요한 정보를 정의합니다. 여기에는 광고 공급자 URL, 예상 광고 응답 유형 및 비콘 전송 여부가 포함됩니다.
새 광고 구성을 만들려면 다음과 같이POST
요청을 보내세요.
방법 | POST |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications |
머리글 | X-API-KEY: your API KEY |
콘텐츠 유형: 응용 프로그램/json |
모든 요청은 계정이 설정될 때 제공되는 API 키를 사용하여 인증됩니다. 키가X-API-KEY
헤더에 전달됩니다.
요청 본문
요청 본문 필드에 대한 자세한 내용은 Live API 참조문서를 참조하십시오.
Live SSAI의 플레이어 향상 기능을 사용하면 강조 표시된 필드를application_ad_configuration
오브젝트 내에서 설정할 수 있습니다.
샘플 요청 본문:
{
"application_ad_configuration": {
"ad_configuration_description": "your ad config description",
"ad_configuration_expected_response_type": "Vast",
"ad_configuration_headers_for_impressions": false,
"ad_configuration_strategy": "SingleAdResponse",
"ad_configuration_transforms": [],
"ad_configuration_url_format": "your ad server",
"ad_configuration_client_sdk_enabled": true,
"client_options": {
"show_ad_break_remaining_time": true / false,
"show_ad_remaining_time": true / false,
"show_number_of_remaining_ads": true / false,
"client_only_tracking": true / false
}
},
"application_description": "your application description"
}
다음은 Live SSAI를 통한 플레이어 향상과 관련된 광고 구성 필드입니다.
필드 | 유형 | 필수 | 설명 |
---|---|---|---|
ad_configuration_expected_response_type |
스트링 | 예 | 이 기능을 사용하려면 광고 구성의 값이 다음과 같아야 합니다. Vast |
ad_configuration_client_sdk_enabled |
부울 | 예 | 이 기능을 활성화하려면 이 필드의 값이 다음과 같아야 합니다. true |
client_options |
물체 | Player Enhancements 관련 필드의 개체 | |
client_options. |
부울 | 남은 광고 시간 표시 시간 값: true / false
|
|
client_options. |
부울 | 남은 광고 표시 시간 값: true / false
|
|
client_options. |
부울 | 광고 브레이크에 남아 있는 광고 수를 표시합니다. 값: true / false
|
|
client_options. |
부울 | 서버측 추적 이벤트 (노출수/사분위수) 비활성화 값: true / false 기본값: false |
대응
샘플 응답:
{
"application": {
"application_description": "Test ad configuration",
"application_ad_configuration": {
"ad_configuration_description": "Ad config description",
"ad_configuration_expected_response_type": "Vast",
"ad_configuration_strategy": "SingleAdResponse",
"ad_configuration_transforms": [],
"ad_configuration_url_format": "https://solutions.brightcove.com/bcls/ads/simple-vast.xml",
"ad_configuration_headers_for_impressions": false,
"ad_configuration_client_sdk_enabled": true,
"client_options": {
"show_ad_break_remaining_time": true,
"show_ad_remaining_time": true,
"show_number_of_remaining_ads": true,
"client_only_tracking": true
}
},
"application_id": "1234567890abcdefghijkl",
"application_type": "ads",
"account_id": "001122334455aabbccddee"
},
"action": "inserted"
}
광고 구성을 성공적으로 만든 후 생성된application_id
(광고 구성 ID) 를 복사합니다. 나중에 SSAI의 재생 URL을 찾으려면 이 방법이 필요합니다.
광고 구성을 나열, 업데이트 및 삭제하려면 광고 구성관리문서를 참조하세요.
라이브 작업 만들기
라이브 작업을 생성하려면 다음과 같이POST
요청을 보내십시오.
방법 | POST |
---|---|
URL | https://api.bcovlive.io/v1/jobs |
헤더 | X-API-KEY: your API KEY |
콘텐츠 유형: 응용 프로그램/json |
요청 본문
요청 본문 필드에 대한 자세한 내용은 Live API 참조문서를 참조하십시오.
SSAI가 활성화된 실시간 작업의 경우 HTTP 요청ad_insertion: true
본문에서 설정합니다.
샘플 요청(Video Cloud 비디오)
라이브 스트림에 사용할 Video Cloud 비디오를 만들고 라이브 스트림에서 VOD 클립을 만들려면 요청 본문에videocloud
객체를 포함시키십시오. 자세한 내용은라이브 API를 참조하십시오. VOD 클립문서 만들기
아래 강조 표시된 필드는 서버측 광고 삽입(SSAI)에 필요합니다.
{
"live_stream": true,
"ad_insertion": true,
"region": "us-west-2",
"reconnect_time": 1800,
"outputs": [{
"label": "hls720p",
"live_stream": true,
"width": 1280,
"height": 720,
"video_codec": "h264",
"h264_profile": "high",
"video_bitrate": 2100,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls540p",
"live_stream": true,
"width": 960,
"height": 540,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 1500,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls360p",
"live_stream": true,
"width": 640,
"height": 360,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 800,
"segment_seconds": 4,
"keyframe_interval": 60
}
],
"videocloud": {
"video": {
"name": "Live SSAI VideoCloud Asset",
"description": "",
"long_description": "",
"tags": [],
"reference_id": "live_ssai_vc_asset",
"link": {
"url": "",
"text": ""
},
"schedule": {
"starts_at": null,
"ends_at": null
},
"custom_fields": {}
}
}
}
샘플 요청(원격 비디오)
라이브 스트림에 원격 비디오를 사용하려면 요청 본문이 이와 유사해야 합니다.
아래 강조 표시된 필드는 서버측 광고 삽입(SSAI)에 필요합니다.
{
"live_stream":true,
"ad_insertion":true,
"region":"us-west-2",
"reconnect_time":1800,
"outputs":[
{
"label": "hls720p",
"live_stream": true,
"width": 1280,
"height": 720,
"video_codec": "h264",
"h264_profile": "high",
"video_bitrate": 2100,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls540p",
"live_stream": true,
"width": 960,
"height": 540,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 1500,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls360p",
"live_stream": true,
"width": 640,
"height": 360,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 800,
"segment_seconds": 4,
"keyframe_interval": 60
}
]
}
기타 유용한 자료:
대응
샘플 응답(Video Cloud 동영상)
{
"id": "227356abcdefghijklmno12345",
"outputs": [
{
"id": "0-2273561a201ec18",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls720p"
},
{
"id": "1-2273561a201e8c18",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls540p"
},
{
"id": "2-2273561a201ec18",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls360p"
},
{
"id": "3-2273561a201ec18",
"playlist_type": "defaultS3",
"type": "playlist",
"filename": "playlist.m3u8",
"dvr_filename": "playlist_dvr.m3u8",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"b907ac7935e2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration for SLS",
"type": "ads"
},
"dc9aa8ee3520f2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test live ad config for SLS",
"type": "ads"
}
},
"playback_added_cdns": []
}
],
"stream_url": "rtmp://ec2-54-184-149-60.us-west-2.compute.amazonaws.com:1935/2273561a201ec18",
"stream_name": "alive",
"static": false,
"job_videocloud_asset_id": "6227380655001",
"encryption": {},
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"b907ac7935e2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration for SLS",
"type": "ads"
},
"dc9aa8ee3520f2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test live ad config for SLS",
"type": "ads"
}
},
"playback_added_cdns": []
}
샘플 응답(원격 비디오)
{
"id": "bbccddeeffgghhiijjkk0011223344",
"outputs": [
{
"id": "0-bbccddeeffgghhiijjkk0011223344",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls720p"
},
{
"id": "1-bbccddeeffgghhiijjkk0011223344",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls540p"
},
{
"id": "2-bbccddeeffgghhiijjkk0011223344",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls360p"
},
{
"id": "3-bbccddeeffgghhiijjkk0011223344",
"playlist_type": "defaultS3",
"type": "playlist",
"filename": "playlist.m3u8",
"dvr_filename": "playlist_dvr.m3u8",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"91bc2d5ff4a4441db34c2457c751c3ca": {
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration",
"type": "ads"
},
"e7f6e9a3022a45e1b0b322ba57399150": {
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "House Ads - 0077db20eb444b5daa7487438c90a271",
"type": "ads"
}
}
}
],
"stream_url": "rtmp://ep4-usw2.bcovlive.io:1935/bbccddeeffgghhiijjkk0011223344",
"stream_name": "alive",
"static": false,
"encryption": {},
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"91bc2d5ff4a4441db34c2457c751c3ca": {
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration",
"type": "ads"
}
}
}
API 응답에서 다음 단계를 위해 다음 필드 값을 기록해 둡니다.
id
- 귀하의 실시간 직업 IDstream_url
,stream_name
- 라이브 스트림 인코더용 입력job_videocloud_asset_id
- 비디오 클라우드 비디오 ID
재생 토큰 만들기
플레이어와 함께 재생 토큰이 필요합니다.
재생 토큰을 생성하려면 다음과 같이POST
요청을 보내십시오.
방법 | POST |
---|---|
URL | https://api.bcovlive.io/v1/jobs/your live job id/playback-token |
헤더 | X-API-KEY: your API KEY |
콘텐츠 유형: 응용 프로그램/json |
요청 본문
샘플 요청 본문:
{
"dvr":true / false,
"application_id":"your ad config id"
}
대응
샘플 응답:
{
"playback_token": "live.JhQabcdefghijkl000000000abcdefghi"
}
응답 본문에는 생성 된 재생 토큰이 포함됩니다. 플레이어로 Playback API 호출을 할 때 이것을 사용하십시오.
플레이어 구성
Playback API에서 실시간 스트림을 재생하는 과정은 일반 Video Cloud 비디오를 재생하는 방식과 약간 다릅니다. 동영상 ID (참조 ID) 를 제공하는 것 외에도 사용하려는 광고 구성을 식별하는 재생 토큰을 포함해야 합니다. DVR 재생 여부를 지정해야 합니다.
웹 플레이어
브라이트코브 플레이어 구성에 대한 자세한 내용은 브라이트코브 플레이어를 통한 Live SSAI의 플레이어 향상사용문서를 참조하십시오.
네이티브 안드로이드 플레이어
Android용 네이티브 플레이어 구성에 대한 자세한 내용은 네이티브 SDK를 통한 Live SSAI용 플레이어 향상사용문서를 참조하십시오.
네이티브 iOS 플레이어
iOS용 네이티브 플레이어 구성에 대한 자세한 내용은 네이티브 SDK를 통한 Live SSAI용 플레이어 향상사용문서를 참조하십시오.
스트리밍 시작
라이브 스트리밍 이벤트를 만드는 많은 도구가 있습니다. 다음은 CDN에서 제공하는 라이브 스트림을 생성하는 데 사용할 수 있는 몇 가지 인코더입니다.
정리
실시간 스트림이 완료되면 다음과 같이 스트림의 아티팩트를 정리할 수 있습니다.
- 스트리밍 인코더 중지
-
라이브 작업을 취소합니다.
라이브 작업을 취소하려면 다음과 같이
PUT
요청을 보내십시오.방법 PUT
URL https://api.bcovlive.io/v1/jobs/your live job id/cancel
헤더 X-API-KEY: your API KEY
콘텐츠 유형: 응용 프로그램/json
자세한 내용은 Live API 참조문서를 참조하십시오.
-
광고 구성 삭제
광고 구성을 삭제하려면 다음과 같이
DELETE
요청을 보내세요.방법 PUT
URL https://api.bcovlive.io/v1/ssai/applications/application/your ad config id
헤더 X-API-KEY: your API KEY
콘텐츠 유형: 응용 프로그램/json
자세한 내용은 Live API 참조문서를 참조하십시오.