패키지 | flash.media |
클래스 | public final class Camera |
상속 | Camera EventDispatcher Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
Camera 인스턴스는 비디오를 가로 종횡비로 캡처합니다. 휴대폰과 같이 스크린 방향을 변경할 수 있는 장치에서 카메라에 연결된 Video 객체는 가로 종횡비 방향으로 된 정상적인 비디오만 표시합니다. 따라서 모바일 응용 프로그램은 비디오를 표시할 때 가로 방향을 사용해야 하며 자동으로 회전해서는 안 됩니다.
iOS에서 전면 카메라의 비디오는 미러링되지만 Android에서는 미러링되지 않습니다.
오토포커스 카메라가 장착된 휴대 장치에서 오토포커스 기능이 자동으로 활성화됩니다. 연속 오토포커스 기능을 지원하지 않는 카메라의 경우(많은 휴대 장치 카메라가 지원하지 않음) Camera 객체가 비디오 스트림에 연결되어 있는 상태에서 setMode()
메서드가 호출될 때마다 카메라 초점이 맞춰집니다. 데스크톱 컴퓨터에서는 오토포커스 기능이 카메라 드라이버 및 설정에 따라 결정됩니다.
Android 및 iOS에서는 AIR 응용 프로그램이 활성화된 전경 응용 프로그램이 아닌 경우 카메라가 비디오를 캡처하지 않습니다. 또한 응용 프로그램이 배경으로 실행되면 스트리밍 연결이 끊어질 수도 있습니다. iOS에서는 응용 프로그램이 GPU 렌더링 모드를 사용하면 카메라 비디오를 표시할 수 없습니다. 물론 카메라 비디오를 서버로 스트리밍할 수는 있습니다.
AIR 프로파일 지원: 이 기능은 AIR for TV 장치에서 지원되지 않습니다. 여러 프로파일 간 API 지원에 대한 자세한 내용은 AIR 프로파일 지원을 참조하십시오. AIR for TV 장치의 경우 Camera.isSupported
는 true
이지만 Camera.getCamera()
는 항상 null
을 반환합니다. 카메라 액세스는 모바일 브라우저에서 지원되지 않습니다.
오디오 캡처에 대한 자세한 내용은 Microphone 클래스를 참조하십시오.
중요: 런타임에 표시되는 [개인 정보] 대화 상자에서 카메라에 대한 액세스를 허용하거나 거부할 수 있습니다. 응용 프로그램의 윈도우 크기가 대화 상자를 표시하는 데 필요한 최소 크기인 215 x 138픽셀 이상인지 확인합니다.
Camera 객체를 만들거나 참조하려면 getCamera()
메서드를 사용합니다.
추가 정보
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
activityLevel : Number [읽기 전용]
카메라가 감지하는 동작의 양입니다. | Camera | ||
bandwidth : int [읽기 전용]
현재 내보내는 비디오 피드가 사용할 수 있는 바이트 단위의 최대 대역폭입니다. | Camera | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
currentFPS : Number [읽기 전용]
현재 카메라가 데이터를 캡처하는 비율을 초당 프레임 수로 나타냅니다. | Camera | ||
fps : Number [읽기 전용]
초당 프레임 단위의 카메라가 데이터를 캡처할 수 있는 최대 속도입니다. | Camera | ||
height : int [읽기 전용]
현재 캡처의 높이를 픽셀 단위로 나타냅니다. | Camera | ||
index : int [읽기 전용]
사용할 수 있는 모든 카메라를 나열하는 Camera.names 배열에서 카메라의 위치를 지정하며 0부터 시작하는 인덱스입니다. | Camera | ||
isSupported : Boolean [정적] [읽기 전용]
현재 플랫폼에서 Camera 클래스가 지원되면 isSupported 속성이 true로 설정되고, 그렇지 않으면 false로 설정됩니다. | Camera | ||
keyFrameInterval : int [읽기 전용]
비디오 압축 알고리즘을 통해 삽입하지 않고 전체를 전송할 비디오 프레임(키프레임)의 수입니다. | Camera | ||
loopback : Boolean [읽기 전용]
Flash Media Server를 사용하여 실시간 전송할 때처럼 카메라에서 캡처 중인 대상의 로컬 뷰를 압축했다가 압축 해제할지(true) 아니면 압축하지 않을지(false)를 나타냅니다. | Camera | ||
motionLevel : int [읽기 전용]
activity 이벤트를 호출하는 데 필요한 동작의 양입니다. | Camera | ||
motionTimeout : int [읽기 전용]
카메라가 동작 감지를 중지한 때부터 activity 이벤트가 호출되기까지의 시간(밀리초)입니다. | Camera | ||
muted : Boolean [읽기 전용]
사용자가 Flash Player [개인 정보] 대화 상자에서 카메라에 대한 액세스를 거부했는지(true) 아니면 허용했는지(false) 나타내는 부울 값입니다. | Camera | ||
name : String [읽기 전용]
카메라 하드웨어에서 반환되는 현재 카메라의 이름입니다. | Camera | ||
names : Array [정적] [읽기 전용]
사용 가능한 모든 카메라의 이름을 포함하는 문자열의 배열입니다. | Camera | ||
permissionStatus : String [정적] [읽기 전용]
응용 프로그램에 카메라에 액세스할 수 있는 권한이 부여되었는지 여부를 확인합니다. | Camera | ||
position : String [읽기 전용]
장치에서 카메라가 위치한 측면을 지정합니다. | Camera | ||
quality : int [읽기 전용]
요청한 레벨의 화질로, 각 비디오 프레임에 적용되는 압축 비율의 크기에 따라 결정됩니다. | Camera | ||
width : int [읽기 전용]
현재 캡처의 너비를 픽셀 단위로 나타냅니다. | Camera |
메서드 | 정의 주체 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
픽셀 데이터의 사각형 영역에서 바이트 배열을 채웁니다. 각 픽셀에 대한 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 바이트 배열에 작성합니다. | Camera | ||
픽셀 데이터의 사각형 영역에서 벡터를 채웁니다. | Camera | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
마지막 프레임을 비트맵에 복사합니다. | Camera | ||
[정적]
비디오를 캡처하는 Camera 객체의 참조를 반환합니다. | Camera | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
응용 프로그램에 대한 카메라 권한을 요청합니다. | Camera | ||
비디오 압축 알고리즘을 통해 삽입하지 않고 전체를 전송할 비디오 프레임(키프레임)을 지정합니다. | Camera | ||
카메라의 로컬 뷰에 압축된 비디오 스트림을 사용할지 여부를 지정합니다. | Camera | ||
카메라 캡처 모드를 지정된 요구 사항을 최적으로 만족시키는 기본 모드로 설정합니다. | Camera | ||
activity 이벤트를 전달하는 데 필요한 동작의 양을 지정합니다. | Camera | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
현재 내보내는 비디오 피드의 초당 최대 대역폭이나 요청되는 화질을 설정합니다. | Camera | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
이벤트 | 요약 | 정의 주체 | ||
---|---|---|---|---|
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. | EventDispatcher | |||
카메라에서 세션이 시작되거나 종료될 때 전달됩니다. | Camera | |||
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. | EventDispatcher | |||
응용 프로그램이 장치의 카메라를 사용할 수 있는 권한을 요청할 때 전달됩니다. | Camera | |||
카메라가 상태를 보고할 때 전달됩니다. | Camera | |||
새 카메라 프레임이 런타임에 의해 처리되어 복사할 수 있게 된 후에 전달됩니다. | Camera |
activityLevel | 속성 |
activityLevel:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라가 감지하는 동작의 양입니다. 0(감지되는 동작 없음)부터 100(많은 양의 동작이 감지되고 있음)까지의 값입니다. 이 속성 값은 setMotionLevel()
메서드에 설정을 전달해야 할지 여부를 결정할 때 유용합니다.
카메라를 사용할 수 있는 상태이지만 Video.attachCamera()
메서드가 호출되지 않아 아직 사용하지 않고 있으면 이 속성은 -1로 설정됩니다.
압축되지 않은 로컬 비디오만 스트리밍하는 경우에는 이벤트 핸들러에 함수가 할당되어 있을 때만 이 속성이 설정됩니다. 그렇지 않으면 이 속성은 설정되지 않습니다.
구현
public function get activityLevel():Number
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
bandwidth | 속성 |
bandwidth:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
현재 내보내는 비디오 피드가 사용할 수 있는 바이트 단위의 최대 대역폭입니다. 이 값이 0이면 원하는 프레임 품질을 유지하는 데 필요한 대역폭을 사용할 수 있음을 의미합니다.
이 속성을 설정하려면 setQuality()
메서드를 사용합니다.
구현
public function get bandwidth():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
currentFPS | 속성 |
currentFPS:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
현재 카메라가 데이터를 캡처하는 비율을 초당 프레임 수로 나타냅니다. 이 속성은 설정할 수 없습니다. 그러나 setMode()
메서드를 사용하여 관련 속성인 fps
를 설정함으로써 카메라가 데이터를 캡처하는 최대 프레임 속도를 지정할 수 있습니다.
구현
public function get currentFPS():Number
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
fps | 속성 |
fps:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
초당 프레임 단위의 카메라가 데이터를 캡처할 수 있는 최대 속도입니다. 가능한 최대 속도는 카메라의 성능에 따라 다르며 이 프레임 속도에 도달하지 않을 수도 있습니다.
- 이 속성에 대해 원하는 값을 설정하려면
setMode()
메서드를 사용합니다. - 카메라의 현재 데이터 캡처 비율을 확인하려면
currentFPS
속성을 사용합니다.
구현
public function get fps():Number
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
height | 속성 |
height:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
현재 캡처의 높이를 픽셀 단위로 나타냅니다. 이 속성 값을 설정하려면 setMode()
메서드를 사용합니다.
구현
public function get height():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
index | 속성 |
index:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
사용할 수 있는 모든 카메라를 나열하는 Camera.names
배열에서 카메라의 위치를 지정하며 0부터 시작하는 인덱스입니다.
구현
public function get index():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
isSupported | 속성 |
keyFrameInterval | 속성 |
keyFrameInterval:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
비디오 압축 알고리즘을 통해 삽입하지 않고 전체를 전송할 비디오 프레임(키프레임)의 수입니다. 기본값은 15이고, 이 값은 15번째 프레임마다 키프레임이 되는 것을 의미합니다. 1의 값은 모든 프레임이 키프레임임을 의미합니다. 허용되는 값은 1~300입니다.
구현
public function get keyFrameInterval():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
loopback | 속성 |
loopback:Boolean
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
Flash Media Server를 사용하여 실시간 전송할 때처럼 카메라에서 캡처 중인 대상의 로컬 뷰를 압축했다가 압축 해제할지(true
) 아니면 압축하지 않을지(false
)를 나타냅니다. 기본값은 false
입니다.
압축된 스트림은 비디오 품질 설정 미리 보기와 같은 테스트에 유용하지만 상당한 처리 비용이 듭니다. 로컬 뷰는 실시간 연결과 마찬가지로 전송용으로 압축, 편집된 다음 로컬에서 볼 수 있도록 압축 해제됩니다.
이 값을 설정하려면 Camera.setLoopback()
을 사용합니다. 이 속성이 true일 때 사용할 압축 정도를 설정하려면 Camera.setQuality()
를 사용합니다.
구현
public function get loopback():Boolean
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
motionLevel | 속성 |
motionLevel:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
activity
이벤트를 호출하는 데 필요한 동작의 양입니다. 사용할 수 있는 값은 0부터 100까지입니다. 기본값은 50입니다.
motionLevel
속성 값과는 관계없이 비디오를 표시할 수 있습니다. 자세한 내용은 setMotionLevel()
을 참조하십시오.
구현
public function get motionLevel():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
motionTimeout | 속성 |
motionTimeout:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라가 동작 감지를 중지한 때부터 activity
이벤트가 호출되기까지의 시간(밀리초)입니다. 기본값은 2000(2초)입니다.
이 값을 설정하려면 setMotionLevel()
을 사용합니다.
구현
public function get motionTimeout():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
muted | 속성 |
muted:Boolean
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
사용자가 Flash Player [개인 정보] 대화 상자에서 카메라에 대한 액세스를 거부했는지(true
) 아니면 허용했는지(false
) 나타내는 부울 값입니다. 이 값이 변경되면 status
이벤트가 전달됩니다.
구현
public function get muted():Boolean
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
name | 속성 |
name:String
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라 하드웨어에서 반환되는 현재 카메라의 이름입니다.
구현
public function get name():String
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
names | 속성 |
names:Array
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
사용 가능한 모든 카메라의 이름을 포함하는 문자열의 배열입니다. 이 배열에 액세스해도 Flash Player의 [개인 정보] 대화 상자가 표시되지 않습니다. 이 배열은 names.length
를 통해 시스템에 있는 카메라 수와 각 카메라의 0부터 시작하는 인덱스를 제공합니다.
names
속성을 호출하려면 하드웨어를 좀 더 광범위하게 확인해야 합니다. 대부분의 경우 기본 카메라가 사용됩니다.
구현
public static function get names():Array
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
permissionStatus | 속성 |
position | 속성 |
position:String
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 3.0 |
장치에서 카메라가 위치한 측면을 지정합니다.
position
속성을 사용하여 휴대 장치의 카메라가 전면에 있는지, 아니면 장치의 후면에 있는지를 결정합니다. 다음 함수는 원하는 위치의 카메라를 찾을 때까지 사용할 수 있는 모든 카메라를 확인합니다. 원하는 위치의 카메라가 없으면 기본 카메라가 반환됩니다.
function getCamera( position:String ):Camera { var camera:Camera; var cameraCount:uint = Camera.names.length; for ( var i:uint = 0; i < cameraCount; ++i ) { camera = Camera.getCamera( String(i) ); if ( camera.position == position ) return camera; } return Camera.getCamera();
휴대 장치에서 카메라 위치는 주로 CameraPosition.FRONT
또는 CameraPosition.BACK
입니다. 카메라 위치를 확인할 수 없는 경우 위치는 CameraPosition.UNKNOWN
으로 보고됩니다. 데스크톱 플랫폼의 경우에는 위치가 항상 CameraPosition.UNKNOWN
입니다.
이 속성의 유효한 값을 위한 상수는 CameraPosition 클래스에서 정의됩니다.
구현
public function get position():String
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
quality | 속성 |
quality:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
요청한 레벨의 화질로, 각 비디오 프레임에 적용되는 압축 비율의 크기에 따라 결정됩니다. 1(최저 품질, 최대 압축)부터 100(최고 품질, 압축 안 함)까지의 품질 값을 선택할 수 있습니다. 기본값은 0입니다. 이 값은 사용 가능한 대역폭을 초과하지 않도록 하기 위해 필요에 따라 화질이 변경될 수 있음을 의미합니다.
이 속성을 설정하려면 setQuality()
메서드를 사용합니다.
구현
public function get quality():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
width | 속성 |
width:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
현재 캡처의 너비를 픽셀 단위로 나타냅니다. 이 속성에 대해 원하는 값을 설정하려면 setMode()
메서드를 사용합니다.
구현
public function get width():int
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
copyToByteArray | () | 메서드 |
public function copyToByteArray(rect:Rectangle, destination:ByteArray):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.4, AIR 3.4 |
픽셀 데이터의 사각형 영역에서 바이트 배열을 채웁니다.
픽셀별로 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 바이트 배열에 씁니다. 배열의 크기는 모든 픽셀을 포함할 수 있도록 필요한 바이트 수로 조정됩니다.
매개 변수
rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다.
| |
destination:ByteArray — 지정된 Rectangle의 픽셀을 나타내는 ByteArray입니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
| |
TypeError — rect가 null입니다.
| |
TypeError — destination이 null입니다.
|
관련 API 요소
copyToVector | () | 메서드 |
public function copyToVector(rect:Rectangle, destination:Vector.<uint>):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.4, AIR 3.4 |
픽셀 데이터의 사각형 영역에서 벡터를 채웁니다.
픽셀별로 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 벡터에 씁니다. 벡터의 크기는 모든 픽셀을 포함할 수 있도록 필요한 항목 수로 조정됩니다.
매개 변수
rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다.
| |
destination:Vector.<uint> — 벡터입니다.지정한 Rectangle의 픽셀을 나타내는 <uint>입니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
| |
TypeError — rect가 null입니다.
| |
TypeError — destination이 null입니다.
|
관련 API 요소
drawToBitmapData | () | 메서드 |
public function drawToBitmapData(destination:BitmapData):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.4, AIR 3.4 |
마지막 프레임을 비트맵에 복사합니다.
이 메서드는 마지막 프레임의 내용을 BitmapData에 복사합니다.
매개 변수
destination:BitmapData — 마지막 프레임을 포함할 BitmapData 인스턴스입니다.
|
오류
ArgumentError — destination 이 너무 작은 경우의 kInvalidBitmapDataError입니다.
|
관련 API 요소
getCamera | () | 메서드 |
public static function getCamera(name:String = null):Camera
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
비디오를 캡처하는 Camera 객체의 참조를 반환합니다. 비디오 캡처를 시작하려면 Video 객체에 Camera 객체를 첨부해야 합니다(Video.attachCamera()
참조). Flash Media Server로 비디오를 전송하려면 NetStream.attachCamera()
를 호출하여 Camera 객체를 NetStream 객체에 첨부합니다.
getCamera()
메서드를 여러 번 호출하는 경우 동일한 카메라 드라이버를 참조합니다. 따라서 코드에 firstCam:Camera = getCamera()
및 secondCam:Camera = getCamera()
같은 코드가 포함되어 있으면 firstCam
및 secondCam
은 사용자의 기본 카메라인 같은 카메라를 참조합니다.
앞뒤 카메라를 모두 장착한 휴대 장치에서는 한 번에 한 카메라에서만 비디오를 캡처할 수 있습니다.
일반적으로 name
매개 변수의 값을 전달해서는 안 되며, getCamera()
를 사용하여 기본 카메라에 대한 참조를 반환해야 합니다. 이 단원의 후반부에 설명되는 [카메라 설정] 패널에서는 사용할 기본 카메라를 지정할 수 있습니다.
ActionScript를 사용하여 카메라 액세스에 대한 사용자의 허용 또는 거부 권한 설정을 지정할 수 없지만 사용자가 카메라 권한을 설정할 수 있는 Adobe Flash Player 설정의 카메라 설정 대화 상자를 표시할 수 있습니다. attachCamera()
메서드를 사용하는 SWF 파일이 getCamera()
메서드에 의해 반환된 카메라를 Video 또는 NetStream 객체에 첨부하려고 하면 Flash Player는 카메라에 대한 액세스를 허용하거나 거부하는 것을 사용자가 선택할 수 있도록 대화 상자를 표시합니다. 응용 프로그램의 윈도우 크기가 Flash Player에서 대화 상자를 표시하는 데 필요한 최소 크기인 215 x 138픽셀 이상인지 확인합니다. 사용자가 카메라 설정 대화 상자에 응답하면 Flash Player는 사용자의 응답을 나타내는 status
이벤트로 정보 객체를 반환합니다. Camera.Muted
는 사용자가 카메라에 대한 액세스를 거부했음을 나타내고, Camera.Unmuted
는 사용자가 카메라에 대한 액세스를 허용했음을 나타냅니다. status
이벤트를 처리하지 않고 사용자가 카메라에 대한 액세스를 거부했는지 허용했는지를 확인하려면 muted
속성을 사용합니다.
Flash Player에서 SWF 파일이 재생되는 동안 마우스 오른쪽 버튼을 클릭(Windows 및 Linux)하거나 Control 키를 누른 채 클릭(Macintosh)하고 [설정]을 선택하여 [개인 정보] 대화 상자를 연 후 [기억]을 선택하면 특정 도메인에 대해 개인 정보 설정을 영구적으로 지정할 수 있습니다. 사용자가 [기억]을 선택하면 Flash Player는 이 도메인의 SWF 파일이 카메라에 액세스하도록 허용할 것인지 아니면 거부할 것인지를 더 이상 묻지 않습니다.
참고: 사용자가 Flash Player 설정 대화 상자에서 [기억]을 선택하여 액세스를 거부한 경우 attachCamera()
메서드는 카메라에 대한 액세스를 허용 또는 거부하기 위한 대화 상자를 호출하지 않습니다. 이 경우 Security.showSettings(SecurityPanel.PRIVACY)
를 사용해 Flash Player [개인 정보] 패널을 표시하여 허용 또는 거부 설정을 변경하라는 메시지를 사용자에게 표시할 수 있습니다.
getCamera()
에서 null
이 반환하면 다른 응용 프로그램이 카메라를 사용 중이거나 시스템에 카메라가 설치되어 있지 않은 것입니다. 설치된 카메라가 있는지 확인하려면 names.length
속성을 사용합니다. getCamera()
에 의해 참조될 카메라를 선택할 수 있는 Flash Player 카메라 설정 패널을 표시하려면 Security.showSettings(SecurityPanel.CAMERA)
를 사용합니다.
카메라 하드웨어를 검색하는 작업에는 시간이 걸립니다. 일단 적어도 하나의 카메라가 발견되면 플레이어 인스턴스가 실행되는 동안에는 하드웨어를 다시 검색하지 않습니다. 그러나 카메라가 한 대도 발견되지 않으면 런타임은 getCamera
를 호출할 때마다 하드웨어를 검색합니다. 이 옵션은 카메라가 있지만 사용하지 않도록 설정된 상태일 때 유용합니다. SWF 파일에 getCamera
를 호출하는 재시도 버튼이 있는 경우 사용자가 SWF 파일을 다시 시작하지 않아도 Flash Player는 카메라를 찾을 수 있습니다.
매개 변수
name:String (default = null ) — 가져올 카메라를 지정합니다. 가져올 카메라는 names 속성에 의해 반환된 배열로부터 결정됩니다. 대부분의 응용 프로그램에서는 이 매개 변수가 누락되면 기본 카메라를 가져옵니다. 이 매개 변수의 값을 지정하려면 Camera.names 배열 내에서 0부터 시작하는 인덱스 위치의 문자열 표현을 사용합니다. 예를 들어 배열에서 세 번째 카메라를 지정하려면 Camera.getCamera("2") 를 사용합니다.
|
Camera — name 매개 변수가 지정되지 않으면 이 메서드는 기본 카메라에 대한 참조를 반환합니다. 하지만 기본 카메라가 다른 응용 프로그램에서 사용되고 있으면 사용 가능한 첫 번째 카메라를 반환합니다. 카메라가 두 대 이상 설치되어 있으면 Flash Player의 [카메라 설정] 패널에서 기본 카메라를 지정할 수 있습니다. 사용 가능한 카메라가 없으면 이 메서드는 null 을 반환합니다.
|
이벤트
status: — 카메라가 상태를 보고할 때 전달됩니다. Flash Player는 카메라에 액세스하기 전에 사용자의 카메라 액세스를 허용 또는 거부할 수 있는 [개인 정보] 대화 상자를 표시합니다. code 속성 값이 "Camera.Muted" 이면 사용자가 사용자의 카메라에 대한 SWF 파일 액세스를 거부한 것입니다. code 속성 값이 "Camera.Unmuted" 이면 사용자가 카메라에 대한 SWF 파일 액세스를 허용한 것입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
Camera.getCamera()
메서드는 카메라 객체에 대한 참조를 반환하거나 카메라가 사용할 수 없거나 설치되지 않은 경우 null을 반환합니다. if 문은 카메라가 발견되었는지 여부와 사용자가 카메라에 대한 액세스를 허용했는지 여부를 확인합니다. 사용자가 액세스를 거부한 경우 muted
속성은 true
로 설정됩니다.
일반적으로 attachCamera()
메서드가 호출되면 카메라에 대한 Flash Player 액세스를 허용 또는 거부하라는 대화 상자가 나타납니다. 그러나 사용자가 액세스를 거부하고 기억
옵션을 선택한 경우 대화 상자가 나타나지 않으며 아무 것도 표시되지 않습니다. 카메라에 대한 액세스를 허용하는 옵션이 있다는 것을 알리기 위해 myTextField
텍스트 필드는 사용자가 텍스트 필드를 클릭하여 [Flash Player 설정] 대화 상자를 호출하도록 지시합니다.
clickHandler()
메서드는 설정 대화 상자의 PRIVACY
패널을 표시하는 Security.showSettings()
메서드를 호출합니다. 사용자가 액세스를 허용할 경우 StatusEvent.STATUS
이벤트가 전달되고 이벤트의 code
속성 값이 Camera.Unmuted
로 설정됩니다. 카메라 객체의 mute
속성도 false
로 설정됩니다.
사용자가 액세스를 허용할 경우 사용자 설정의 상태 변경을 수신하기 위해 추가된 statusHandler()
메서드는 connectCamera()
메서드를 호출합니다. connectCamera()
메서드는 캡처한 스트림의 폭과 높이로 비디오 객체를 인스턴스화합니다. 카메라의 캡처된 비디오를 표시하기 위해 비디오 스트림에 대한 참조가 비디오 객체에 첨부되고 비디오 객체가 표시 목록에 추가됩니다.
또한 Timer 객체도 시작됩니다. 1초마다 Timer 객체의 타이머 이벤트가 전달되고 timerHandler()
메서드가 호출됩니다. timerHandler()
메서드가 표시되고 Camera 객체의 속성 수가 업데이트됩니다.
참고: 이 예제에서 변경되는 유일한 속성은 currentFPS
속성입니다.
package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.system.SecurityPanel; import flash.system.Security; public class Camera_getCameraExample extends Sprite { private var myTextField:TextField; private var cam:Camera; private var t:Timer = new Timer(1000); public function Camera_getCameraExample() { myTextField = new TextField(); myTextField.x = 10; myTextField.y = 10; myTextField.background = true; myTextField.selectable = false; myTextField.autoSize = TextFieldAutoSize.LEFT; if (Camera.isSupported) { cam = Camera.getCamera(); if (!cam) { myTextField.text = "No camera is installed."; } else if (cam.muted) { myTextField.text = "To enable the use of the camera,\n" + "please click on this text field.\n" + "When the Flash Player Settings dialog appears,\n" + "make sure to select the Allow radio button\n" + "to grant access to your camera."; myTextField.addEventListener(MouseEvent.CLICK, clickHandler); }else { myTextField.text = "Connecting"; connectCamera(); } addChild(myTextField); t.addEventListener(TimerEvent.TIMER, timerHandler); }else { myTextField.text = "The Camera class is not supported on this device."; } } private function clickHandler(e:MouseEvent):void { Security.showSettings(SecurityPanel.PRIVACY); cam.addEventListener(StatusEvent.STATUS, statusHandler); myTextField.removeEventListener(MouseEvent.CLICK, clickHandler); } private function statusHandler(event:StatusEvent):void { if (event.code == "Camera.Unmuted") { connectCamera(); cam.removeEventListener(StatusEvent.STATUS, statusHandler); } } private function connectCamera():void { var vid:Video = new Video(cam.width, cam.height); vid.x = 10; vid.y = 10; vid.attachCamera(cam); addChild(vid); t.start(); } private function timerHandler(event:TimerEvent):void { myTextField.y = cam.height + 20; myTextField.text = ""; myTextField.appendText("bandwidth: " + cam.bandwidth + "\n"); myTextField.appendText("currentFPS: " + Math.round(cam.currentFPS) + "\n"); myTextField.appendText("fps: " + cam.fps + "\n"); myTextField.appendText("keyFrameInterval: " + cam.keyFrameInterval + "\n"); } } }
requestPermission | () | 메서드 |
public function requestPermission():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 24.0 |
응용 프로그램에 대한 카메라 권한을 요청합니다.
이벤트
PermissionStatus: — 사용자가 요청된 권한을 부여/거부할 때 전달됩니다.
|
setKeyFrameInterval | () | 메서드 |
public function setKeyFrameInterval(keyFrameInterval:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
비디오 압축 알고리즘을 통해 삽입하지 않고 전체를 전송할 비디오 프레임(키프레임)을 지정합니다. 이 메서드는 Flash Media Server를 사용하여 비디오를 전송하는 경우에만 적용할 수 있습니다.
Flash Video 압축 알고리즘은 비디오의 마지막 프레임 이후로 변경된 부분만을 전송함으로써 비디오를 압축합니다. 이 부분을 삽입된 프레임이라고 합니다. 비디오의 프레임은 이전 프레임의 내용에 따라 삽입될 수 있습니다. 그러나 키프레임은 완전한 비디오 프레임으로서 이전 프레임으로부터 삽입될 수 없습니다.
keyFrameInterval
매개 변수 값을 어떻게 설정할지 결정하려면 대역폭 사용량과 비디오 재생 액세스 가능성을 모두 고려해야 합니다. 예를 들어 keyFrameInterval
에 대해 더 높은 값을 지정하면(키프레임 전송 빈도를 낮추면) 대역폭 사용량이 줄어듭니다. 그러나 이렇게 하면 비디오의 특정 지점에 재생 헤드를 배치하는 데 걸리는 시간이 늘어날 수 있으며, 이전 비디오 프레임을 더 많이 삽입해야만 비디오를 다시 재생할 수 있습니다.
반대로, keyFrameInterval
에 대해 낮은 값을 지정하면(키프레임 전송 빈도를 높이면) 전체 비디오 프레임을 보다 자주 전송하므로 대역폭 사용량은 늘어나지만 녹화된 비디오에서 특정한 비디오 프레임을 찾는 데 걸리는 시간은 줄어듭니다.
매개 변수
keyFrameInterval:int — 비디오 압축 알고리즘을 통해 삽입하지 않고 전체를 전송할 비디오 프레임을 지정하는 값입니다. 값을 1로 선택하면 모든 프레임이 키프레임이 되고, 값을 3으로 선택하면 세 번째 프레임마다 키프레임이 되는 방식입니다. 사용할 수 있는 값은 1부터 48까지입니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
setLoopback | () | 메서드 |
public function setLoopback(compress:Boolean = false):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라의 로컬 뷰에 압축된 비디오 스트림을 사용할지 여부를 지정합니다. 이 메서드는 Flash Media Server를 사용하여 비디오를 전송할 경우에만 적용할 수 있습니다. compress
를 true
로 설정하면 실시간으로 비디오를 볼 때 어떻게 표시되는지를 보다 정밀하게 확인할 수 있습니다.
압축된 스트림은 비디오 품질 설정을 미리 보는 것과 같은 테스트 목적으로는 유용합니다. 그러나 로컬 뷰를 단순히 압축하는 것이 아니라 실시간 연결에서처럼 비디오를 압축하고 전송하기 위해 편집한 다음 로컬에서 볼 수 있도록 압축을 해제하는 것이므로 처리 비용이 상당히 많이 듭니다.
compress
를 true
로 설정했을 때 사용할 압축률을 설정하려면 Camera.setQuality()
를 사용합니다.
매개 변수
compress:Boolean (default = false ) — 카메라에 수신되는 로컬 뷰에 대해 압축된 비디오 스트림(true )을 사용할지 압축되지 않은 스트림(false )을 사용할지 지정합니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
setMode | () | 메서드 |
public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라 캡처 모드를 지정된 요구 사항을 최적으로 만족시키는 기본 모드로 설정합니다. 전달된 모든 매개 변수와 일치하는 기본 모드를 카메라가 가지고 있지 않으면 요청된 모드에 가장 가까운 캡처 모드가 선택됩니다. 이 작업으로 인해 이미지가 잘리거나 프레임이 삭제될 수 있습니다.
기본적으로 이미지 크기 유지를 위해 필요에 따라 프레임이 삭제됩니다. 삭제되는 프레임 수를 최소화하려면 이미지 크기가 감소된다고 하더라도 favorArea
매개 변수에 false
를 전달합니다.
기본 모드를 선택하면 런타임에서는 요청된 종횡비를 가능하면 유지하려고 합니다. 예를 들어 myCam.setMode(400, 400, 30)
명령을 실행한 경우 카메라에서 사용 가능한 최대 폭 및 높이 값이 각각 320과 288이라면 런타임은 이들 속성을 같은 값으로, 즉 폭과 높이를 모두 288로 설정하여 사용자가 요청한 종횡비 1:1을 유지합니다.
사용자가 요청한 값과 가장 일치하는 모드가 선택된 후 이 속성에 지정된 값을 확인하려면 width
, height
및 fps
속성을 사용합니다.
Flash Media Server를 사용 중인 경우 단일 프레임을 캡처하거나 저속도 촬영 사진을 생성할 수도 있습니다. 자세한 내용은 NetStream.attachCamera()
를 참조하십시오.
매개 변수
width:int — 요청한 캡처 폭(픽셀)입니다. 기본값은 160입니다.
| |
height:int — 요청한 캡처 높이(픽셀)입니다. 기본값은 120입니다.
| |
fps:Number — 요청한 카메라의 데이터 캡처 속도(프레임/초)입니다. 기본값은 15입니다.
| |
favorArea:Boolean (default = true ) — 카메라에 지정된 요구 사항을 충족하는 기본 모드가 없을 경우 폭, 높이, 프레임 속도를 조작할지 여부를 지정합니다. 기본값은 true 이며, 이렇게 설정하면 캡처 크기가 최대한 유지되므로 프레임 속도가 줄어 성능이 저하되더라도 width 및 height 값과 최대한 일치하는 모드가 선택됩니다. 카메라의 높이 및 너비를 무시하고 프레임 속도를 최대화하려면 favorArea 매개 변수에 false 를 전달합니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
Stage는 설정되므로 크기가 조절되지 않습니다. Camera.getCamera()
메서드는 카메라 객체에 대한 참조를 반환하거나 카메라가 사용할 수 없거나 설치되지 않은 경우 null을 반환합니다. 카메라가 존재할 경우 connectCamera()
메서드가 호출됩니다. connectCamera()
메서드는 비디오 객체를 인스턴스화합니다. 카메라의 캡처된 비디오를 표시하기 위해 비디오 스트림에 대한 참조가 비디오 객체에 첨부되고 비디오 객체가 표시 목록에 추가됩니다. 또한 MouseEvent.CLICK
이벤트에 대한 이벤트 리스너가 설정됩니다. 사용자가 Stage를 클릭한 후 clickHandler()
메서드가 호출됩니다. 이 메서드는 캡처된 비디오의 폭을 확인하고 카메라 캡처 모드의 폭, 높이 및 초당 프레임 요청 속도를 설정합니다. 이러한 설정을 적용하려면 비디오 객체를 제거하고 다시 만들어야 합니다. 또한 비디오의 폭과 높이는 카메라 객체의 폭과 높이로 설정해야 합니다.
package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.events.MouseEvent; import flash.display.StageScaleMode; public class Camera_setModeExample extends Sprite { private var cam:Camera; private var vid:Video; public function Camera_setModeExample() { stage.scaleMode = StageScaleMode.NO_SCALE; cam = Camera.getCamera(); if (!cam) { trace("No camera is installed."); }else { connectCamera(); } } private function connectCamera():void { vid = new Video(); vid.width = cam.width; vid.height = cam.height; vid.attachCamera(cam); addChild(vid); stage.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(e:MouseEvent):void { switch (cam.width) { case 160: cam.setMode(320, 240, 10); break; case 320: cam.setMode(640, 480, 5); break; default: cam.setMode(160, 120, 15); break; } removeChild(vid); connectCamera(); } } }
setMotionLevel | () | 메서드 |
public function setMotionLevel(motionLevel:int, timeout:int = 2000):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
activity
이벤트를 전달하는 데 필요한 동작의 양을 지정합니다. 런타임에서 모션이 중단되었음을 인지하고 이벤트를 전달하기까지 아무런 활동 없이 경과되어야 하는 시간을 밀리초 단위로 설정할 수도 있습니다.
참고: 비디오는 motionLevel
매개 변수 값과는 관계없이 표시할 수 있습니다. 이 매개 변수는 비디오가 실제로 캡처되거나 표시될지 여부가 아니라 이벤트가 전달되어야 하는 시간과 환경만 결정합니다.
카메라가 동작을 전혀 감지하지 않도록 하려면 motionLevel
매개 변수에 값 100을 전달합니다. 그러면 activity
이벤트가 전달되지 않습니다. 이 값은 주로 이벤트가 전달될 때 일반적으로 트리거되는 핸들러를 임시로 비활성화하는 등의 테스트 목적으로만 사용하게 됩니다.
현재 카메라가 감지하는 동작의 양을 확인하려면 activityLevel
속성을 사용합니다. 동작 민감도 값은 활동 값에 직접 대응됩니다. 동작이 전혀 없는 상태의 활동 값은 0입니다. 계속적인 동작이 있는 상태의 활동 값은 100입니다. 움직임이 없을 때 활동 값은 동작 민감도 값보다 작으며, 움직이는 경우에는 활동 값이 동작 민감도 값을 초과하는 경우가 많습니다.
이 메서드는 Microphone.setSilenceLevel()
메서드와 용도가 비슷합니다. 두 메서드 모두 activity
이벤트를 전달해야 할 시점을 지정하는 데 사용됩니다. 하지만 두 메서드는 스트림을 제작할 때 현저히 다른 특징을 갖습니다.
Microphone.setSilenceLevel()
은 대역폭을 최적화하기 위해 설계되었습니다. 오디오 스트림이 없는 묵음 상태라고 판단되면 오디오 데이터가 전송되지 않습니다. 대신에 묵음 상태가 시작되었음을 나타내는 메시지 하나만 전송됩니다.Camera.setMotionLevel()
은 동작을 감지하도록 설계되었으며 대역폭 사용에는 영향을 주지 않습니다. 비디오 스트림에서 동작이 감지되지 않더라도 비디오는 계속 전송됩니다.
매개 변수
motionLevel:int — activity 이벤트를 전달하는 데 필요한 동작의 양을 지정합니다. 사용할 수 있는 값은 0부터 100까지입니다. 기본값은 50입니다.
| |
timeout:int (default = 2000 ) — 런타임에서 동작이 중단되었음을 인지하고 activity 이벤트를 전달하기까지 아무런 활동 없이 경과되어야 하는 시간을 밀리초 단위로 지정합니다. 기본값은 2000밀리초(2초)입니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
Camera.getCamera()
메서드는 카메라 객체에 대한 참조를 반환하거나 카메라가 사용할 수 없거나 설치되지 않은 경우 null을 반환합니다. if 문은 카메라를 사용할 수 있는지 여부를 확인하고 카메라를 사용할 수 있는 경우 connectCamera()
메서드를 호출합니다. connectCamera()
메서드는 캡처한 스트림의 폭과 높이로 비디오 객체를 인스턴스화합니다. 카메라의 캡처된 비디오를 표시하기 위해 비디오 스트림에 대한 참조가 비디오 객체에 첨부되고 비디오 객체가 표시 목록에 추가됩니다. 일반적으로 attachCamera()
메서드가 호출되면 카메라에 대한 Flash Player 액세스를 허용 또는 거부하라는 대화 상자가 나타납니다. 그러나 사용자가 액세스를 거부하고 기억
옵션을 선택한 경우 대화 상자가 나타나지 않으며 아무 것도 표시되지 않습니다. 카메라에 대한 액세스를 허용하는 옵션이 사용자에게 있다는 것을 알리려면 system.Security.showSettings()
메서드를 사용하여 Flash Player 설정 대화 상자를 호출합니다.
setMotionLevel()
메서드는 활동 이벤트가 호출되기 전에 활동 레벨(동작의 양)을 최소 동작을 나타내는 5로 설정합니다. 카메라가 동작 감지를 중지하는 시점과 활동 이벤트가 호출되는 시점 사이의 시간은 1초(1000밀리초)로 설정됩니다. 활동 없이 1초가 경과하거나 활동 레벨이 5에 도달한 후 ActivityEvent.ACTIVITY
이벤트가 전달되고 activityHandler()
메서드가 호출됩니다. 이 이벤트가 활동 레벨에 의해 트리거된 경우 activating
속성이 true
로 설정되고 Timer 객체가 시작됩니다. 1초마다 Timer 객체의 타이머 이벤트가 전달되고 timerHandler()
메서드가 호출되어 현재 활동 레벨을 표시합니다. 5 이상의 레벨이 타이머를 트리거하지만 표시된 현재 활동 레벨이 더 작은 숫자일 수 있습니다.
package { import flash.display.Sprite; import flash.media.Camera; import flash.media.Video; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.ActivityEvent; public class Camera_setMotionLevelExample extends Sprite { private var myTextField:TextField; private var cam:Camera; private var t:Timer = new Timer(1000); public function Camera_setMotionLevelExample() { myTextField = new TextField(); myTextField.background = true; myTextField.selectable = false; myTextField.autoSize = TextFieldAutoSize.LEFT; cam = Camera.getCamera(); if (!cam) { myTextField.text = "No camera is installed."; }else { myTextField.text = "Waiting to connect."; connectCamera(); } addChild(myTextField); t.addEventListener(TimerEvent.TIMER, timerHandler); } private function connectCamera():void { var vid:Video = new Video(cam.width, cam.height); vid.x = 10; vid.y = 10; vid.attachCamera(cam); addChild(vid); cam.setMotionLevel(5, 1000); cam.addEventListener(ActivityEvent.ACTIVITY, activityHandler); } private function activityHandler(e:ActivityEvent):void { if (e.activating == true) { t.start(); } else { myTextField.text = "Everything is quiet."; t.stop(); } } private function timerHandler(event:TimerEvent):void { myTextField.x = 10; myTextField.y = cam.height + 20; myTextField.text = "There is some activity. Level: " + cam.activityLevel; } } }
setQuality | () | 메서드 |
public function setQuality(bandwidth:int, quality:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
현재 내보내는 비디오 피드의 초당 최대 대역폭이나 요청되는 화질을 설정합니다. 이 메서드는 일반적으로 Flash Media Server를 사용하여 비디오를 전송하는 경우에만 적용할 수 있습니다.
대역폭 사용량이나 화질 등과 같이 내보내는 비디오 피드의 어떤 요소가 응용 프로그램에 더 중요한지 지정하려면 이 메서드를 사용합니다.
- 대역폭 사용량이 우선 순위를 갖도록 설정하려면
bandwidth
에 값을 전달하고quality
를 0으로 설정합니다. 비디오는 지정된 대역폭 내에서 가능한 최고 화질로 전송됩니다. 필요하다면 지정된 대역폭을 초과하지 않도록 화질이 감소됩니다. 일반적으로 동작이 많아지면 화질이 감소합니다. - 화질이 우선 순위를 갖도록 설정하려면
bandwidth
에 0을 전달하고quality
에 숫자 값을 설정합니다. 지정된 화질을 유지하기 위해 필요한 크기의 대역폭이 모두 사용됩니다. 필요하다면 화질을 유지할 수 있도록 프레임 비율이 감소됩니다. 일반적으로 동작이 많아지면 대역폭 사용도 증가합니다. - 대역폭과 화질이 똑같이 중요하도록 지정하려면 두 매개 변수에 모두 숫자 값을 전달합니다. 지정된 화질이 적용되고 지정된 대역폭을 초과하지 않으면서 비디오가 전송됩니다. 필요하다면 지정된 대역폭을 초과하지 않고 화질을 유지할 수 있도록 프레임 비율이 감소됩니다.
매개 변수
bandwidth:int — 현재 내보내는 비디오 피드가 사용할 수 있는 최대 대역폭을 초당 바이트 단위로 지정합니다. 비디오가 quality 값을 유지하는 데 필요한 대역폭을 사용할 수 있도록 지정하려면 bandwidth 에 0을 전달합니다. 기본값은 16384입니다.
| |
quality:int — 원하는 화질 레벨을 지정하는 정수입니다. 각 비디오 프레임에 적용되는 압축 정도에 따라 결정됩니다. 1(최저 품질, 최대 압축)부터 100(최고 품질, 압축 없음)까지 선택할 수 있습니다. 대역폭을 초과하지 않도록 하기 위해 화질을 변경할 수 있도록 지정하려면 quality 에 0을 전달합니다.
|
오류
PermissionError — 응용 프로그램에 카메라를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
activity | 이벤트 |
flash.events.ActivityEvent
속성 ActivityEvent.type =
flash.events.ActivityEvent.ACTIVITY
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
카메라에서 세션이 시작되거나 종료될 때 전달됩니다. Camera.setMotionLevel()
을 호출하여 activity
이벤트를 트리거하는 데 필요한 동작의 양을 지정하거나(activating
값이 true
), 활동이 없는 경우 activity
이벤트를 트리거하기 전에 경과되어야 하는 시간을 지정합니다(activating
값이 false
).
ActivityEvent.ACTIVITY
상수는 activity
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
activating | 장치가 활성화되면 true 이고 비활성화되면 false 입니다. |
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | Camera 또는 Microphone 객체 등 세션을 시작 또는 종료 중인 객체입니다. |
permissionStatus | 이벤트 |
flash.events.PermissionEvent
속성 PermissionEvent.type =
flash.events.PermissionEvent.PERMISSION_STATUS
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 24.0 |
응용 프로그램이 장치의 카메라를 사용할 수 있는 권한을 요청할 때 전달됩니다. status
속성 값을 검사하여 권한이 부여되었는지 아니면 거부되었는지 확인합니다.
관련 API 요소
status | 이벤트 |
flash.events.StatusEvent
속성 StatusEvent.type =
flash.events.StatusEvent.STATUS
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR (unsupported) |
카메라가 상태를 보고할 때 전달됩니다. 카메라에 액세스하기 전에 사용자의 카메라 액세스를 허용 또는 거부할 수 있는 [개인 정보] 대화 상자가 런타임에 표시됩니다. code
속성 값이 "Camera.Muted"
이면 사용자가 카메라에 대한 SWF 파일 액세스를 거부한 것입니다. code
속성 값이 "Camera.Unmuted"
이면 사용자가 카메라에 대한 SWF 파일 액세스를 허용한 것입니다.
참고: AIR 플랫폼에서는 이 이벤트가 전달되지 않습니다. 이 이벤트는 Flash Player에서만 사용됩니다.
status
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
code | 객체의 상태에 대한 설명입니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
level | "status" , "warning" 또는 "error" 같은 메시지 범주입니다. |
target | 상태를 보고하는 객체입니다. |
관련 API 요소
videoFrame | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.VIDEO_FRAME
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.4, AIR 3.4 |
새 카메라 프레임이 런타임에 의해 처리되어 복사할 수 있게 된 후에 전달됩니다.
Event.VIDEO_FRAME
상수는 videoFrame
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
target | 이 이벤트를 전달한 Camera 객체입니다. |
관련 API 요소
activity
이벤트는 세션 시작 및 종료(해당하는 경우) 시점에 전달되고 activityHandler()
메서드에 의해 캡처되어 해당 이벤트에 관한 정보가 출력됩니다.
참고: 이 예제가 제대로 작동하려면 컴퓨터에 카메라가 연결되어 있어야 합니다.
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.*; import flash.media.Camera; import flash.media.Video; public class CameraExample extends Sprite { private var video:Video; public function CameraExample() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var camera:Camera = Camera.getCamera(); if (camera != null) { camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler); video = new Video(camera.width * 2, camera.height * 2); video.attachCamera(camera); addChild(video); } else { trace("You need a camera."); } } private function activityHandler(event:ActivityEvent):void { trace("activityHandler: " + event); } } }
Tue Jun 12 2018, 03:17 PM Z