패키지 | flash.media |
클래스 | public final class Microphone |
상속 | Microphone EventDispatcher Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
장치 마이크에 액세스하려면 Microphone.getMicrophone()
메서드를 사용할 수 있습니다. 하지만 이 메서드는 어쿠스틱 에코를 제거하는 기능이 없는 단순한 마이크를 반환합니다. 어쿠스틱 에코를 제거하려면 Microphone.getEnhancedMicrophone()
메서드를 사용하여 마이크의 인스턴스를 가져와야 합니다. 이 메서드는 모바일에 대해 어쿠스틱 에코 제거 기능이 활성화된 장치 마이크를 반환합니다. 어쿠스틱 에코 제거 기능을 통해 헤드셋이 필요하지 않은 실시간 오디오/비디오 응용 프로그램을 만들 수 있습니다.
실시간 채팅 응용 프로그램 만들기
실시간 채팅 응용 프로그램을 만들려면 오디오를 캡처해서 Flash Media Server로 전송해야 합니다. NetConnection 및 NetStream 클래스를 사용하여 오디오 스트림을 Flash Media Server로 전송합니다. Flash Media Server는 전송된 오디오를 다른 클라이언트에 브로드캐스팅할 수 있습니다. 헤드셋이 필요하지 않은 채팅 응용 프로그램을 만들려면 어쿠스틱 에코 제거 기능을 사용합니다. 어쿠스틱 에코 제거 기능은 오디오가 마이크로 들어가서 스피커로 흘러나온 후 다시 마이크로 들어갈 때 발생하는 피드백 루프를 방지합니다. 어쿠스틱 에코 제거를 사용하려면 Microphone.getEnhancedMicrophone()
메서드를 호출하여 Microphone 인스턴스에 대한 참조를 가져옵니다. 그런 다음 Microphone.enhancedOptions
를 MicrophoneEnhancedOptions
클래스의 인스턴스로 설정하고 설정을 구성합니다.
마이크 오디오를 로컬에서 재생
Microphone setLoopback()
메서드를 호출하여 마이크 오디오를 로컬 컴퓨터 또는 장치 오디오 출력으로 직접 라우팅합니다. 제어되지 않은 오디오 피드백은 내재적인 위험 요소이며 마이크 입력을 통해 오디오를 바로 출력할 때 항상 발생할 수 있습니다. setUseEchoSuppression()
메서드가 피드백 증폭의 위험을 줄일 수는 있지만 없앨 수는 없습니다.
로컬 녹음 및 처리를 위해 마이크 오디오 캡처
마이크 오디오를 캡처하려면 Microphone 인스턴스에 의해 전달되는 sampleData
이벤트를 수신합니다. 이 이벤트에 대해 전달된 SampleDataEvent 객체에 오디오 데이터가 포함되어 있습니다.
비디오 캡처에 대한 자세한 내용은 Camera 클래스를 참조하십시오.
런타임 마이크 지원
Microphone 클래스는 모바일 브라우저에서 실행 중인 Flash Player에서 지원되지 않습니다.
AIR 프로파일 지원: Microphone 클래스는 데스크톱 운영 체제와 iOS 및 Android 모바일 장치에서 지원됩니다. AIR for TV 장치에서는 지원되지 않습니다. 여러 프로파일 간 API 지원에 대한 자세한 내용은 AIR 프로파일 지원을 참조하십시오.
Microphone.isSupported
속성을 사용하여 런타임에 지원을 테스트할 수 있습니다. AIR for TV 장치의 경우 Microphone.isSupported
는 true
이지만 Microphone.getMicrophone()
는 항상 null
을 반환합니다.
개인 정보 통제
Flash Player에 표시되는 [개인 정보] 대화 상자에서 마이크에 대한 액세스를 허용하거나 거부할 수 있습니다. 응용 프로그램 윈도우 크기는 최소 215 x 138 픽셀이어야 합니다. 이는 대화 상자를 표시하기 위한 최소 크기로, 이 요구 사항이 충족되지 않으면 액세스가 자동으로 거부됩니다.
AIR 응용 프로그램 샌드박스에서 실행되는 내용에는 마이크에 대한 액세스 권한이 필요하지 않으므로 대화 상자가 표시되지 않습니다. 응용 프로그램 샌드박스 외부에서 실행되는 AIR 내용은 권한을 필요로 하므로 [개인 정보] 대화 상자가 표시됩니다.
추가 정보
Cristophe Coenraets: Android에 대한 음성 메모
Michael Chaize: AIR, Android 및 마이크
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
activityLevel : Number [읽기 전용]
마이크가 감지하는 사운드 크기입니다. | Microphone | ||
codec : String
오디오 압축에 사용할 코덱입니다. | Microphone | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
enableVAD : Boolean
Speex 음성 활동 검출을 사용하도록 설정합니다. | Microphone | ||
encodeQuality : int
Speex 코덱을 사용할 때의 인코딩된 음성 품질입니다. | Microphone | ||
enhancedOptions : MicrophoneEnhancedOptions
고급 마이크 옵션을 제어합니다. | Microphone | ||
framesPerPacket : int
패킷(메시지)으로 전송된 Speex 음성 프레임 수입니다. | Microphone | ||
gain : Number
마이크가 신호를 증폭하는 양입니다. | Microphone | ||
index : int [읽기 전용]
Microphone.names에 의해 반환되는 배열에 반영된 마이크의 인덱스입니다. | Microphone | ||
isSupported : Boolean [정적] [읽기 전용]
현재 플랫폼에서 Microphone 클래스가 지원되면 isSupported 속성이 true로 설정되고, 그렇지 않으면 false로 설정됩니다. | Microphone | ||
muted : Boolean [읽기 전용]
사용자가 마이크에 대한 액세스를 거부(true)했는지 아니면 허용(false)했는지 나타냅니다. | Microphone | ||
name : String [읽기 전용]
사운드 캡처 하드웨어에서 반환된 현재 사운드 캡처 장치 이름입니다. | Microphone | ||
names : Array [정적] [읽기 전용]
사용 가능한 모든 사운드 캡처 장치의 이름을 포함하는 문자열 배열입니다. | Microphone | ||
noiseSuppressionLevel : int
Speex 인코더에 사용되는 노이즈의 최대 감쇠(dB, 음수)입니다. | Microphone | ||
permissionStatus : String [정적] [읽기 전용]
응용 프로그램에 마이크에 액세스할 수 있는 권한이 부여되었는지 여부를 확인합니다. | Microphone | ||
rate : int
마이크가 사운드를 캡처하는 속도(kHz)입니다. | Microphone | ||
silenceLevel : Number [읽기 전용]
마이크를 활성화하고 activity 이벤트를 전달하는 데 필요한 사운드 크기입니다. | Microphone | ||
silenceTimeout : int [읽기 전용]
마이크가 사운드 감지를 중지한 때부터 activity 이벤트가 전달되기까지의 시간(밀리초)입니다. | Microphone | ||
soundTransform : flash.media:SoundTransform
루프백 모드일 때 마이크 객체의 사운드를 제어합니다. | Microphone | ||
useEchoSuppression : Boolean [읽기 전용]
반향 제거를 사용하려면 true로 설정하고 사용하지 않으려면 false로 설정합니다. | Microphone |
메서드 | 정의 주체 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
[정적]
어쿠스틱 에코 제거를 수행할 수 있는 고급 Microphone 객체에 대한 참조를 반환합니다. | Microphone | ||
[정적]
오디오를 캡처할 Microphone 객체에 대한 참조를 반환합니다. | Microphone | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
응용 프로그램에 대한 마이크 권한을 요청합니다. | Microphone | ||
마이크로 캡처한 오디오를 로컬 스피커로 라우팅합니다. | Microphone | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
소리가 입력된다고 인지되는 최소 입력 레벨을 설정합니다. 실질적으로 소리가 소거되기 시작한 시간의 양을 설정할 수도 있습니다. | Microphone | ||
오디오 코덱의 반향 억제 기능을 사용할지 여부를 지정합니다. | Microphone | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
activityLevel | 속성 |
activityLevel:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
마이크가 감지하는 사운드 크기입니다. 값은 0(사운드가 감지되지 않음)부터 100(매우 큰 사운드가 감지됨)까지입니다. 이 속성 값은 Microphone.setSilenceLevel()
메서드에 전달할 최적 값을 계산할 때 유용합니다.
마이크 muted
속성이 true
인 경우 이 속성의 값은 항상 -1입니다.
구현
public function get activityLevel():Number
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
codec | 속성 |
codec:String
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
오디오 압축에 사용할 코덱입니다. 사용할 수 있는 코덱은 Nellymoser(기본값)와 Speex입니다. 열거형 클래스 SoundCodec
에는 codec
속성에 유효한 여러 값이 포함되어 있습니다.
Nellymoser 코덱을 사용할 경우 Microphone.rate()
를 사용하여 샘플 속도를 설정할 수 있습니다. Speex 코덱을 사용할 경우 샘플 속도는 16kHz로 설정됩니다.
Speex에는 VAD(음성 활동 검출) 기능이 있어 음성이 검출되지 않을 때 대역폭이 자동으로 낮아집니다. 따라서 Speex 코덱을 사용하는 경우에는 묵음 레벨을 0으로 설정하는 것이 좋습니다. 묵음 레벨을 설정하려면 Microphone.setSilenceLevel()
메서드를 사용합니다.
구현
public function get codec():String
public function set codec(value:String):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
enableVAD | 속성 |
enableVAD:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
Speex 음성 활동 검출을 사용하도록 설정합니다.
구현
public function get enableVAD():Boolean
public function set enableVAD(value:Boolean):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
encodeQuality | 속성 |
encodeQuality:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
Speex 코덱을 사용할 때의 인코딩된 음성 품질입니다. 가능한 값은 0에서 10 사이입니다. 기본값은 6입니다. 다음 표와 같이 숫자가 크면 품질이 높아지지만 대역폭이 더 많이 필요합니다. 나열된 비트율 값은 패킷화 오버헤드가 포함되지 않은 순 비트율을 나타냅니다.
품질 값 | 필요한 비트율(초당 킬로비트) |
---|---|
0 | 3.95 |
1 | 5.75 |
2 | 7.75 |
3 | 9.80 |
4 | 12.8 |
5 | 16.8 |
6 | 20.6 |
7 | 23.8 |
8 | 27.8 |
9 | 34.2 |
10 | 42.2 |
구현
public function get encodeQuality():int
public function set encodeQuality(value:int):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
enhancedOptions | 속성 |
enhancedOptions:MicrophoneEnhancedOptions
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.3, AIR 2.7 |
고급 마이크 옵션을 제어합니다. 자세한 내용은 MicrophoneEnhancedOptions
클래스를 참조하십시오. 이 속성은 향상되지 않은 Microphone 인스턴스에서는 무시됩니다.
구현
public function get enhancedOptions():MicrophoneEnhancedOptions
public function set enhancedOptions(value:MicrophoneEnhancedOptions):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
framesPerPacket | 속성 |
framesPerPacket:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
패킷(메시지)으로 전송된 Speex 음성 프레임 수입니다. 각 프레임의 길이는 20ms입니다. 기본값은 패킷당 두 개 프레임입니다.
메시지에 Speex 프레임이 많을수록 대역폭이 적게 필요하지만 메시지를 보낼 때의 지연 시간이 길어집니다. 반대로, Speex 프레임이 적을수록 대역폭이 많이 필요하지만 지연 시간이 짧아집니다.
구현
public function get framesPerPacket():int
public function set framesPerPacket(value:int):void
gain | 속성 |
gain:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
마이크가 신호를 증폭하는 양입니다. 유효한 값은 0부터 100까지입니다. 기본값은 50입니다.
구현
public function get gain():Number
public function set gain(value:Number):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
index | 속성 |
index:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
Microphone.names
에 의해 반환되는 배열에 반영된 마이크의 인덱스입니다.
구현
public function get index():int
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
isSupported | 속성 |
muted | 속성 |
muted:Boolean
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
사용자가 마이크에 대한 액세스를 거부했는지(true
) 아니면 허용했는지(false
) 나타냅니다. 이 값이 변경되면 status
이벤트가 전달됩니다. 자세한 내용은 Microphone.getMicrophone()
을 참조하십시오.
구현
public function get muted():Boolean
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
name | 속성 |
names | 속성 |
names:Array
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
사용 가능한 모든 사운드 캡처 장치의 이름을 포함하는 문자열 배열입니다. Flash Player의 [개인 정보 설정] 패널을 표시하지 않아도 반환됩니다. 이 배열은 시스템에 있는 사운드 캡처 장치의 수와 각 사운드 캡처 장치의 0부터 시작하는 인덱스를 Microphone.names.length
속성을 통해 제공합니다. 자세한 내용은 Array 클래스 항목을 참조하십시오.
Microphone.names
를 호출하면 광범위한 하드웨어 검사가 실시되며, 배열을 구성하려면 수 초가 소요됩니다. 대부분의 경우 기본 마이크를 사용합니다.
참고: 현재의 마이크 이름을 확인하려면 name
속성을 사용합니다.
구현
public static function get names():Array
관련 API 요소
noiseSuppressionLevel | 속성 |
noiseSuppressionLevel:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.1, AIR 2 |
Speex 인코더에 사용되는 노이즈의 최대 감쇠(dB, 음수)입니다. 사용하도록 설정할 경우 Speex 압축 전 Microphone에서 캡처한 사운드에 노이즈 억제가 적용됩니다. 0으로 설정하면 노이즈 억제가 사용하지 않도록 설정됩니다. 노이즈 억제는 기본적으로 최대 -30dB의 감쇠가 적용되도록 설정됩니다. Nellymoser 코덱을 선택한 경우 무시됩니다.
구현
public function get noiseSuppressionLevel():int
public function set noiseSuppressionLevel(value:int):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
permissionStatus | 속성 |
rate | 속성 |
rate:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
마이크가 사운드를 캡처하는 속도(kHz)입니다. 사용할 수 있는 값에는 5, 8, 11, 22 및 44가 있습니다. 사운드 캡처 장치가 이 값을 지원하면 8kHz가 기본값입니다. 그렇지 않으면 기본값은 사운드 캡처 장치가 지원하는 8kHz 이상의 다음 사용 가능한 캡처 레벨이며 보통 11kHz입니다.
참고: 다음 표와 같이 실제 속도는 rate
값과 약간 다릅니다.
rate 값 | 실제 주파수 |
---|---|
44 | 44,100Hz |
22 | 22,050Hz |
11 | 11,025Hz |
8 | 8,000Hz |
5 | 5,512Hz |
구현
public function get rate():int
public function set rate(value:int):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
silenceLevel | 속성 |
silenceLevel:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
마이크를 활성화하고 activity
이벤트를 전달하는 데 필요한 사운드 크기입니다. 기본값은 10입니다.
구현
public function get silenceLevel():Number
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
silenceTimeout | 속성 |
silenceTimeout:int
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
마이크가 사운드 감지를 중지한 때부터 activity
이벤트가 전달되기까지의 시간(밀리초)입니다. 기본값은 2000(2초)입니다.
이 값을 설정하려면 Microphone.setSilenceLevel()
메서드를 사용합니다.
구현
public function get silenceTimeout():int
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
soundTransform | 속성 |
soundTransform:flash.media:SoundTransform
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
루프백 모드일 때 마이크 객체의 사운드를 제어합니다.
구현
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
useEchoSuppression | 속성 |
getEnhancedMicrophone | () | 메서드 |
public static function getEnhancedMicrophone(index:int = -1):Microphone
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10.3, AIR 2.7 |
어쿠스틱 에코 제거를 수행할 수 있는 고급 Microphone 객체에 대한 참조를 반환합니다. 어쿠스틱 에코 제거 기능을 통해 헤드셋이 필요하지 않은 오디오/비디오 채팅 응용 프로그램을 만들 수 있습니다.
index
매개 변수는 Microphone.getEnhancedMicrophone()
메서드와 Microphone.getMicrophone()
메서드에 대해 동일한 방식으로 작동합니다.
Android에서 이 메서드를 사용하려면 응응 프로그램 설명자의 Android manifest additions에 MODIFY_AUDIO_SETTINGS
권한을 추가합니다.
중요: 특정 시간에 향상된 마이크 장치 인스턴스가 하나만 있을 수 있습니다. 다른 모든 Microphone 인스턴스는 오디오 데이터 제공을 중단하고 code
속성이 Microphone.Unavailable
인 StatusEvent
를 수신합니다. 향상된 오디오를 초기화할 수 없는 경우 이 메서드 호출에서는 null
을 반환하고 Microphone.enhancedOptions
의 값을 설정해도 아무 효과가 없지만 모든 기존 Microphone 인스턴스는 예전처럼 작동합니다.
향상된 Microphone 객체를 구성하려면 Microphone.enhancedOptions
속성을 설정합니다. 다음 코드에서는 로컬 테스트에 향상된 Microphone 객체와 전이중 어쿠스틱 에코 제거를 사용합니다.
var mic:Microphone = Microphone.getEnhancedMicrophone(); var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions(); options.mode = MicrophoneEnhancedMode.FULL_DUPLEX; mic.enhancedOptions = options; mic.setLoopBack(true);
어쿠스틱 에코 제거를 사용할 때는 setUseEchoSuppression()
메서드가 무시됩니다.
SWF 파일이 Microphone.getEnhancedMicrophone()
에 의해 반환된 객체에 액세스하려는 경우, 예를 들어 NetStream.attachAudio()
를 호출하는 경우 마이크에 대한 액세스 허용 여부를 선택할 수 있는 [개인 정보] 대화 상자가 표시됩니다. 스테이지 크기가 215 x 138 픽셀 이상이 되도록 하십시오. 이 크기는 대화 상자가 표시되는 데 필요한 최소 크기입니다.
매개 변수
index:int (default = -1 ) — 마이크의 인덱스 값입니다.
|
Microphone — 오디오를 캡처할 Microphone 객체에 대한 참조입니다. 향상된 오디오를 초기화할 수 없는 경우 null 을 반환합니다.
|
관련 API 요소
getMicrophone | () | 메서드 |
public static function getMicrophone(index:int = -1):Microphone
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
오디오를 캡처할 Microphone 객체에 대한 참조를 반환합니다. 오디오 캡처를 시작하려면 NetStream 객체에 Microphone 객체를 첨부해야 합니다(NetStream.attachAudio()
참조).
Microphone.getMicrophone()
을 여러 번 호출해도 동일한 마이크를 참조합니다. 따라서 코드에 mic1 = Microphone.getMicrophone()
및 mic2 = Microphone.getMicrophone()
이 포함된 경우 mic1
과 mic2
모두 동일한 (기본) 마이크를 참조합니다.
일반적으로 index
의 값을 전달해서는 안됩니다. air.Microphone.getMicrophone()
을 호출하기만 하면 기본 마이크에 대한 참조가 반환됩니다. Flash Player 설정 패널의 [마이크 설정] 섹션에서 응용 프로그램에서 사용해야 하는 기본 마이크를 지정할 수 있습니다. 사용자는 웹 브라우저에서 실행되는 Flash Player 내용을 마우스 오른쪽 버튼으로 클릭하여 Flash Player 설정 패널에 액세스할 수 있습니다. index
값을 전달하면 사용자가 선택한 것과 다른 마이크를 참조할 수 있습니다. index
는 응용 프로그램이 동시에 두 마이크의 오디오를 캡처하는 것과 같은 경우를 제외하고는 거의 사용되지 않습니다. Adobe AIR에서 실행되는 내용 또한 Flash Player의 기본 마이크 설정을 사용합니다.
Microphone.index
속성을 사용하여 현재 Microphone 객체의 인덱스 값을 구합니다. 그런 다음 이 값을 Microphone 클래스의 다른 메서드로 전달하면 됩니다.
SWF 파일이 Microphone.getMicrophone()
에 의해 반환된 객체에 액세스하려면 예를 들어 NetStream.attachAudio()
를 호출하는 경우 마이크에 대한 액세스 허용 여부를 선택할 수 있는 [개인 정보] 대화 상자가 표시됩니다. 스테이지 크기가 215 x 138 픽셀 이상이 되도록 하십시오. 이 크기는 대화 상자가 표시되는 데 필요한 최소 크기입니다.
사용자가 이 대화 상자에 응답하면 사용자의 응답을 나타내는 status
이벤트가 전달됩니다. 또한 Microphone.muted
속성을 검사하여 사용자의 마이크에 대한 액세스가 허용 또는 거부 여부를 확인할 수 있습니다.
다른 응용 프로그램에서 마이크를 사용 중이거나 시스템에 설치된 마이크가 없으면 Microphone.getMicrophone()
은 null
을 반환합니다. 설치된 마이크가 있는지 여부를 확인하려면 Microphones.names.length
를 사용합니다. Flash Player 마이크 설정 패널을 표시하여 사용자가 Microphone.getMicrophone
에 의해 참조될 마이크를 선택할 수 있도록 하려면 Security.showSettings()
를 사용합니다.
매개 변수
index:int (default = -1 ) — 마이크의 인덱스 값입니다.
|
Microphone — 오디오를 캡처할 Microphone 객체에 대한 참조입니다.
|
이벤트
status: — 마이크가 상태를 보고할 때 전달됩니다. code 속성 값이 "Microphone.Muted" 인 경우 SWF 파일이 사용자 마이크에 액세스하지 못하도록 차단한 것입니다. code 속성 값이 "Microphone.Unmuted" 인 경우 SWF 파일이 사용자 마이크에 액세스할 수 있도록 허용한 것입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
var mic:Microphone = Microphone.getMicrophone(); mic.setLoopBack(); mic.addEventListener(StatusEvent.STATUS, mic_status); var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "Detecting microphone..."; addChild(tf); function mic_status(evt:StatusEvent):void { tf.text = "Microphone is muted?: " + mic.muted; switch (evt.code) { case "Microphone.Unmuted": tf.appendText("\n" + "Microphone access was allowed."); break; case "Microphone.Muted": tf.appendText("\n" + "Microphone access was denied."); break; } }
requestPermission | () | 메서드 |
public function requestPermission():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 24.0 |
응용 프로그램에 대한 마이크 권한을 요청합니다.
이벤트
PermissionStatus: — 사용자가 요청된 권한을 부여/거부할 때 전달됩니다.
|
setLoopBack | () | 메서드 |
public function setLoopBack(state:Boolean = true):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
마이크로 캡처한 오디오를 로컬 스피커로 라우팅합니다.
매개 변수
state:Boolean (default = true )
|
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
setSilenceLevel | () | 메서드 |
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
소리가 입력된다고 인지되는 최소 입력 레벨을 설정합니다. 실질적으로 소리가 소거되기 시작한 시간의 양을 설정할 수도 있습니다.
- 마이크가 사운드를 전혀 감지하지 않도록 하려면
silenceLevel
값으로 100을 전달합니다. 그러면activity
이벤트가 전달되지 않습니다. - 마이크가 현재 검출하는 사운드의 양을 확인하려면
Microphone.activityLevel
을 사용합니다.
Speex에는 VAD(음성 활동 검출) 기능이 있어 음성이 검출되지 않을 때 대역폭이 자동으로 낮아집니다. 따라서 Speex 코덱을 사용하는 경우에는 묵음 레벨을 0으로 설정하는 것이 좋습니다.
활동 검출은 오디오 레벨이 사람이 말하고 있다는 것을 나타낼 때 이를 인지하는 능력입니다. 말하고 있지 않을 때는 관련된 오디오 스트림을 전송할 필요가 없기 때문에 대역폭을 절약할 수 있습니다. 이 정보를 시각적으로 표시하여 현재 소리가 없다는 것을 사용자가 알 수 있도록 할 수 있습니다.
묵음 값은 활동 값에 직접 대응합니다. 완전한 묵음 상태는 활동 값이 0입니다. 계속적인 큰 소음(현재 게인 설정을 기준으로 등록 가능한 크기)은 활동 값이 100입니다. 게인이 적절하게 조절된 후에는 말하지 않고 있을 때 활동 값이 묵음 값보다 작습니다. 말하는 중에는 활동 값이 묵음 값보다 큽니다.
이 메서드는 Camera.setMotionLevel()
과 유사하며 둘 다 activity
이벤트가 전달되는 시간을 지정하는 데 사용됩니다. 하지만 두 메서드는 스트림을 제작할 때 현저히 다른 특징을 갖습니다.
Camera.setMotionLevel()
은 동작을 감지하도록 설계되었으며 대역폭 사용에는 영향을 주지 않습니다. 비디오 스트림에서 동작이 감지되지 않더라도 비디오는 계속 전송됩니다.Microphone.setSilenceLevel()
은 대역폭을 최적화하기 위해 설계되었습니다. 오디오 스트림이 없는 묵음 상태라고 판단되면 오디오 데이터가 전송되지 않습니다. 대신에 묵음 상태가 시작되었음을 나타내는 메시지 하나만 전송됩니다.
매개 변수
silenceLevel:Number — 마이크를 활성화하고 activity 이벤트를 전달하는 데 필요한 사운드 크기입니다. 사용할 수 있는 값은 0부터 100까지입니다.
| |
timeout:int (default = -1 ) — Flash Player 또는 Adobe AIR가 사운드가 정지되었음을 인식하고 dispatch 이벤트를 전달하기까지 아무런 동작 없이 경과되어야 하는 밀리초 단위의 시간입니다. 기본값은 2000(2초)입니다. 참고: 서명에 표시된 기본값 -1은 Flash Player 또는 Adobe AIR에서 2000을 사용하도록 지시하는 내부 값입니다.
|
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
setUseEchoSuppression | () | 메서드 |
public function setUseEchoSuppression(useEchoSuppression:Boolean):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
오디오 코덱의 반향 억제 기능을 사용할지 여부를 지정합니다. Flash Player의 [마이크 설정] 패널에서 [반향 줄이기]가 선택되어 있지 않은 경우 기본값은 false
입니다.
반향을 억제하면 오디오 피드백의 영향을 줄일 수 있습니다. 오디오 피드백은 스피커를 통해 출력되는 사운드가 동일한 시스템에 있는 마이크에 입력될 때 발생합니다. 이 기능은 어쿠스틱 에코 제거와는 다릅니다. 어쿠스틱 에코 제거는 피드백을 완전히 제거합니다. getEnhancedMicrophone()
메서드를 호출하여 어쿠스틱 에코 제거를 사용할 때는 setUseEchoSuppression()
메서드가 무시됩니다.
일반적으로 캡처 중인 사운드를 헤드셋이 아니라 스피커를 통해 재생할 때는 반향 제거를 사용하는 것이 좋습니다. SWF 파일에서 사용자가 사운드 출력 장치를 선택할 수 있도록 허용하는 경우 스피커를 사용 중이며 마이크도 동시에 사용할 예정이라면 Microphone.setUseEchoSuppression(true)
을 호출할 수 있습니다.
Flash Player의 [마이크 설정] 패널에서 이 설정 값을 조정할 수도 있습니다.
매개 변수
useEchoSuppression:Boolean — 에코 제거를 사용할지(true ), 아니면 사용하지 않을지(false )를 나타내는 부울 값입니다.
|
오류
PermissionError — 응용 프로그램에 마이크를 사용할 수 있는 권한이 없습니다.
|
관련 API 요소
Security.showSettings()
메서드는 사용자 마이크에 대한 액세스 권한을 요청하는 Flash Player 대화 상자를 표시합니다. setLoopBack(true)
호출은 로컬 스피커에 대한 입력을 다시 라우팅하므로 예제를 실행하는 동안 사운드를 들을 수 있습니다.
두 개의 리스너는 activity
및 status
이벤트를 수신합니다. activity
이벤트는 세션 시작 및 종료(해당하는 경우) 시점에 전달되고 이벤트에 대한 정보를 추적하는 activityHandler()
메서드에 의해 캡처됩니다. status
이벤트는 연결된 마이크 객체가 상태 정보를 보고할 때 전달되며, statusHandler()
메서드를 사용하여 캡처 및 추적됩니다.
참고: 이 예제가 제대로 작동하려면 컴퓨터에 마이크가 연결되어 있어야 합니다.
package { import flash.display.Sprite; import flash.events.*; import flash.media.Microphone; import flash.system.Security; public class MicrophoneExample extends Sprite { public function MicrophoneExample() { var mic:Microphone = Microphone.getMicrophone(); Security.showSettings("2"); mic.setLoopBack(true); if (mic != null) { mic.setUseEchoSuppression(true); mic.addEventListener(ActivityEvent.ACTIVITY, activityHandler); mic.addEventListener(StatusEvent.STATUS, statusHandler); } } private function activityHandler(event:ActivityEvent):void { trace("activityHandler: " + event); } private function statusHandler(event:StatusEvent):void { trace("statusHandler: " + event); } } }
Tue Jun 12 2018, 03:17 PM Z