5. 오프라인 재생
로컬 디스크에 다운로드가 완료된 콘텐츠를 재생하는 방법을 설명합니다.
오프라인 상태에서는 온라인 스트리밍 재생 시 사용하는 원격 URL 대신 미디어 콘텐츠 키(MediaContentKey, mck) 기반 데이터 소스를 사용합니다.
이 문서의 모든 예제 코드는 공식 샘플 앱인 kollus_player_v2_android를 바탕으로 작성되었습니다.
오프라인 재생
스트리밍 재생 시 사용하는 setDataSourceByUrl 대신, 로컬 미디어 키를 지정하는 setDataSourceByKey 메서드를 사용하여 오프라인 재생을 시작합니다.
// VideoView.openVideo()
String extraDrmParam = null;
if (mUri != null) {
// 스트리밍 재생 (온라인 환경)
mMediaPlayer.setDataSourceByUrl(mUri.toString(), extraDrmParam);
} else if (mKollusContent != null) {
// 오프라인 재생 (다운로드된 콘텐츠)
mMediaPlayer.setDataSourceByKey(
mKollusContent.getKollusContent().getMediaContentKey(),
extraDrmParam);
}
mMediaPlayer.prepareAsync();
전체 연동 흐름
multiStorage.getDownloadKollusContent(localPath)또는getDownloadList()메서드를 통해MultiKollusContent객체를 획득합니다.- VideoView 컴포넌트에
setKollusContent(content)메서드로 획득한 객체를 연결(Attach)합니다. - 내부적으로
setDataSourceByKey(mck, extraDrmParam)와prepareAsync()가 순차적으로 호출됩니다. - 재생 준비 과정에서 SDK가 로컬 DRM 검증을 자동으로 수행합니다. 만약 라이선스가 만료되었거나 권한이 없다면 플레이어가 정지되며
onDRMInfo콜백으로 에러 코드를 통지합니다. (참고: 8. 다운로드 이벤트/콜백)
오프라인 DRM 검증 조건
네트워크가 연결되지 않은 오프라인 환경에서도 DRM 검증을 통과하려면, 다운로드 파일 내부에 주입된 아래 3가지 DRM 보안 제한 조건을 모두 만족해야 합니다.
- 만료 일시 (
DRMExpireDate): 디바이스의 현재 시각이 라이선스에 지정된 만료 일시 이전이어야 합니다. - 재생 횟수 (
DRMExpireCount): 현재까지의 실제 재생 횟수가 설정된 최대 제한 횟수(DRMExpireCountMax) 미만이어야 합니다. - 잔여 시간 (
DRMExpirePlayTime): 잔여 재생 허용 시간이 0보다 커야 합니다.
위 3가지 조건 중 단 하나라도 위반될 경우 로컬 재생이 실패하며, 정상 작동을 위해서는 다시 네트워크를 연결하여 라이선스를 갱신해야 합니다. (참고: 6. DRM 라이선스 갱신)