서문
다음을 포함하여 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에서 재생 제한을 활용하는 라이브 작업을 생성할 수 있습니다.
- Create a Live Stream Using the Brightcove Live API 문서에서 라이브 스트림 생성에 대한 세부 정보를 살펴보십시오.
-
Studio에서 라이브 이벤트를 만들 때 고급 옵션 섹션을 확장합니다.
-
콘텐츠 암호화 에서 다음 중 하나를 선택합니다.
- AES-128
- DRM (디지털 권한 관리)
자세한 내용은고급 옵션 구성의 섹션라이브 모듈을 사용하여 라이브 이벤트 생성 및 관리문서.
-
재생 보호를 확장하려면 재생 제한 활성화 확인란을 선택합니다.
작업 요청에는 Video Cloud 비디오가 생성되고 라이브 작업에 연결되도록 하는
videocloud.video
속성이 포함되어야 합니다. 그만큼playback_rights_id
Video Cloud 비디오에서 속성을 업데이트하여 다음을 통해 재생 제한을 변경할 수 있습니다. CMS API .
라이브 API를 사용하여 라이브 작업 만들기
Brightcove Live API를 사용하여 재생 제한을 활용하는 라이브 작업을 만들 수 있습니다.
- 라이브 모듈 문서를 사용하여 라이브 이벤트 생성 및 관리 에서 라이브 스트림 생성에 대한 세부 정보를 살펴보십시오.
-
라이브 작업에 재생 제한을 추가하는 데 사용되는 새 필드를 검토합니다.
-
drm
객체:require_playback_token
(부울)- 라이센스 요청 시 재생 인증 JWT가 필요합니다.
check_playback_rights
(부울)- 라이센스 요청 시 재생 인증 JWT가 필요합니다. 동영상 또는 JWT와 연결된 재생 권한 ID를 사용하여 제한을 적용합니다.
-
videocloud.video
객체:playback_rights_id
(끈)- 지정된 재생 제한을 비디오와 연결합니다.
-
-
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와 동일합니다. 다음을 참조하십시오.
- 재생 권한 구현 문서의 플레이어 섹션 구성