PallyCon DRM 테스트
PallyCon DRM 연동을 TV SDK에서 빠르게 검증할 수 있는 테스트 엔드포인트를 제공합니다. 별도의 DRM 라이선스 발급 없이 Widevine(Android TV)과 FairPlay(tvOS)를 즉시 테스트할 수 있습니다.
주의: 테스트 엔드포인트는 PallyCon DEMO 환경을 사용하며, 프로덕션 용도로 사용할 수 없습니다. DRM은 반드시 실기기에서 테스트해야 합니다 (에뮬레이터/시뮬레이터 미지원).
테스트 엔드포인트
아래 API를 호출하면 Widevine, FairPlay, PlayReady DRM이 설정된 플레이어 옵션 JSON을 응답합니다.
GET https://vpe-api.sgrsoft.com/api/drmTestPallycon응답 예시
{
"playlist": [
{
"drm": {
"com.apple.fps": {
"src": "https://contents.pallycon.com/bunny/hls/master.m3u8",
"certificateUri": "https://license-global.pallycon.com/ri/fpsKeyManager.do?siteId=DEMO",
"licenseUri": "https://license-global.pallycon.com/ri/licenseManager.do",
"licenseRequestHeader": { ... }
},
"com.widevine.alpha": {
"src": "https://contents.pallycon.com/bunny/stream.mpd",
"licenseUri": "https://license-global.pallycon.com/ri/licenseManager.do",
"licenseRequestHeader": { ... }
}
},
"description": {
"title": "Pallycon 테스트 영상",
"created_at": "2024.07.13"
}
}
],
"autostart": true
}플레이어 연동
엔드포인트에서 받은 응답을 그대로 플레이어 옵션으로 전달하면 DRM 재생이 시작됩니다. TV 플랫폼에 따라 Widevine(Android TV, Fire TV) 또는 FairPlay(Apple TV)가 자동 선택됩니다.
import React, { useEffect, useState } from 'react';
import { View, StyleSheet } from 'react-native';
import { VpePlayer } from '@sgrsoft/vpe-reactnative-tv-sdk';
const DRM_API = 'https://vpe-api.sgrsoft.com/api/drmTestPallycon';
export default function PallyconDrmTest() {
const [options, setOptions] = useState<any>(null);
useEffect(() => {
fetch(DRM_API)
.then((res) => res.json())
.then((data) => setOptions(data));
}, []);
if (!options) {
return <View style={styles.container} />;
}
return (
<View style={styles.container}>
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={options}
onBack={() => { /* navigation.goBack() */ }}
/>
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, backgroundColor: '#000' },
});정적 옵션으로 직접 설정
API 호출 없이 DRM 옵션을 코드에 직접 작성할 수도 있습니다.
import React from 'react';
import { View, StyleSheet } from 'react-native';
import { VpePlayer } from '@sgrsoft/vpe-reactnative-tv-sdk';
export default function PallyconStaticDrm() {
return (
<View style={styles.container}>
<VpePlayer
accessKey="YOUR_ACCESS_KEY"
options={{
playlist: [
{
drm: {
'com.apple.fps': {
src: 'https://contents.pallycon.com/bunny/hls/master.m3u8',
certificateUri: 'https://license-global.pallycon.com/ri/fpsKeyManager.do?siteId=DEMO',
licenseUri: 'https://license-global.pallycon.com/ri/licenseManager.do',
licenseRequestHeader: {
'Content-type': 'application/x-www-form-urlencoded',
'pallycon-customdata-v2': '{FairPlay Token}',
},
},
'com.widevine.alpha': {
src: 'https://contents.pallycon.com/bunny/stream.mpd',
licenseUri: 'https://license-global.pallycon.com/ri/licenseManager.do',
licenseRequestHeader: {
'pallycon-customdata-v2': '{Widevine Token}',
},
},
},
description: {
title: 'Pallycon 테스트 영상',
created_at: '2024.07.13',
},
},
],
autostart: true,
}}
onBack={() => { /* navigation.goBack() */ }}
/>
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, backgroundColor: '#000' },
});DRM 유형별 TV 플랫폼 지원
| DRM | 프로토콜 | 지원 플랫폼 |
|---|---|---|
| com.widevine.alpha | DASH | Android TV, Fire TV |
| com.apple.fps | HLS | Apple TV (tvOS) |