데이터로 로드된 미디어 액세스

Flash Player 9 이상, Adobe AIR 1.0 이상

로드 데이터에 액세스하려면 BitmapData.draw()SoundMixer.computeSpectrum()메서드를 사용합니다. 기본적으로 다른 샌드박스에서 로드된 미디어로 렌더링 또는 재생되는 그래픽 또는 오디오 객체에서는 픽셀 데이터 또는 오디오 데이터를 가져올 수 없습니다. 그러나 다음 메서드를 사용하면 샌드박스 경계에 걸쳐 해당 데이터에 대한 액세스 권한을 부여할 수 있습니다.

  • 내용 렌더링 또는 액세스할 데이터 재생 시 다른 도메인의 내용에 대한 데이터 액세스 권한을 부여하려면 Security.allowDomain() 메서드를 호출합니다.

  • 로드된 이미지, 사운드 또는 비디오의 경우 로드된 파일의 서버에 URL 정책 파일을 추가합니다. 이 정책 파일에서 BitmapData.draw() 또는 SoundMixer.computeSpectrum() 메서드 호출을 시도하는 SWF 파일의 도메인에 대한 액세스 권한을 부여해야 해당 파일에서 데이터를 추출할 수 있습니다.

다음 단원에서는 비트맵, 사운드 및 비디오 데이터 액세스에 대해 자세히 설명합니다.

비트맵 데이터 액세스

BitmapData 객체의 draw() 메서드를 사용하면 BitmapData 객체에 현재 표시되는 모든 표시 객체의 픽셀을 그릴 수 있습니다. 여기에는 MovieClip 객체, Bitmap 객체 또는 모든 표시 객체의 픽셀이 포함됩니다. 다음 조건이 충족되어야 draw() 메서드로 BitmapData 객체에 픽셀을 그릴 수 있습니다.

  • 로드된 비트맵이 아닌 소스 객체의 경우, 소스 객체와 (Sprite 또는 MovieClip 객체의 경우) 모든 자식 객체가 draw() 메서드를 호출하는 객체와 동일한 도메인에 있거나 또는 Security.allowDomain() 메서드를 호출하여 해당 호출자에서 액세스할 수 있는 SWF 파일에 있어야 합니다.

  • 로드된 비트맵 소스 객체의 경우에는 소스 객체가 draw() 메서드를 호출하는 객체와 동일한 도메인에 있거나 또는 해당 소스 서버에 호출하는 도메인에 권한을 부여하는 URL 정책 파일이 포함되어 있어야 합니다.

이러한 조건이 충족되지 않으면 SecurityError 예외가 발생합니다.

Loader 클래스의 load() 메서드를 사용하여 이미지를 로드하는 경우 LoaderContext 객체인 context 매개 변수를 지정할 수 있습니다. LoaderContext 객체의 checkPolicyFile 속성을 true로 설정하면 Flash Player에서 이미지가 로드되는 서버의 URL 정책 파일을 확인합니다. 정책 파일이 있고 이 파일에서 로드하는 SWF 파일의 도메인을 허용할 경우, 해당 SWF 파일은 Bitmap 객체의 데이터에 액세스할 수 있고, 그렇지 않으면 액세스할 수 없습니다.

또한 텍스트 필드의 <img> 태그를 통해 로드된 이미지의 checkPolicyFile 속성을 지정할 수 있습니다. 자세한 내용은 텍스트 필드에서 <img> 태그를 사용하여 SWF 파일 및 이미지 로드를 참조하십시오.

사운드 데이터 액세스

다음과 같은 사운드 관련 ActionScript 3.0 API에는 보안 제한 사항이 있습니다.

  • SoundMixer.computeSpectrum() 메서드 - 사운드 파일과 동일한 보안 샌드박스에서 실행되는 코드를 항상 허용합니다. 다른 샌드박스에서 실행되는 코드에 대해서는 보안 확인을 실행합니다.

  • SoundMixer.stopAll() 메서드 - 사운드 파일과 동일한 보안 샌드박스에서 실행되는 코드를 항상 허용합니다. 다른 샌드박스의 파일에 대해서는 보안 확인을 실행합니다.

  • Sound 클래스의 id3 속성 - 사운드 파일과 동일한 보안 샌드박스에 있는 SWF 파일을 항상 허용합니다. 다른 샌드박스에서 실행되는 코드에 대해서는 보안 확인을 실행합니다.

모든 사운드에는 내용 샌드박스와 소유자 샌드박스의 두 가지 관련 샌드박스가 있습니다.

  • 사운드의 원래 도메인에 의해 내용 샌드박스가 결정되며 여기에서 사운드의 id3 속성과 SoundMixer.computeSpectrum() 메서드를 통해 사운드에서 데이터를 추출할 수 있는지 여부가 결정됩니다.

  • 사운드 재생을 시작한 객체에 의해 소유자 샌드박스가 결정되며 여기에서 SoundMixer.stopAll() 메서드를 사용하여 사운드를 중단할 수 있는지 여부가 결정됩니다.

Sound 클래스의 load() 메서드를 사용하여 사운드를 로드하는 경우 SoundLoaderContext 객체인 context 매개 변수를 지정할 수 있습니다. SoundLoaderContext 객체의 checkPolicyFile 속성을 true로 설정하면 런타임에서 사운드가 로드되는 서버에 URL 정책 파일이 있는지 확인합니다. 정책 파일이 있고 이 파일이 로드하는 코드의 도메인을 허용할 경우, 해당 코드는 Sound 객체의 id 속성에 액세스할 수 있고, 그렇지 않으면 액세스할 수 없습니다. 또한 checkPolicyFile 속성을 설정하여 로드된 사운드에 SoundMixer.computeSpectrum() 메서드를 사용할 수 있습니다.

하나 이상의 사운드 소유자 샌드박스를 호출자에서 액세스할 수 없어 SoundMixer.stopAll() 메서드 호출 시 모든 사운드가 중단되지 않는지 여부를 SoundMixer.areSoundsInaccessible() 메서드를 사용하여 확인할 수 있습니다.

SoundMixer.stopAll() 메서드를 호출하면 stopAll()의 호출자와 동일한 소유자 샌드박스에 있는 사운드를 중단할 수 있습니다. 또한 Security.allowDomain() 메서드를 호출한 SWF 파일에서 재생을 시작한 사운드를 중단하여 stopAll() 메서드를 호출하는 SWF 파일의 도메인에 액세스를 허용할 수 있습니다. 다른 사운드는 중단되지 않으며, 이 사운드는 SoundMixer.areSoundsInaccessible() 메서드를 호출하여 확인할 수 있습니다.

computeSpectrum() 메서드를 호출하려면 재생되는 모든 사운드가 해당 메서드를 호출하는 객체와 동일한 샌드박스에 있거나 또는 호출자의 샌드박스에 액세스 권한을 부여한 소스에 있어야 합니다. 그렇지 않으면 SecurityError 예외가 발생합니다. SWF 파일의 라이브러리에 포함된 사운드에서 로드된 사운드의 경우, 로드된 SWF 파일에서 Security.allowDomain() 메서드를 호출하면 권한이 부여됩니다. SWF 파일이 아닌 소스에서 로드된 사운드의 경우(로드된 mp3 파일 또는 비디오 파일에서 시작), 소스 서버의 URL 정책 파일에서 로드된 미디어의 데이터에 대한 액세스 권한을 부여합니다.

자세한 내용은 제작자(개발자) 컨트롤웹 사이트 컨트롤(정책 파일)을 참조하십시오.

RTMP 스트림에서 사운드 데이터에 액세스하려면 서버에 대한 액세스를 허용해야 합니다. 서버측 ActionScript Client.audioSampleAccess 속성을 사용하여 Flash Media Server에 있는 특정 디렉토리에 대한 액세스를 허용합니다. 자세한 내용은 서버측 ActionScript 언어 참조 설명서를 참조하십시오.

비디오 데이터 액세스

BitmapData.draw() 메서드를 사용하여 현재 비디오 프레임의 픽셀 데이터를 캡처할 수 있습니다.

다음과 같은 두 종류의 비디오가 있습니다.

  • Flash Media Server에서 RTMP를 통해 스트리밍되는 비디오

  • FLV 또는 F4V 파일에서 로드되는 점진적 비디오

BitmapData.draw() 메서드를 사용하여 RTMP 스트림에서 런타임 그래픽을 추출하려면 서버에 대한 액세스를 허용해야 합니다. 서버측 ActionScript Client.videoSampleAccess 속성을 사용하여 Flash Media Server에 있는 특정 디렉토리에 대한 액세스를 허용합니다. 자세한 내용은 서버측 ActionScript 언어 참조 설명서를 참조하십시오.

점진적 비디오를 source 매개 변수로 하여 BitmapData.draw() 메서드를 호출하는 경우, BitmapData.draw()의 호출자가 FLV 파일과 동일한 샌드박스에 있거나, 또는 FLV 파일의 서버에 호출하는 SWF 파일의 도메인에 대해 권한을 부여하는 정책 파일을 있어야 합니다. NetStream 객체의 checkPolicyFile 속성을 true로 설정하여 해당 정책 파일의 다운로드를 요청할 수 있습니다.