콘텐츠 인증

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

콘텐츠 인증에서는 스크립트 코드를 수정하여 재생 소스에 Secure Token을 적용하는 방법과 MultiDRM을 설정하는 방법을 설명합니다.

token 속성으로 재생 소스에 Secure Token을 적용하여 OneTimeUrl을 지원할 수 있습니다. 또한, player.tokenChange 속성으로 동영상 재생 중 중단 없이 Secure Token을 교체할 수 있습니다.

참고

Secure Token에 관한 자세한 내용은 CDN+ 사용 가이드를 참고해 주십시오.

예제는 다음과 같습니다.

// 동영상(MP4)
new ncplayer('video1', {
  autostart: true,
  playlist: [
    {
      file: 'https://CDN도메인/example_video_01.mp4',
    },
  ],
  token: 'token=st=1675320871~exp=1675320901~acl=....', // Secure Token
});

// 토큰 교체
player.tokenChange('token=st=1675320871~exp=1675320901~acl=....') // 재생 중 신규 토큰으로 교체
JavaScript

playlist.drm 속성으로 MultiDRM을 설정할 수 있습니다. 예제는 다음과 같습니다.

let player;

document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{
        playlist: [
            {
                drm:{
                    'com.apple.fps':{
                        certificateUrl: '{Certificate URL}',
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'Content-type': 'application/x-www-form-urlencoded',
                            'pallycon-customdata-v2':'{FairPlay용 Token}'
                        },
                        src : '{hls url}'
                    },
                    'com.widevine.alpha':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{Widevine용 Token}'
                        },
                        src : '{dash url}'
                    },
                    'com.microsoft.playready':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{PlayReady용 Token}'
                        },
                        src : '{dash url}'
                    },
                },
                poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png',
                description: {
                    title: "네이버클라우드",
                    create_at: "2022-12-31",
                    profile_name: "Naver Cloud Platform",
                    profile_image: "https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png
                },
            }
        ],
        controlBtn: {
            play: true,
            fullscreen: true,
            volume: true,
            times: true,
            pictureInPicture: true,
            setting: true,
            subtitle: true
        },
        autostart: false
    });
});
JavaScript
참고
  • MultiDRM을 사용하려면 HLS, DASH 두 가지를 모두 지원하도록 VOD Station 서비스에서 두 개의 채널로 구성해야 합니다.
  • MultiDRM은 SSL/TSL이 적용된 https 환경에서만 작동합니다.
  • MultiDRM은 Widevine, PlayReady, FairPlay(FPS)를 지원합니다.
  • Video Player Enhancement 서비스는 Pallycon MultiDRM을 공식 지원합니다.
  • DRM 기능을 사용하려면 사전에 외부 DRM 공급사와 계약해야 합니다.
    • DRM 유형
      • Widevine: Google에서 제공하는 DRM 기술 규격으로, Common Encryption 규격에 따라 AES-128 방식으로 암호화합니다.
      • PlayReady: Microsoft에서 제공하는 DRM 기술 규격으로, Common Encryption 규격에 따라 AES-128 방식으로 암호화합니다.
      • FairPlay: Apple에서 제공하는 DRM 기술 규격으로, 각각의 HLS 세그먼트를 Sample-AES 방식으로 암호화합니다.
    • 지원 현황
      브라우저 Widevine PlayReady FairPlay
      Internet Explorer 11+ on Windows 8.1+) X O
      (MPEG-DASH)
      X
      Microsoft Edge (Windows 10+) X O
      (MPEG-DASH)
      X
      Chrome (35+ on Windows 7.0+, 57+ on Android 4.4+) O
      (MPEG-DASH)
      X X
      Firefox (47+ on Windows 7.0+) O
      MPEG=DASH
      X X
      Safari (8+ on Mac OS 10.10+, 11.2+ on iOS 11.2+) X X O
      (HLS)
  • Video Player Enhancement 서비스는 사용 중인 브라우저가 지원하는 DRM에 따라 상황에 맞는 재생 소스(HLS 또는 DASH)를 자동으로 선택합니다.

Video Player Enhancement 서비스와 One Click Multi DRM 서비스를 연동하여 DRM을 적용할 수 있습니다.
FPS Certificate 및 라이선스 발급을 요청하기 위한 Endpoint(엔드포인트) 및 요청 헤더를 확인해 주십시오.

참고
  • One Click Multi DRM 서비스와의 연동은 Video Player Enhancement 버전 1.1.1 이상부터 가능합니다.
  • Apple FairPlay의 경우 FPS Certificate와 라이선스의 시그니처(X-NCP-APIGW-SIGNATURE-V2)를 각각 생성해야 합니다. 시그니처 생성에 관한 자세한 내용은 시그니처 생성 가이드를 참고해 주십시오.

FPS Certificate 요청(Apple FairPlay 전용)

FPS Certificate를 요청하기 위한 엔드포인트 및 요청 헤더는 다음과 같습니다.

  • Endpoint
    GET https://multi-drm.apigw.ntruss.com/api/v1/license/fairplay
    
    JavaScript
  • 요청 헤더
    항목 필수 여부 설명
    X-NCP-REGION_CODE O 이용 중인 서비스 리전 코드
    • 한국: KR
    • 싱가포르: SGN
    • 미국: USWN
    • 일본: JPN
    • 홍콩: HK
    • 독일: DEN
    X-NCP-IAM-ACCESS-KEY O 포털 또는 Sub Account에서 발급받은 Access Key ID
    X-NCP-APIGW-TIMESTAMP O 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며, API Gateway 서버와 시간 차가 5분 이상 나는 경우에는 유효하지 않은 요청으로 간주
    X-NCP-APIGW-SIGNATURE-V2 O Access Key ID 값과 Secret Key로 암호화한 서명으로, HMAC 암호화 알고리즘은 HmacSHA256 사용

라이선스 발급 요청(FairPlay, Widevine, PlayReady 공용)

라이선스 발급을 요청하기 위한 엔드포인트 및 요청 헤더는 다음과 같습니다.

  • Endpoint
    POST https://multi-drm.apigw.ntruss.com/api/v1/license
    
    JavaScript
  • 요청 헤더
    항목 필수 여부 설명
    X-DRM-TOKEN O One Click Multi DRM 라이선스 발급에 필수 데이터가 포함된 암호화된 토큰값
    X-NCP-REGION_CODE O 이용 중인 서비스 리전 코드
    • 한국: KR
    • 싱가포르: SGN
    • 미국: USWN
    • 일본: JPN
    • 홍콩: HK
    • 독일: DEN
    X-NCP-IAM-ACCESS-KEY O 포털 또는 Sub Account에서 발급받은 Access Key ID
    X-NCP-APIGW-TIMESTAMP O 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며, API Gateway 서버와 시간 차가 5분 이상 나는 경우에는 유효하지 않은 요청으로 간주
    X-NCP-APIGW-SIGNATURE-V2 O Access Key ID 값과 Secret Key로 암호화한 서명으로, HMAC 암호화 알고리즘은 HmacSHA256 사용

예제

One Click Multi DRM 적용을 위한 Apple FairPlay 및 Widevine/PlayReady 예제는 다음과 같습니다.

  • Apple FairPlay
    document.addEventListener('DOMContentLoaded',  async ()=> {
        await ncplayerDRM('myElement',{
            playlist: [
                {
                    drm:{
                        'com.apple.fps':{
                            certificateUri: '{FPS Certificate Endpoint}',
                            certificateRequestHeader:{
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp,
                                'X-NCP-APIGW-SIGNATURE-V2': signature,		 
                            },
                            licenseUri : '{License Endpoint}',
                            licenseRequestHeader:{
                                'X-DRM-TOKEN': '{One Click Multi DRM FPS TOKEN}',
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp2,
                                'X-NCP-APIGW-SIGNATURE-V2': signature2,		 
                            },
                            src : 'http://example.com/index.m3u8'
                        }
                    },
                    poster: 'http://example.com/myVideoThumb.png',
                }
            ],
            autostart: true
        });
    });
    
    JavaScript
  • Widevine/PlayReady
    document.addEventListener('DOMContentLoaded',  async ()=> {
        await ncplayerDRM('myElement',{
            playlist: [
                {
                    drm:{
                        'com.widevine.alpha':{
                            licenseUri : '{License Endpoint}',
                            licenseRequestHeader:{
                                'X-DRM-TOKEN': '{One Click Multi DRM WIDEVINE TOKEN}',
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp2,
                                'X-NCP-APIGW-SIGNATURE-V2': signature2,		 
                            },
                            src : 'http://example.com/index.mpd'
                        },
                        'com.microsoft.playready':{
                            licenseUri : '{License Endpoint}',
                            licenseRequestHeader:{
                                'X-DRM-TOKEN': '{One Click Multi DRM PLAYREADY TOKEN}',
                                'X-NCP-REGION_CODE': 'KR',
                                'X-NCP-IAM-ACCESS-KEY': accessKey,
                                'X-NCP-APIGW-TIMESTAMP': timestamp2,
                                'X-NCP-APIGW-SIGNATURE-V2': signature2,		 
                            },
                            src : 'http://example.com/index.mpd'
                        },
                    poster: 'http://example.com/myVideoThumb.png',
                    }
                }
            ],
            autostart: true
        });
    });
    
    JavaScript

스크립트 코드를 작성하여 DRM 테스트를 진행할 수 있습니다.

참고

DRM 테스트를 진행하려면 기본 플레이어 실행 스크립트(ncplayer())가 아닌 별도의 실행 스크립트(ncplayerDRM())를 이용해야 합니다.

// DRM 전용 스크립트 코드를 이용합니다.
// DOM이 완전히 로드되고 실행해야 DRM이 에러 없이 실행됩니다.
document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{});
})
JavaScript

Widevine/PlayReady

Widevine 또는 PlayReady 유형의 DRM을 테스트하는 스크립트는 다음과 같습니다.

참고
  • Widevine 또는 PlayReady DRM 테스트를 위해 다음 정보가 필요합니다.
    • DASH 재생 소스의 URL
    • DRM 토큰 값
  • Widevine은 Chrome 브라우저, PlayReady는 Windows OS Edge 브라우저에서 테스트할 수 있습니다.
document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{
        playlist: [
            {
                drm:{
                    'com.widevine.alpha':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{Token}'
                        },
                        src : '{dash url}'
                    },
                    'com.microsoft.playready':{
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'pallycon-customdata-v2':'{Token}'
                        },
                        src : '{dash url}'
                    },
                },
                poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png',
            }
        ],
    });
});
JavaScript

FairPlay(FPS)

FairPlay 유형의 DRM을 테스트하는 스크립트는 다음과 같습니다.

참고
  • FairPlay DRM 테스트를 위해 다음 정보가 필요합니다.
    • HLS 재생 소스의 URL
    • Certificate URL(인증 URL)
    • DRM 토큰 값
  • Mac OS Safari 브라우저에서 테스트할 수 있습니다.
document.addEventListener('DOMContentLoaded',  async ()=> {
    await ncplayerDRM('video1',{
        playlist: [
            {
                drm:{
                    'com.apple.fps':{
                        certificateUrl: '{Certificate URL}',
                        licenseUri : 'https://license-global.pallycon.com/ri/licenseManager.do',
                        licenseRequestHeader:{
                            'Content-type': 'application/x-www-form-urlencoded',
                            'pallycon-customdata-v2':'{Token}'
                        },
                        src : '{hls url}'
                    },
                },
                poster: 'https://nnbkegvqsbcu5297614.cdn.ntruss.com/profile/202207/ae73f3a32b49205fafdc3303c7f0c0b8.png',
            }
        ],
    });
});
JavaScript