Encrypt the Stream

최신 업데이트:2024-01-02 11:10:15

이 문서는 Media Acceleration Live Broadcast API를 사용하여 지정된 스트림을 DRM 암호화하는 방법을 설명합니다.

시작하기 전에

다음 작업을 완료하십시오:

  1. DRM 기능이 활성화되어 있는지 확인합니다. 설정에 도움이 필요하면 고객 서비스에 문의하십시오.
  2. DRM 재생에 필요하므로 HTTPS를 활성화합니다. HTTP 스트림은 재생 실패의 원인이 될 수 있습니다.
  3. 암호화하기 전에 실시간 스트림을 생성합니다. 암호화를 수행하려면 애플리케이션 이름과 스트림 이름이 필요합니다.

스트림 암호화 요청 예시

다음 curl 스크립트를 실행하여 https://drmtest-pull.cdnetworks.com/live/drmtest.mpd 스트림을 암호화합니다.

curl -i --url 'http://ca.haplat.net/wslive/drm/register.action?n=accountId&r=random&k=token' \
-X 'POST' \
-H 'Content-Type: application/json' \
-d '{
    "url": "https://drmtest-pull.cdnetworks.com/live/drmtest.mpd",
    "encryptType": "drm",
    "action": "add",
    "expire": "1682819355"
}'

위의 요청은 이름이 ‘drmtest’, 애플리케이션 이름이 'live’인 스트림을 암호화했습니다. 암호화된 후 이 DASH 스트림은 Widevine과 PlayReady로 보호됩니다.
스트림이 암호화되었는지 확인하기 위해 HLS 또는 DASH 매니페스트 파일을 확인할 수 있습니다. 이 예에서는 DASH .mpd 파일을 살펴볼 것입니다. 매니페스트 파일에는 라이선스 챌린지를 생성하는 데 필요한 개체가 포함된 ContentProtection 헤더가 포함됩니다. 다음은 샘플(잘림)입니다:

</ContentProtection>
      <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
          <cenc:pssh>AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEAnnEHpafEPZng9h+r1lDBZI49yVmwY=</cenc:pssh>
</ContentProtection>

파라미터 및 헤더

요청에는 다음 헤더 및 파라미터가 필요합니다:

아이템 유형 필수 여부 설명
content-Type Header application/json
n Param 계정 이름입니다.
k Param 최대 길이가 13인 고유한 임의 문자열, 타임스탬프 사용을 권장합니다.
r Param MD5 인증 값입니다.
k = md5 (r + apikey) 즉, ‘k’ 값을 가져오려면 문자열 ‘r’ 끝에 문자열 apikey를 추가한 후 결과 문자열에 대해 MD5 계산을 수행합니다.
참고: apikey는 고객 서비스에서 검색할 수 있습니다.
예를 들어,
1. 요청(Request) 및 apikey=012f37a3f2952
2. 문자열 r=1409284800
3을 무작위로 생성합니다. apikey를 ‘r’ 끝에 추가하여 문자열 '1409284800012f37a3f2952’
4를 생성합니다. 새 문자열의 MD5 해시를 계산하여 ‘k’ 값을 가져옵니다, 즉 ‘b9fed80be752551834eec3e52fa94115’

요청 본문

요청 본문에 다음 항목을 포함합니다:

아이템 유형 필수 여부 설명
url String 이 필드는 암호화할 스트림의 URL을 나타냅니다. 예를 들어:
https://poctest-push.8686c.com/live/dashdrm.mpd
다음에 참고하십시오:
>1. DRM을 사용하기 전에 HTTPS를 활성화해야 합니다. HTTP 기반 URL을 암호화에 사용할 수 있지만 DRM 시스템은 HTTPS가 필요하기 때문에 재생이 실패할 수 있습니다.
2. 오리진 스트림이 암호화되면 각 해상도가 자동으로 암호화되기 때문에 스트림의 모든 해상도를 암호화할 필요가 없습니다.
encryptType String ‘encryptType’ 필드는 항상 'drm’으로 설정해야 합니다.
action String 아니오 ‘action’ 필드는 ‘add’, ‘del’ 또는 ‘update’ 값 중 하나를 가질 수 있습니다.
- add: 새 스트림에 대한 DRM을 설정합니다.
- del: 비활성화합니다. 기존 스트림에 대한 DRM.
- 업데이트: 기존 스트림에 대한 암호화 정보를 업데이트합니다.
expire String 아니오 DRM 만료 날짜는 Linux 타임스탬프 형식으로 제공해야 합니다. 이 필드를 지정하지 않으면 이 스트림의 DRM이 만료되지 않습니다.

응답 예시

{
	"msg": true,
	"code": 200,
	"callTime": "2022-12-07 21:50:16"
}

오류 코드

오류 코드 메시지 Detail
400 인증 파라미터가 없습니다. 인증 파라미터 ‘n’, ‘k’ 또는 'r’이 없습니다.
400 암호화 유형이 잘못되었습니다. ‘encryptType’ 파라미터가 'drm’으로 지정되지 않았습니다.
400 작업 방법 오류입니다. 지원되지 않는 작업 유형입니다. ‘add’, ‘del’ 또는 'update’만 지원됩니다.
400 콘텐츠가 시스템에 이미 추가되었습니다. 콘텐츠가 이미 암호화되어 다시 암호화할 수 없습니다.
400 스트림이 레코드에 없어 삭제하지 못했습니다. 삭제하려는 스트림에 대한 DRM 정보를 찾을 수 없습니다.
403 인증에 실패했습니다. 인증 파라미터 오류 또는 API 요청 권한이 없습니다.
404 404를 찾을 수 없습니다. API 요청 URL이 정확하지 않습니다.
405 요청 방법 오류입니다. POST 요청이 아닙니다.
500 내부 서버 오류입니다. 서비스 예외입니다.
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.