NetStream 클래스의 DRM 관련 멤버 및 이벤트
Flash Player 10.1 이상, Adobe AIR 1.0 이상
NetStream 클래스는 Flash Player 또는 AIR 응용 프로그램과 Flash Media Server 또는 로컬 파일 시스템 간의 단방향 스트리밍 연결을 제공합니다. NetStream 클래스는 점진적 다운로드도 지원합니다. NetStream 객체는 NetConnection 객체 안에 있는 채널입니다. NetStream 클래스는 다음 네 가지 DRM 관련 이벤트를 전달합니다.
이벤트
|
설명
|
drmAuthenticate
(AIR만 해당)
|
DRMAuthenticateEvent 클래스로 정의되며 이 이벤트는 NetStream 객체가 재생 전에 인증을 위해 사용자 자격 증명이 필요한 보호된 내용을 재생하려고 할 때 전달됩니다.
이 이벤트의 속성에는 사용자 자격 증명을 가져오고 설정할 때 사용할 수 있는 header, usernamePrompt, passwordPrompt 및 urlPrompt 속성이 포함됩니다. 이 이벤트는 NetStream 객체가 유효한 사용자 인증서를 가져올 때까지 반복해서 발생합니다.
|
drmError
|
DRMErrorEvent 클래스로 정의되며 보호된 내용을 재생하려고 시도하는 NetStream 객체에 DRM 관련 오류가 발생할 때 전달됩니다. 예를 들어 사용자 인증이 실패하면 DRM 오류 이벤트 객체가 전달됩니다. 이 오류는 사용자가 해당 내용을 볼 수 있는 권한을 구입하지 않았기 때문에 발생할 수 있습니다. 또한 내용 공급자가 보기 응용 프로그램을 지원하지 않기 때문에 발생할 수도 있습니다.
|
drmStatus
|
DRMStatusEvent 클래스로 정의되며 보호된 내용이 재생을 시작할 때 전달됩니다(사용자가 인증되었고 해당 내용을 재생하도록 권한이 부여된 경우). DRMStatusEvent 객체에는 바우처와 관련된 정보가 포함되어 있습니다. 예를 들어 내용을 오프라인으로 사용할 수 있게 만들 수 있는지 여부 또는 바우처가 만료되어 내용을 더 이상 볼 수 없게 되는 시점과 관련된 정보가 들어 있습니다.
|
status
|
events.StatusEvent에 정의되며 응용 프로그램이 NetStream.play() 메서드를 호출하여 보호된 내용을 재생하려고 시도할 때만 전달됩니다. 상태 코드 속성의 값은 "DRM.encryptedFLV"입니다.
|
NetStream 클래스에는 AIR에서만 사용되는 다음과 같은 DRM 관련 메서드가 포함되어 있습니다.
메서드
|
설명
|
resetDRMVouchers()
|
로컬로 캐시된 DRM(디지털 권한 관리) 바우처 데이터를 모두 삭제합니다. 사용자가 암호화된 내용에 액세스할 수 있으려면 응용 프로그램에서 바우처를 다시 다운로드해야 합니다.
예를 들어 다음 코드는 캐시에서 모든 바우처를 제거합니다.
NetStream.resetDRMVouchers();
|
setDRMAuthenticationCredentials()
|
인증을 위해 인증 자격 증명 세트, 즉 사용자 이름, 암호 및 인증 유형을 NetStream 객체에 전달합니다. 유효한 인증 유형은 "drm" 및 "proxy" 입니다. "drm" 인증 유형을 사용하면 제공된 자격 증명이 Flash Access에 대해 인증됩니다. "proxy" 인증 유형을 사용하면 자격 증명이 프록시 서버에 대해 인증되며 프록시 서버에 필요한 자격 증명과 일치해야 합니다. 예를 들어 기업에서 사용자가 먼저 프록시 서버에 대해 응용 프로그램을 인증해야만 인터넷에 액세스할 수 있도록 할 수 있습니다. 프록시 옵션은 이 유형의 인증을 허용합니다. 익명 인증을 사용하는 경우가 아니라면 프록시 인증 후에도 사용자가 Flash Access에 대해 인증해야 바우처를 가져와서 내용을 재생할 수 있습니다. "drm" 옵션과 함께 setDRMAuthenticationcredentials()를 두 번 사용하여 Flash Access에 대해 인증할 수 있습니다.
|
preloadEmbeddedMetadata()
|
포함된 메타데이터에 대한 로컬 미디어 파일을 파싱합니다. DRM 관련 메타데이터가 있을 경우 AIR에서는 onDRMContentData() 콜백 함수를 호출합니다.
|
또한 AIR에서 NetStream 객체는 preloadEmbeddedMetaData() 메서드에 대한 호출의 결과로 onDRMContentData() 및 onPlayStatus() 콜백 함수를 호출합니다. 미디어 파일에서 DRM 메타데이터가 발견되면 onDRMContentData() 함수가 호출되며 파일이 파싱되면 onPlayStatus() 함수가 호출됩니다. NetStream 인스턴스에 할당된 client 객체에는 onDRMContentData() 및 onPlayStatus() 함수를 정의해야 합니다. 같은 NetStream 객체를 사용하여 바우처를 미리 로드하고 내용을 재생하는 경우 preloadEmbeddedMetaData()에서 생성되는 onPlayStatus() 호출을 기다렸다가 재생을 시작해야 합니다.
AIR의 경우 다음 코드에서 사용자를 인증하기 위해 사용자 이름("administrator"), 암호("password") 및 "drm" 인증 유형을 설정합니다. setDRMAuthenticationCredentials() 메서드는 내용 공급자가 알고 있고 승인하는 자격 증명과 일치하는 자격 증명을 제공해야 합니다. 이러한 자격 증명은 사용자가 내용을 볼 수 있도록 허용하는 사용자 자격 증명과 동일합니다. 비디오를 재생하고 비디오 스트림과 성공적으로 연결되었는지 확인하는 코드는 여기에 포함되어 있지 않습니다.
var connection:NetConnection = new NetConnection();
connection.connect(null);
var videoStream:NetStream = new NetStream(connection);
videoStream.addEventListener(DRMAuthenticateEvent.DRM_AUTHENTICATE,
drmAuthenticateEventHandler)
private function drmAuthenticateEventHandler(event:DRMAuthenticateEvent):void
{
videoStream.setDRMAuthenticationCredentials("administrator", "password", "drm");
}