| 包 | flash.media |
| 类 | public final class Microphone |
| 继承 | Microphone EventDispatcher Object |
| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
有关捕获视频的信息,请参阅 Camera 类。
重要说明:Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问麦克风。请确保应用程序窗口大小至少为 215 x 138 像素,这是显示对话框所需的最小尺寸。
若要创建或引用 Microphone 对象,请使用 Microphone.getMicrophone() 方法。
警告:对于应用程序安全沙箱以外的内容,会显示“隐私”对话框,用户可以从中选择是允许还是拒绝对麦克风的访问。此对话框要求应用程序窗口大小至少为 215 x 138 个像素。对于应用程序安全沙箱内的 Adobe AIR 内容,将允许访问麦克风,且不再显示该对话框。
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
| activityLevel : Number [只读 (read-only)] 麦克风正在检测的音量。 | Microphone | ||
| codec : String 要用于压缩音频的编解码器。 | Microphone | ||
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| encodeQuality : int 使用 Speex 编解码器时的编码语音品质。 | Microphone | ||
| framesPerPacket : int 在一个包(消息)中传输的 Speex 语音帧的数目。 | Microphone | ||
| gain : Number 麦克风增益,即麦克风在传送信号之前将信号放大的倍数。 | Microphone | ||
| index : int [只读 (read-only)] 麦克风的索引,它反映在 Microphone.names 返回的数组中。 | Microphone | ||
| muted : Boolean [只读 (read-only)] 指定用户是已经拒绝对麦克风的访问 (true) 还是已经允许对麦克风的访问 (false)。 | Microphone | ||
| name : String [只读 (read-only)] 当前声音捕获设备的名称,它由声音捕获硬件返回。 | Microphone | ||
| names : Array [静态] [只读 (read-only)] 包含所有可用声音捕获设备名称的字符串数组。 | Microphone | ||
![]() | prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | |
| rate : int 麦克风捕获声音时使用的频率,单位是 kHz。 | Microphone | ||
| silenceLevel : Number [只读 (read-only)] 激活麦克风并调度 activity 事件所需的音量。 | Microphone | ||
| silenceTimeout : int [只读 (read-only)] 麦克风停止检测声音的时间和调度 activity 事件的时间之间相差的毫秒数。 | Microphone | ||
| soundTransform : SoundTransform 在此麦克风对象处于环回模式时,控制它的声音。 | Microphone | ||
| useEchoSuppression : Boolean [只读 (read-only)] 如果启用了回音抑制,则设置为 true;否则,设置为 false。 | Microphone | ||
| 方法 | 定义方 | ||
|---|---|---|---|
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | |
![]() | 将事件调度到事件流中。 | EventDispatcher | |
[静态] 返回对用于捕获音频的 Microphone 对象的引用。 | Microphone | ||
![]() | 检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | |
![]() |
指示对象是否已经定义了指定的属性。 | Object | |
![]() |
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() |
指示指定的属性是否存在、是否可枚举。 | Object | |
![]() | 从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | |
将麦克风捕获的音频传送到本地扬声器。 | Microphone | ||
![]() |
设置循环操作动态属性的可用性。 | Object | |
设置可认定为有声的最低音量输入水平,以及实际静音前需经历的无声时间长度(可选)。 | Microphone | ||
指定是否使用音频编解码器的回音抑制功能。 | Microphone | ||
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object | |
![]() | 检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher | |
| 事件 | 摘要 | 定义方 | ||
|---|---|---|---|---|
![]() | [广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | ||
| 在麦克风开始或结束会话时调度。 | Microphone | |||
![]() | [广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | ||
| 在麦克风报告其状态时调度。 | Microphone | |||
| activityLevel | 属性 |
activityLevel:Number [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
麦克风正在检测的音量。值的范围为 0(未检测到声音)到 100(检测到非常大的声音)。此属性的值有助于确定向 Microphone.setSilenceLevel() 方法传递的适当值。
如果麦克风可用,但却因为尚未调用 Microphone.getMicrophone() 而未被使用,则此属性设置为 -1。
public function get activityLevel():Number另请参见
| codec | 属性 |
codec:String [读写] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10, AIR 1.5 |
要用于压缩音频的编解码器。使用的默认编解码器为 Nellymoser 编解码器。枚举类 SoundCodec 包含各种对 codec 属性有效的值。
public function get codec():String public function set codec(value:String):void另请参见
| encodeQuality | 属性 |
encodeQuality:int [读写] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10, AIR 1.5 |
使用 Speex 编解码器时的编码语音品质。可能值为从 0 到 10 的值。默认值为 6。数字越大,表示品质越高,但需要更多的带宽,如下表所示。列出的比特率值表示净比特率,并不包括信息分包开销。
| 品质值 | 所需的比特率(KB/秒) |
|---|---|
| 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另请参见
| framesPerPacket | 属性 |
framesPerPacket:int [读写] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10, AIR 1.5 |
在一个包(消息)中传输的 Speex 语音帧的数目。每帧长 20 ms。默认值为每个包两帧。
消息中包含的 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 指示 Flash Player 将其乘以 0;即麦克风不传送声音。
您可以将此设置想象为立体声音响上的音量旋钮:0 表示没有音量,50 表示正常音量。 小于 50 的数字表示低于正常音量,大于 50 的数字表示高于正常音量。有效值为 0 到 100,默认值为 50。用户可以在 Flash Player 的“麦克风设置”面板中更改此值。
public function get gain():Number public function set gain(value:Number):void另请参见
| index | 属性 |
index:int [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
麦克风的索引,它反映在 Microphone.names 返回的数组中。
public function get index():int另请参见
| muted | 属性 |
muted:Boolean [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定用户是已经拒绝对麦克风的访问 (true) 还是已经允许对麦克风的访问 (false)。当该值发生变化时,将调度 status 事件。有关详细信息,请参阅 Microphone.getMicrophone()。
public function get muted():Boolean另请参见
| name | 属性 |
name:String [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
当前声音捕获设备的名称,它由声音捕获硬件返回。
public function get name():String另请参见
| names | 属性 |
names:Array [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
包含所有可用声音捕获设备名称的字符串数组。返回名称,但不必向用户显示 Flash Player 的“专用设置”面板。此数组通过 Microphone.names.length 属性提供每个声音捕获设备的从零开始的索引和系统上声音捕获设备的数量。有关详细信息,请参阅 Array 类条目。
调用 Microphone.names 要求全面检查硬件,并可能需要几秒钟时间才能生成数组。大多数情况下,使用默认麦克风即可。
注意:若要确定当前麦克风的名称,请使用 name 属性。
public static function get names():Array另请参见
| rate | 属性 |
rate:int [读写] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
麦克风捕获声音时使用的频率,单位是 kHz。允许的值是声音设备支持的任何以下值:5、8、11、22 或 44。
如果您的声音捕获设备支持 8 kHz,则默认值为 8 kHz。否则,默认值为您的声音捕获设备支持且高于 8 kHz 的下一个可用捕获级别,通常为 11 kHz。
public function get rate():int public function set rate(value:int):void| silenceLevel | 属性 |
silenceLevel:Number [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
激活麦克风并调度 activity 事件所需的音量。默认值为 10。
public function get silenceLevel():Number另请参见
| silenceTimeout | 属性 |
silenceTimeout:int [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
麦克风停止检测声音的时间和调度 activity 事件的时间之间相差的毫秒数。默认值为 2000(2 秒)。
若要设置此值,请使用 Microphone.setSilenceLevel() 方法。
public function get silenceTimeout():int另请参见
| soundTransform | 属性 |
soundTransform:SoundTransform [读写] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
在此麦克风对象处于环回模式时,控制它的声音。
public function get soundTransform():SoundTransform public function set soundTransform(value:SoundTransform):void| useEchoSuppression | 属性 |
useEchoSuppression:Boolean [只读 (read-only)] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
如果启用了回音抑制,则设置为 true;否则,设置为 false。除非用户已经在 Flash Player 的“麦克风设置”面板中选择了“降低回音”,否则默认值为 false。
public function get useEchoSuppression():Boolean另请参见
| getMicrophone | () | 方法 |
public static function getMicrophone(index:int = -1):Microphone| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
返回对用于捕获音频的 Microphone 对象的引用。若要开始捕获音频,您必须将 Microphone 对象附加到 NetStream 对象(请参阅 NetStream.attachAudio())。
对 Microphone.get() 的多次调用会引用同一个麦克风。因此,如果代码包含 mic1 = Microphone.get() 和 mic2 = Microphone.get() 行,则 mic1 和 mic2 将引用同一个(默认)麦克风。
如果要获取默认的麦克风,则需要使用 -1 调用 getMicrophone()。如果调用此方法时不使用任何参数,则会返回列表中的第一个麦克风。
可以使用 index 属性来获取当前 Microphone 对象的索引值。然后,可以将该值传递给 Microphone 类的其它方法。
通常,不应传递 index 的值。只需使用 Microphone.getMicrophone() 方法即可返回对默认麦克风的引用。通过使用“麦克风设置”面板,用户可以指定应用程序应使用的默认麦克风。如果传递 index 的值,则可能会引用非用户选择的其它麦克风。在极少数情况下(例如,应用程序同时从两个麦克风捕获音频),您可能会使用 index。
当 SWF 文件尝试访问 Microphone.getMicrophone() 返回的对象时(例如,在调用 NetStream.attachAudio() 时),Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问麦克风。(确保舞台大小至少为 215 x 138 个像素;这是 Flash Player 显示该对话框所需的最小大小。)
当用户对此对话框做出响应时,将调度 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 文件访问其麦克风。 |
另请参见
| setLoopBack | () | 方法 |
public function setLoopBack(state:Boolean = true):void| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
将麦克风捕获的音频传送到本地扬声器。
参数
state:Boolean (default = true) |
| setSilenceLevel | () | 方法 |
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
设置可认定为有声的最低音量输入水平,以及实际静音前需经历的无声时间长度(可选)。
silenceLevel 传递值 100;这样就决不会再调度 activity 事件了。
Microphone.activityLevel。
活动检测是检测声音级别在何时表示某人正在谈话的功能。当某人没有谈话时,由于不需要发送关联的音频流,因此可以节约带宽。此信息也可用于视频反馈,以便让用户知道他们(或其他人)没有谈话。
静音值与活动值直接对应。完全静音对应于活动值 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。)
|
另请参见
| setUseEchoSuppression | () | 方法 |
public function setUseEchoSuppression(useEchoSuppression:Boolean):void| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
指定是否使用音频编解码器的回音抑制功能。除非用户已经在 Flash Player 的“麦克风设置”面板中选择了“降低回音”,否则默认值为 false。
回音抑制是指降低音频回馈效果,当扬声器发出的声音由同一台计算机上的麦克风拾取时,将导致音频回馈。(这不同于回音消除,后者完全消除回馈。)
通常情况下,当通过同一台计算机上的扬声器(而不是耳机)播放所捕获的声音时,建议使用回音抑制。如果您的 SWF 文件允许用户指定声音输出设备,则当他们指定使用扬声器并且还将使用麦克风时,您可能需要调用 Microphone.setUseEchoSuppression(true)。
用户也可以在 Flash Player 的“麦克风设置”面板中调整这些设置。
参数
useEchoSuppression:Boolean —
一个用于指示是应该使用 (true) 还是不应该使用 (false) 回音抑制的布尔值。
|
另请参见
| activity | 事件 |
flash.events.ActivityEventflash.events.ActivityEvent.ACTIVITY| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
在麦克风开始或结束会话时调度。
若要指定触发 activating 属性值为 true 的此事件所需的音量,或者指定在没有声音的情况下经过多长时间才会触发 activating 属性值为 false 的此事件,请使用 Microphone.setSilenceLevel()。
ActivityEvent.ACTIVITY 常数定义 activity 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
activating
|
如果设备已激活则为 true,如果被取消激活则为 false。
|
bubbles
|
false
|
cancelable
|
false;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target
| 开始或结束会话的对象,如 Camera 或 Microphone 对象。 |
另请参见
| status | 事件 |
flash.events.StatusEventflash.events.StatusEvent.STATUS| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 Flash Player 9 |
在麦克风报告其状态时调度。如果 code 属性的值为“Microphone.Muted”,则表示用户拒绝 SWF 文件访问麦克风。如果 code 属性的值为“Microphone.Unmuted”,则表示用户允许 SWF 文件访问麦克风。
status 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles
|
false
|
cancelable
|
false;没有要取消的默认行为。
|
code
| 对象状态的描述。 |
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
level
|
消息类别,例如 "status"、"warning" 或 "error"。
|
target
| 报告其状态的对象。 |
另请参见
Security.showSettings() 方法显示 Flash Player 对话框,请求提供对用户的麦克风的访问权限。对 setLoopBack(true) 的调用会将输入重新发送到本地扬声器,以便在运行示例时可以听到声音。
有两个侦听器用于侦听 activity 和 status 事件。activity 事件在会话开始和结束(如果有)时被调度,并由 activityHandler() 方法捕获(此方法跟踪有关该事件的信息)。status 事件在附加的 Microphone 对象报告任何状态信息时被调度;将使用 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);
}
}
}