`

flex视音频通讯-摄像头及麦克风检测

    博客分类:
  • Flex
 
阅读更多

flex视音频通讯-摄像头及麦克风检测

<mx:Script>
<![CDATA[
import mx.controls.VideoDisplay;
import flash.media.Camera;
import flash.media.Microphone;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.utils.StringUtil;
import mx.managers.PopUpManager;
import flash.net.NetConnection;
import mx.rpc.soap.mxml.WebService;
import mx.collections.ArrayCollection;

[Bindable]
private
var camData:ArrayCollection = new ArrayCollection();
[Bindable]
private
var micData:ArrayCollection = new ArrayCollection();

private
var mycamera:Camera;
private
var mymicrophone:Microphone;
private
var isCamera:Boolean=false;
private
var isMicrophone:Boolean=false;
private
var isMicrophone2:Boolean=false;
private
var iserrmsg:Boolean=false;
private
var showtimer:Timer=new Timer(100);

NetConnection.defaultObjectEncoding
= flash.net.ObjectEncoding.AMF0;

private
function login_init():void
{

camData.removeAll();
for(var i:String in Camera.names)
{
var item:Object={data:i,Lable:Camera.getCamera(i).name.toString()};
camData.addItem(item);
}
micData.removeAll();
for(var j:String in Microphone.names)
{
var item2:Object={data:i,Lable:Microphone.getMicrophone(Number(j)).name.toString()};
micData.addItem(item2);
}
Cam_init();
Mic_init();
}
private
function Cam_init():void
{
isCamera
=false;
cam_lbl.text
="" ;
var index:int=cam_CB.selectedIndex;
if(index>-1)
{
mycamera
= Camera.getCamera(index.toString());
}
else
{
mycamera
= Camera.getCamera();
}
if(mycamera != null)
{
mycamera.addEventListener(StatusEvent.STATUS,camonStatusHandler);
mycamera.addEventListener(ActivityEvent.ACTIVITY, camactivityHandler);
mycamera.setMode(
240,180,12);//设置所捕获视频的宽度(160)高度(120)帧速(15)是否控制宽度、高度和帧频(true)
mycamera.setQuality(0,85);//设置输出视像输送的最大带宽(max:0,default:16384)以及画面质量(max:0,1-100)。
mycamera.setKeyFrameInterval(48);//设置视频传输的帧速和压缩算法(1-48)。
var camvd:VideoDisplay = new VideoDisplay();
camvd.width
=240;
camvd.height
=180;
vd_canvas.addChild(camvd);
camvd.attachCamera(mycamera);
cam_lbl.text
="摄像头未接入或被占用";
}
else
{
isCamera
=false;
cam_lbl.text
="摄像头未安装";
}
}
//摄像头初始化返回结果
private function camactivityHandler(event:ActivityEvent):void
{
isCamera
=true;
cam_lbl.text
="摄像头工作正常";
mycamera.removeEventListener(ActivityEvent.ACTIVITY,camactivityHandler);
}
//检测摄像头允许使用权限
private function camonStatusHandler(event:StatusEvent):void
{
if(mycamera.muted)
{
isCamera
=false;
cam_lbl.text
="摄像头未允许使用";
}
else
{
mycamera.removeEventListener(StatusEvent.STATUS,camonStatusHandler);
}
}
private
function Mic_init():void
{
isMicrophone
=false;
isMicrophone2
=false;
mic_lbl.text
="";
var index:int=mic_CB.selectedIndex;
if(index>-1)
{
mymicrophone
= Microphone.getMicrophone(index);
}
else
{
mymicrophone
= Microphone.getMicrophone();
}
mymicrophone.setUseEchoSuppression(
true);
mymicrophone.setLoopBack(
true);
if(mymicrophone != null)
{
showtimer.addEventListener(TimerEvent.TIMER,micvolshow_show);
showtimer.start();
mymicrophone.addEventListener(ActivityEvent.ACTIVITY, micactivityHandler);
mymicrophone.addEventListener(StatusEvent.STATUS, micstatusHandler);
isMicrophone
=true;
mic_lbl.text
="麦克风未接入或被占用";
}
else
{
isMicrophone
=false;
mic_lbl.text
="麦克风未安装";
}
}
private
function micactivityHandler(event:ActivityEvent):void
{
isMicrophone
=true;
isMicrophone2
=true;
mic_lbl.text
="麦克风正常";
mymicrophone.removeEventListener(ActivityEvent.ACTIVITY,micactivityHandler);
}

private
function micstatusHandler(event:StatusEvent):void
{
if(mymicrophone.muted)
{
isMicrophone
=false;
mic_lbl.text
="麦克风未允许使用";
}
else
{
isMicrophone
=true;
mymicrophone.removeEventListener(StatusEvent.STATUS,micstatusHandler);
}
}
private
function micvolshow_show(event:TimerEvent):void
{
audioshow_bar.width
=int(mymicrophone.activityLevel);
}

]]
>
</mx:Script>
<mx:Style source="ico/body.css"></mx:Style>
<mx:Label x="262" y="43" text="摄像头状态:" color="#000000"/>
<mx:Label x="262" y="148" text="麦克风状态:" color="#000000"/>
<mx:Label x="10" y="259" width="426" textAlign="center" id="conn_lbl" color="#FF0000"/>
<mx:Label x="262" y="62" width="178" id="cam_lbl" color="#FF0000" text="没有图像哦"/>
<mx:Label x="262" y="169" width="178" id="mic_lbl" color="#FF0000" text="没有声音哦"/>
<mx:Canvas x="10" y="9" width="240" height="180" backgroundImage="@Embed(source='ico/videobj.png')" id="vd_canvas">
</mx:Canvas>
<mx:ComboBox x="258" y="10" id="cam_CB" width="178" dataProvider="{camData}" labelField="Lable" change="Cam_init();"></mx:ComboBox>
<mx:ComboBox x="258" y="91" id="mic_CB" width="178" dataProvider="{micData}" labelField="Lable" change="Mic_init();"></mx:ComboBox>
分享到:
评论

相关推荐

    基于flex 和red5的视频聊天

    1. **客户端初始化**:用户打开视频聊天应用,Flex客户端请求访问用户的摄像头和麦克风,并建立与Red5服务器的连接。 2. **流媒体发布**:客户端通过RTMP协议将摄像头和麦克风的输入流发布到Red5服务器的特定通道。...

    AdvancED_ActionScript_3.0_CN 中文版

    - **二级输入设备:摄像头和麦克风** - 输入的声音、声控游戏 - 活跃事件 - 输入的视频、视频尺寸和质量 - 视频和位图 - 反转图像、分析像素 - 分析颜色、跟踪颜色视作输入 - 分析移动区域、边缘检测 - **...

    Adobe.Flash.Media.Server.3.开发者向导.简体中文版

    - **实时视频流**:用户通过配备摄像头和麦克风的设备捕捉实况音视频,通过服务器向全球观众发布。 - **在线游戏同步**:多用户可以参与同一款在线游戏,服务器确保所有玩家的动作同步,创造沉浸式游戏体验。 - **...

    常见手机零配件及电子产品中英文对照.doc

    7. **Audio Earphone Flex Cable**:音频排线,连接耳机插孔,处理音频输出。 8. **Charging Port Dock Connector Flex Cable**:尾插排线,用于充电和数据传输。 9. **Proximity Light Sensor Flex Cable**:感应...

    ActionScript开发人员指南中文版

    摄像头、麦克风、剪贴板、鼠标和键盘访问 AIR安全性 第章:如何使用ActionScript示例 示例类型 在FlashProfessional中运行ActionScript示例 在FlashBuilder中运行ActionScript示例 在移动设备上运行ActionScript示例 ...

Global site tag (gtag.js) - Google Analytics