`
tw5566
  • 浏览: 458831 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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>

 

分享到:
评论
1 楼 mst1 2010-07-25  
似乎audioshow_bar这个变量没有定义,估计有点问题

相关推荐

    flex-messaging-core-4.7.3.jar

    flex-messaging-core-4.7.3.jar 最新版,下载了好长时间才下载下来,亲测可用!

    bison-2.1和flex-2.5.4a-1

    在编程世界中,`bison` 和 `flex` 是两款非常重要的工具,它们主要用于解析器和词法分析器的生成。...在`bison-2.1`和`flex-2.5.4a-1`这两个版本中,我们可以期待它们提供了稳定的性能和兼容性,以满足各种项目的需要。

    flex-2.5.4a-29.i386 flex-2.5.4a-29.i386.rpm

    这个特定的文件“flex-2.5.4a-29.i386.rpm”是Flex的一个版本,版本号为2.5.4a,修订版29,针对i386架构。RPM(Red Hat Package Manager)是Linux发行版中常用的软件包管理格式,用于安装、升级和卸载软件。 在深入...

    Flex通讯系列---Flex与SWF(一)

    这里讲述的是在Flex Application中嵌套一个SWF,然后实现Flex与SWF相互间的通讯。我们需要引入SystemManager接口实现。 环境:Eclipse + Flex Builder

    flex-2.5.4a-1

    一个很好的编译软件,呵呵

    FLEX资源---------手把手实现WebService服务与通讯

    标题中的"FLEX资源---------手把手实现WebService服务与通讯"表明了本文主要关注的是使用Adobe Flex进行Web服务的创建和通信。Flex是一种用于构建富互联网应用程序(RIA)的开放源码框架,它允许开发者构建交互性强...

    flex------组件-----数据可视化

    在这个“flex------组件-----数据可视化”主题中,我们将探讨Flex如何帮助开发者创建交互式的数据图表和可视化效果。 Flex框架提供了一套强大的组件库,其中包括用于数据可视化的类和库。这些组件使得开发人员能够...

    flex开发详解--企业级开发实例

    flex开发详解--企业级开发实例 flex开发详解--企业级开发实例 flex开发详解--企业级开发实例

    Flex 工程源码--EmployeeMgmt-Flex.7z

    这个压缩包"Flex 工程源码--EmployeeMgmt-Flex.7z"包含了名为"EmployeeMgmt-Flex"的Flex项目源代码,很可能是用于员工管理的系统。下面我们将详细探讨Flex的相关知识点。 1. **Flex框架**:Flex是一套完整的开发...

    flex 简单demo ---增删改查

    flex 简单demo ---包含:增,删,改,查的实际应用

    flex-messaging-core.jar

    在flex-messaging-core.jar中,包含了一些关键组件和接口,例如: 1. **MessageBroker**: 这是Flex消息传递系统的中心,它管理消息的路由,调度和处理。MessageBroker实例化并配置了各种服务,如HTTP、HTTPS、RTMP...

    flex-2.5.4+bison-2.4.1+mingw.zip

    资源包含flex-2.5.4+bison-2.4.1+mingw,此外包含本人写的测试源码,编译命令及详细过程,另附一些有用的文章pdf,用于编译原理课程学习。详细使用参考文章:...

    flex布局-flex-layout-master.zip

    - `flex`:是`flex-grow`, `flex-shrink`和`flex-basis`的简写形式。 - `align-self`:允许单个Flex项独立设置其在交叉轴上的对齐方式,覆盖容器的`align-items`属性。 5. **Flex容器属性**:用于控制整个Flex...

    Flex4实现音频播放器-显示语音波形

    在本文中,我们将深入探讨如何使用Flex4技术来创建一个功能丰富的音频播放器,特别是将重点放在如何在播放器界面上显示语音波形这一高级特性上。Flex4是Adobe Flash Platform的一部分,它提供了强大的组件库和框架,...

    flex完全自学手册-- 电子教案 PPT

    Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript编程语言和MXML标记语言,主要用于创建交互式的、具有丰富图形效果的Web应用。本自学手册主要聚焦于Flex的学习与实践,通过...

    Flex第一步--基于ActionScript 3.0的Flex 2应用开发 第2、 6、 13章

    Flex是Adobe公司推出的一种用于构建富互联网应用程序(RIA, Rich Internet Applications)的开源框架,它主要基于Flash Player或Adobe AIR运行环境。本资料主要聚焦在Flex 2的应用开发,特别是结合ActionScript 3.0...

Global site tag (gtag.js) - Google Analytics