라이브 중복성 사용

중복 그룹을 사용하면 2개 이상의 Live Job을 자동 장애 조치 기능이 있는 단일 스트림으로 결합하여 중단없이 안정적으로 재생할 수 있습니다. 이 안내서에서는 중복 그룹 생성, 작업 추가 및 Live API를 사용하여 장애 조치 강제 수행을 안내합니다.

서문

Brightcove Live의 중복 기능은 첫 번째 스트림이 작동을 중지하는 경우 Live가 자동으로 장애 조치되는 백업 스트림을 생성하여 라이브 이벤트의 안정적인 성능을 보장하는 데 도움이 됩니다.

Live API에 대한 모든 요청에는 다음 헤더가 필요합니다.

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"
    }

여기서modemanual또는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 보호 라이브 스트림과 함께 사용할 수 있습니다.