서문
Brightcove Live의 중복 기능은 첫 번째 스트림이 작동을 중지하는 경우 Live가 자동으로 장애 조치되는 백업 스트림을 생성하여 라이브 이벤트의 안정적인 성능을 보장하는 데 도움이 됩니다.
Live API에 대한 모든 요청에는 다음 헤더가 필요합니다.
키 | 값 | 참고 |
---|---|---|
X-API-KEY |
{your API Key} | Brightcove Live 계정을 열 때 키를 제공해야합니다. |
Content-Type |
응용 프로그램/json | 기술적으로content-type 헤더는 요청 본문을 포함하는 쓰기 요청에만 필요하지만 읽기 요청에는 아무런 영향을 미치지 않습니다. |
라이브 작업 생성
중복 설정의 경우 2 개 이상의 Brightcove 라이브 작업을 생성해야합니다. 작업의 유일한 요구 사항은동일한output
설정으로 생성되어야 한다는 것입니다. 이를 달성하는 가장 쉬운 방법은 원하는 출력 사양으로 하나의 작업을 만든 다음copy_outputs_from_job
매개 변수를 사용하여 추가 작업을 만드는 것입니다.
이러한 일자리를 창출 할 수있는 지역에는 제한이 없지만 상대적으로 가까운 곳에 위치하는 것이 좋습니다.
라이브 작업이 생성 된 후 나중에 작업 ID를 유지합니다. 이러한 작업을 중복 그룹 (아래 섹션 참조)에 추가하는 데 사용할 요청 본문은 다음과 같습니다.
[
{
"job_id": "0b76bc73f92f46dc917bbe5061c0c633"
},
{
"job_id": "0ae5a4a71dc54b3181af0f98ee407c27"
}
]
중복 그룹 만들기
중복 그룹을 생성하려면 다음 주소로POST
요청을 제출해야 합니다.
https://api.bcovlive.io/v1/redundantgroups
다음은 샘플 요청 본문입니다.
{
"ad_insertion": true,
"processing_regions": ["us-west-2"],
"storage_regions": ["us-west-2", "us-east-1"],
"label": "Test RG",
"live_dvr_sliding_window_duration": 1800
}
아래 표에는 요청 본문에 대한 전체 필드 목록이 포함되어 있습니다. 여러 경우에 이는 라이브 작업을 생성하는 데 사용되는 필드와 동일합니다. 참조라이브 API 참조필드에 대한 자세한 내용은
필드 | 유형 | 필수? | 설명 |
---|---|---|---|
ad_insertion |
부울 | 선택 과목 | 이 스트림이 SSAI를 활성화해야하는 경우 true로 설정합니다. |
add_cdns |
배열 | 선택 과목 | 매니페스트 생성에 사용할 추가 CDN 공급자의 배열입니다. 제공된 각 CDN에 대해 매니페스트가 그에 따라 앞에 추가됩니다. |
drm |
목적 | 선택 과목 | 아직 지원되지 않음 |
encryption |
목적 | 선택 과목 | 아직 지원되지 않음 |
label |
끈 | 필수 | 그룹을 식별하는 레이블 |
live_dvr_sliding_window_duration |
정수 | 선택 과목 | |
notifications |
배열 | 선택 과목 | 알림 대상 객체 또는 문자열의 배열 |
processing_regions |
배열 | 필수 | 중복 그룹에 대한 처리 영역입니다. 이렇게하면 매니페스트를 생성 할 AWS 리전이 결정됩니다. 이는 storage_regions 및 라이브 작업이 생성 된 지역과 일치하는 것이 좋습니다. |
storage_regions |
배열 | 필수 | 스토리지 영역 미디어 청크 및 재생 목록은 S3에 업로드됩니다. 이는 processing_regions 및 라이브 작업이 생성되는 지역과 일치하는 것이 좋습니다. |
videocloud |
목적 | 선택 과목 | Video Cloud 고객은 라이브 스트림에 사용할 비디오를 만들 수 있습니다. |
응답은 다음과 같습니다.
{
"id": "481ff4cf0bf74956bc2ec6e126588080",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [],
"state": "standby",
"label": "Test RG",
"live_dvr_sliding_window_duration": 1800,
"status": {
"us-west-2": null
},
"ad_insertion": true,
"outputs": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"26f8470f61374e608e27af9c1b3f7ff0": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8",
"description": "House Ads - 864b84f712ae40bca1510a8052b34312",
"type": "ads"
}
}
}
중복 그룹 가져 오기
다음 주소로GET
요청을 제출하여 모든 중복 그룹을 가져올 수 있습니다.
https://api.bcovlive.io/v1/redundantgroups
다음을 사용하여 응답을 필터링 할 수 있습니다. state
param. 허용되는 값은 다음과 같습니다.
cancelled
cancelling
deleting
disconnected
failed
finished
finishing
processing
standby
waiting
최대 1000까지의 정수로 설정할 수 있는page_size
매개 변수도 있습니다. 기본값은page_size
10입니다.
응답은 다음과 같습니다.
{
"redundant_groups": [
{
"id": "91c268a6ec5240d79a6004f4ccf0dc6f",
"account_id": "a95ac581551b4478b27910e5675db1f8",
"user_id": "c2691d4d039040be96c190a949d754a7",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [],
"state": "standby",
"created_at": 1594316624287,
"updated_at": 1594316624287,
"label": "Test Redundant Group",
"live_dvr_sliding_window_duration": 86400,
"status": {
"us-west-2": null
},
"outputs": {
"playback_url": "https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist_dvr.m3u8"
}
},
{
"id": "279ac36e4b4d48a3abbd3e1f98cd57aa",
"account_id": "a95ac581551b4478b27910e5675db1f8",
"user_id": "c2691d4d039040be96c190a949d754a7",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [],
"state": "standby",
"created_at": 1594323207015,
"updated_at": 1594323207015,
"label": "Test Redundant Group2",
"live_dvr_sliding_window_duration": 86400,
"status": {
"us-west-2": null
},
"outputs": {
"playback_url": "https://bcovlive-a.akamaihd.net/r279ac36e4b4d48a3abbd3e1f98cd57aa/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/r279ac36e4b4d48a3abbd3e1f98cd57aa/us-west-2/NA/playlist_dvr.m3u8"
}
}
]
}
중복 그룹에 라이브 작업 추가
중복 그룹을 생성한 후 다음 주소로POST
요청을 보내 작업을 추가할 수 있습니다.
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/jobs
라이브 작업 ID는 다음과 같이 요청 본문에 지정됩니다.
[
{
"job_id": "0b76bc73f92f46dc917bbe5061c0c633"
},
{
"job_id": "0ae5a4a71dc54b3181af0f98ee407c27"
}
]
작업 개체에 대한 몇 가지 추가 선택적 속성이 있습니다. 다음 표는 모든 필드를 보여줍니다.
필드 | 유형 | 필수? | 설명 |
---|---|---|---|
job_id |
끈 | 필수 | 그룹에 추가 할 작업의 ID입니다. playlist 또는streams 를 지정하지outputs 않으면 모두 사용됩니다. |
playlist |
끈 | 선택 과목 | 스트림의 출력으로 사용할 재생 목록의 레이블입니다. 만약에playlist 정의되고, streams ~ 해야 하다 BE 한정되지 않은 . |
streams |
배열 | 선택 과목 | 스트림의 출력으로 사용할 스트림 레이블 목록입니다. 만약에streams 정의되고, playlist ~ 해야 하다 BE 한정되지 않은 . |
이 요청에 대한 성공 응답은 중복 그룹 ID 만 반환합니다.
중복 그룹 상태 가져 오기
다음 주소로GET
요청을 제출하여 중복 그룹의 상태를 확인할 수 있습니다.
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}
응답은 다음과 같습니다.
{
"id": "481ff4cf0bf74956bc2ec6e126588080",
"processing_regions": [
{
"region": "us-west-2",
"probability": 1
}
],
"storage_regions": [
"us-west-2",
"us-east-1"
],
"jobs": [
{
"job_id": "0b76bc73f92f46dc917bbe5061c0c633",
"streams": [
"hls720p",
"hls540p",
"hls360p"
],
"state": "processing"
},
{
"job_id": "0ae5a4a71dc54b3181af0f98ee407c27",
"streams": [
"hls720p",
"hls540p",
"hls360p"
],
"state": "processing"
}
],
"state": "processing",
"created_at": 1568057414849,
"updated_at": 1568059153017,
"label": "Test RG",
"live_dvr_sliding_window_duration": 1800,
"status": {
"us-west-2": {
"SwitchDrift": 0,
"Ended": false,
"OnAir": "0b76bc73f92f46dc917bbe5061c0c633",
"Mode": "auto",
"InManifest": true,
"MediaSequence": 10,
"Healthiness": 0,
"Duration": 4,
"DiscontinuitySequence": 1,
"SourceChunk": {
"MediaSequence": 3639,
"Duration": 4,
"DiscontinuitySequence": 0,
"ProgramDateTime": "2019-09-09T19:59:36Z",
"LiveJobID": "0b76bc73f92f46dc917bbe5061c0c633"
},
"UpdatedAt": "2019-09-09T19:59:46Z",
"ProgramDateTime": "2019-09-09T19:59:36Z"
}
},
"ad_insertion": true,
"outputs": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"26f8470f61374e608e27af9c1b3f7ff0": {
"playback_url": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8",
"description": "House Ads - 864b84f712ae40bca1510a8052b34312",
"type": "ads"
}
}
}
}
리던던트 그룹의 각 처리 영역에는 영역별로 키가status
지정된 자체 오브젝트가 있습니다. 이 예에서는us_west_2
처리 영역에서on_air
작업이 수행되고 있음을 알 수0b76bc73f92f46dc917bbe5061c0c633
있습니다.
참고로 이 시점에서는 처리probability
영역과 관련된 데이터가 항상 존재하지만 향후 개선을 위해 데이터 모델에 포함되므로 해당 영역을 사용할1
재생 트래픽의 대략적인 비율을 나타내는 0과 1 사이의 확률을 가진 여러 처리 영역을 사용할 수 있습니다.
수동으로 큐 포인트 추가
중복성을 사용하여 라이브 스트림에 큐 포인트를 수동으로 추가하는 것은 일반 라이브 스트림에 큐 포인트를 추가하는 것과 매우 유사합니다. 중복 그룹에 대해 이 작업을 수행하려면 다음 주소로POST
요청하십시오.
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/cuepoint
다음과 같은 요청 본문을 포함합니다.
{
"ad_server_data": {
"subject": "wildlife"
},
"duration": 30,
"timecode": "09:23:18:05"
}
timecode
필드를 생략하면 큐 포인트가 즉시 삽입됩니다.
작업 장애 조치 강제
장애 조치는 Brightcove Live 시스템에 의해 자동으로 관리되며 사용자의 개입이 필요하지 않습니다. 하지만 어떤 이유로든 다른 작업으로 강제 페일오버하려는 경우 가장 간단한 방법은 해당on_air
작업의 인코더를 중지하는 것입니다.
API를 사용하여 다음을PUT
요청하여 페일오버를 강제할 수도 있습니다.
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/switch
요청 본문은 다음과 같습니다.
{
"mode": "manual",
"on_air": "0ae5a4a71dc54b3181af0f98ee407c27"
}
여기서mode
는manual
또는auto
(기본값) 이고 의on_air
값은보조작업 ID 중 하나입니다.
참고: 일단manual
모드에서 자동 작업 페일오버는 ~ 아니다발생하다. 너 ~ 해야 하다모드를 다시 설정auto
자동 장애 조치가 재개되도록 합니다. 본문에서 모드를 생략하고 요청에 force 쿼리 매개 변수를 추가하면 수동으로 전환하지 않고도 On-Air ?force=true
Job을 변경할 수 있습니다. 이렇게하면 서비스가 작업을 강제로 전환하지만 문제가 감지되면 언제든지 다시 전환 할 수 있습니다.
중복 스트림 종료
중복 스트림을 종료하는 방법에는 두 가지가 있습니다. 이중화 그룹은 설계상 암시적으로 SEP스트림입니다. 중복 그룹에서 모든 작업을 제거하여 중복 그룹을STANDBY
모드로 전환할 수 있습니다.
DELETE
요청을 사용하여 이 작업을 수행하려면:
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}/jobs/{job_id}
제거하려는 각 작업에 대해. 현재 진행 중인on_air
작업을 제거하려면?force=true
쿼리 매개 변수를 추가해야 한다는 점에 유의하십시오.
스트림을 종료하는 두 번째 방법은 다음 주소로DELETE
요청을 보내 중복 그룹을 완전히 삭제하는 것입니다.
https://api.bcovlive.io/v1/redundantgroups/{redundant_group_id}
제한 사항
- 라이브 리던던시할 수 없다 DRM 보호 라이브 스트림과 함께 사용할 수 있습니다.