라이브 스트림의 재생 제한

이 항목에서는 라이브 스트림에서 재생 제한을 사용하는 방법을 배웁니다.

서문

다음을 포함하여 DRM 및/또는 AES-128 암호화가 제공하는 보호를 확장하기 위해 라이브 작업에 대해 재생 제한을 활성화할 수 있습니다.

  • 특정 사용자 에이전트로 재생 제한
  • IP 주소 수 제한
  • 총 사용자 제한

포괄적인 제한 세트의 경우 Playback Rights API를 사용하여 구성할 수 있습니다. 이 경우playback_rights_id비디오와 연결합니다. 자세한 내용은 개요의 자산 수준 제한 섹션을 참조하세요. Brightcove 재생 제한 문서.

런타임 제한의 경우 JWT(JSON 웹 토큰) 클레임을 지정할 수 있습니다. 이러한 제한에는 스트림 동시성 및 장치 제한이 포함됩니다. 자세한 내용은 개요의 런타임 제한 섹션을 참조하세요. Brightcove 재생 제한 문서.

라이브 스트림을 사용하면 사용자의 DRM CRT를 재정의할 수도 있습니다. 자세한 내용은 개요의 라이센스 키 보호 섹션을 참조하십시오. Brightcove 재생 제한 문서.

어떤 모드를 선택하든 작업 요청에는 Video Cloud 비디오가 생성되고 실시간 작업에 연결되도록 하는videocloud.video속성이 포함되어야 합니다. 그만큼playback_rights_id Video Cloud 비디오에서 속성을 업데이트하여 다음을 통해 재생 제한을 변경할 수 있습니다. CMS API .

또한 적절한 클레임으로 JWT(JSON Web Token)를 생성 해야 합니다. JWT는 모든 라이센스 서버 요청에 포함되어야합니다. 직접 플레이어를 구현하는 경우 이 값을BCOV-Auth헤더 또는bcov_auth쿼리 파라미터 (DRM 토큰 외에) 로 전달해야 합니다.

Studio를 사용하여 라이브 작업 만들기

Video Cloud Studio에서 재생 제한을 활용하는 라이브 작업을 생성할 수 있습니다.

  1. Create a Live Stream Using the Brightcove Live API 문서에서 라이브 스트림 생성에 대한 세부 정보를 살펴보십시오.
  2. Studio에서 라이브 이벤트를 만들 때 고급 옵션 섹션을 확장합니다.

  3. 콘텐츠 암호화 에서 다음 중 하나를 선택합니다.

    • AES-128
    • DRM (디지털 권한 관리)
    AES-128 암호화
    AES-128 암호화

    자세한 내용은고급 옵션 구성의 섹션라이브 모듈을 사용하여 라이브 이벤트 생성 및 관리문서.

  4. 재생 보호를 확장하려면 재생 제한 활성화 확인란을 선택합니다.

    재생 제한 활성화
    재생 제한 활성화

    작업 요청에는 Video Cloud 비디오가 생성되고 라이브 작업에 연결되도록 하는videocloud.video속성이 포함되어야 합니다. 그만큼playback_rights_id Video Cloud 비디오에서 속성을 업데이트하여 다음을 통해 재생 제한을 변경할 수 있습니다. CMS API .

라이브 API를 사용하여 라이브 작업 만들기

Brightcove Live API를 사용하여 재생 제한을 활용하는 라이브 작업을 만들 수 있습니다.

  1. 라이브 모듈 문서를 사용하여 라이브 이벤트 생성 및 관리 에서 라이브 스트림 생성에 대한 세부 정보를 살펴보십시오.
  2. 라이브 작업에 재생 제한을 추가하는 데 사용되는 새 필드를 검토합니다.

    • drm객체:

      require_playback_token (부울)
      라이센스 요청 시 재생 인증 JWT가 필요합니다.
      check_playback_rights (부울)
      라이센스 요청 시 재생 인증 JWT가 필요합니다. 동영상 또는 JWT와 연결된 재생 권한 ID를 사용하여 제한을 적용합니다.
    • videocloud.video객체:

      playback_rights_id (끈)
      지정된 재생 제한을 비디오와 연결합니다.
  3. Brightcove Live API를 사용하여 라이브 작업을 생성합니다.

    샘플 요청 및 응답

    다음은 재생 제한이 있는 라이브 작업을 생성하기 위한 샘플 라이브 API 요청 본문입니다.

    샘플 요청 본문

    {
      "live_stream": true,
      "region": "us-west-2",
      "reconnect_time": 300,
      "ad_insertion": false,
      "static": false,
      "drm": {
        "modes":["all"],
        "require_playback_token": true,
        "check_playback_rights": true
      },
      "encryption": {
        "check_playback_rights": true,
        "method": "aes-128",
        "type": "internal",
        "key": "24432646294A404E635266556A586E32"
      },
      "live_dvr_sliding_window_duration": 300,
      "videocloud": {
        "live_to_vod": true,
        "video": {
            "name": "Test EPA",
            "description": "",
            "long_description": "",
            "tags": [],
            "reference_id": "",
            "link": {
                "url": "",
                "text": ""
            },
            "custom_fields": {}
          }
      },  
      "outputs": [{
          "label": "hls720p",
          "live_stream": true,
          "height": 720,
          "video_bitrate": 2000,
          "segment_seconds": 6,
          "keyframe_interval": 60
      },
      {
          "label": "hls480p",
          "live_stream": true,
          "height": 480,
          "video_bitrate": 1000,
          "segment_seconds": 6,
          "keyframe_interval": 60
      }
    }

    샘플 응답

    강조 표시된 줄에는 추가해야id하는 비디오가 포함됩니다. playback_rights_id

    {
      "id": "f47487cf81f84764b280fbfaefed524a",
      "outputs": [
          {
              "id": "0-f47487cf81f84764b280fbfaefed524a",
              "label": "hls720p"
          },
          {
              "id": "1-f47487cf81f84764b280fbfaefed524a",
              "label": "hls480p"
          },
          {
              "id": "2-f47487cf81f84764b280fbfaefed524a",
              "playlist_type": "defaultS3",
              "type": "playlist",
              "drm": {
                  "token": "eyJh...axy8",
                  "modes": [
                      {
                          "type": "fairplay",
                          "key_system": "com.apple.fps.1_0",
                          "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/fp?token=eyJh...axy8",
                          "certificate_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/cert/fp?token=eyJh...axy8",
                          "filename": "playlist_fp.m3u8",
                          "dvr_filename": "playlist_fp_dvr.m3u8",
                          "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp.m3u8",
                          "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp_dvr.m3u8",
                          "playback_added_cdns": []
                      },
                      {
                          "type": "widevine",
                          "key_system": "com.widevine.alpha",
                          "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/wv?token=eyJh...axy8",
                          "filename": "playlist_wv.m3u8",
                          "dvr_filename": "playlist_wv_dvr.m3u8",
                          "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv.m3u8",
                          "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv_dvr.m3u8",
                          "playback_added_cdns": []
                      },
                      {
                          "type": "playready",
                          "key_system": "com.microsoft.playready",
                          "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/pr?token=eyJh...axy8",
                          "filename": "playlist.mpd",
                          "dvr_filename": "playlist_dvr.mpd",
                          "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist.mpd",
                          "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_dvr.mpd",
                          "playback_added_cdns": []
                      }
                  ],
                  "token_expires_in": 43200,
                  "require_playback_token": true,
                  "check_playback_rights": true
              }
          }
      ],
      "stream_url": "rtmp://ep8-usw2.a-live.io:1935/f47487cf81f84764b280fbfaefed524a",
      "stream_name": "alive",
      "static": false,
      "event_length": 93600,
      "job_videocloud_asset_id": "70701312966202",
      "encryption": {},
      "drm_enabled": true,
      "drm": {
        "token": "eyJh...axy8",
        "modes": [
          {
            "type": "fairplay",
            "key_system": "com.apple.fps.1_0",
            "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/fp?token=eyJhb...axy8",
            "certificate_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/cert/fp?token=eyJhb...axy8",
            "filename": "playlist_fp.m3u8",
            "dvr_filename": "playlist_fp_dvr.m3u8",
            "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp.m3u8",
            "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_fp_dvr.m3u8",
            "playback_added_cdns": []
          },
          {
            "type": "widevine",
            "key_system": "com.widevine.alpha",
            "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/wv?token=eyJhb...axy8",
            "filename": "playlist_wv.m3u8",
            "dvr_filename": "playlist_wv_dvr.m3u8",
            "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv.m3u8",
            "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_wv_dvr.m3u8",
            "playback_added_cdns": []
          },
          {
            "type": "playready",
            "key_system": "com.microsoft.playready",
            "license_url": "https://license-proxy-qa.alive.us-west-2.qa.deploys.brightcove.com/lic/pr?token=eyJh...axy8",
            "filename": "playlist.mpd",
            "dvr_filename": "playlist_dvr.mpd",
            "playback_url": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist.mpd",
            "playback_url_dvr": "https://playback-qa.a-live.io/f47487cf81f84764b280fbfaefed524a/us-west-2/NA/playlist_dvr.mpd",
            "playback_added_cdns": []
          }
        ],
        "token_expires_in": 43200,
        "require_playback_token": true,
        "check_playback_rights": true
      }
    }

라이브 작업에 제한 사항 추가

라이브 스트림을 만든 후 CMS API 를 사용하여 라이브 작업용으로 만든 비디오에 재생 제한을 추가할 수 있습니다.

CMS API 요청

동영상에 재생 권한 ID를 추가하려면비디오 업데이트다음 요청 본문을 사용하여 CMS API에 대한 요청:

{
	"playback_rights_id": "your playback_rights_id"
}

스트림 제공

Brightcove 웹 플레이어 또는 Brightcove 기본 플레이어 SDK 중 하나를 사용하여 라이브 스트림을 제공하는 경우 재생 제한에 대한 구현은 VOD와 동일합니다. 다음을 참조하십시오.