`

flex连接摄像头

    博客分类:
  • flex
阅读更多
<?xml version="1.0" encoding="utf-8"?>  
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="750" height="600" creationComplete="initApp()">  
	<mx:Style>  
		Alert{font-size:12px;}  
	</mx:Style>  
	<mx:Script> 
		<![CDATA[  
			import mx.events.CloseEvent;  
			import mx.rpc.events.FaultEvent;  
			import mx.rpc.events.ResultEvent;  
			import mx.controls.Alert;  
			private static const DEFAULT_CAMERA_WIDTH:Number = 260; //摄像头显示宽度  
			private static const DEFAULT_CAMERA_HEIGHT:Number = 220; //摄像头显示高度  
			// private static const DEFAULT_WEBSERVICE_URL:String = "http://localhost:1888/Web/TestWebService.asmx?WSDL"; //WebService地址  
			
			private var m_camera:Camera; //定义一个摄像头  
			private var m_localVideo:Video; //定义一个本地视频  
			private var m_pictureBitmapData:BitmapData //定义视频截图  
			[Bindable]  
			private var m_pictureData:String;  
			
			private function initApp():void  
			{  
				t_btn_Shooting.enabled = false;  
				t_ban_Save.enabled = false;  
				initCamera();  
			}  
			
			//初始化摄像头  
			private function initCamera():void  
			{  
				m_camera = Camera.getCamera();  
				if(m_camera != null)  
				{  
					m_camera.addEventListener(StatusEvent.STATUS,__onCameraStatusHandler);  
					
					m_camera.setMode(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT,30);  
					m_localVideo = new Video();  
					m_localVideo.width = DEFAULT_CAMERA_WIDTH;  
					m_localVideo.height = DEFAULT_CAMERA_HEIGHT;  
					m_localVideo.attachCamera(m_camera);  
					t_vd_Video.addChild(m_localVideo);  
				}  
				else  
				{  
					Alert.show("没有找到摄像头,是否重新查找。","提示:",Alert.OK|Alert.NO,this,__InitCamera);  
					return;  
				}  
			}  
			
			//拍照按钮事件,进行视频截图  
			private function SnapshotPicture():void  
			{  
				m_pictureBitmapData = new BitmapData(DEFAULT_CAMERA_WIDTH,DEFAULT_CAMERA_HEIGHT);  
				
				m_pictureBitmapData.draw(t_vd_Video,new Matrix());  
				var m_pictureBitmap:Bitmap = new Bitmap(m_pictureBitmapData);  
				t_img_Picture.addChild(m_pictureBitmap);  
				
				t_panel_Picture.visible = true;  
				t_ban_Save.enabled = true;  
			}  
			
			//保存按钮事件,保存视频截图  
			//通过WebService保存  
			//     private function SavePicture():void  
			//    {  
			//                 m_pictureData = "";  
			//                 for(var i:int = 0; i < DEFAULT_CAMERA_WIDTH; i++)  
			//                 {  
			//                    for(var j:int = 0; j < DEFAULT_CAMERA_HEIGHT; j++)  
			//                     {  
			//                        if(m_pictureData.length > 0)  
			//                        {  
			//				m_pictureData += "," + m_pictureBitmapData.getPixel32(i,j).toString();  
			//                         }  
			//                         else  
			//                         {  
			//                             m_pictureData = m_pictureBitmapData.getPixel32(i,j).toString();  
			//                         }  
			//                    }  
			//                 }  
			//               //  t_ws_SavePicture.SavePicture.send();  
			//             }  
			
			//检测摄像头权限事件  
			private function __onCameraStatusHandler(event:StatusEvent):void  
			{  
				if(!m_camera.muted)  
				{  
					t_btn_Shooting.enabled = true;  
				}  
				else  
				{  
					Alert.show("无法链接到活动摄像头,是否重新检测。","提示:",Alert.OK|Alert.NO,this,__InitCamera);  
				}  
				m_camera.removeEventListener(StatusEvent.STATUS,__onCameraStatusHandler);  
			}  
			
			//当摄像头不存在,或连接不正常时重新获取  
			private function __InitCamera(event:CloseEvent):void  
			{  
				if(event.detail == Alert.OK)  
				{  
					initApp();  
				}  
			}  
			
			//WebService保存图片成功事件  
			private function __onSavePictureResult(event:ResultEvent):void  
			{  
				//trace(event.result);  
				if(event.result.toString() == "保存成功")  
				{  
					Alert.show(event.result.toString(),"提示",Alert.OK,this,__onAlertCloseHandler);  
				}  
				else  
				{  
					Alert.show(event.result.toString(),"提示",Alert.OK);  
				}  
			}  
			
			//连接WebService失败事件  
			private function __onSavePictureFault(event:FaultEvent):void  
			{  
				//Alert.show(event.fault.toString(),"提示",Alert.OK);  
				Alert.show("连接WebService失败。","提示",Alert.OK);  
			}  
			
			//保存图片成功后的弹出窗口确认事件  
			private function __onAlertCloseHandler(event:CloseEvent):void  
			{  
				if(event.detail == Alert.OK)  
				{  
					//trace("转向页面");  
				}  
			}  
			
			
			public function SavePicture(){  
				
				var params:URLVariables = new URLVariables();  
				m_pictureData = "";  
				for(var i:int = 0; i < DEFAULT_CAMERA_WIDTH; i++)  
				{  
					for(var j:int = 0; j < DEFAULT_CAMERA_HEIGHT; j++)  
					{  
						if(m_pictureData.length > 0)  
						{  
							m_pictureData += "," + m_pictureBitmapData.getPixel32(i,j).toString();  
						}  
						else  
						{  
							m_pictureData = m_pictureBitmapData.getPixel32(i,j).toString();  
						}  
					}  
				}  
				params.width = DEFAULT_CAMERA_WIDTH;    
				params.height = DEFAULT_CAMERA_HEIGHT;  
				params.bitmap_data = m_pictureData;  
				
				savePictureService.url = "http://localhost:8088/archive/savepicturesrv";  
				savePictureService.send(params);      
				
			}          
		]]>  
	</mx:Script>  
	
	<mx:HTTPService showBusyCursor="true" id="savePictureService" method="POST" resultFormat="xml"  
					fault="__onSavePictureFault(event)" result="__onSavePictureResult(event)"/>     
	<mx:Panel x="10" y="10" width="280" height="300" layout="absolute" title="视频拍照" fontSize="12">  
		<mx:VideoDisplay id="t_vd_Video" width="260" height="220"/>  
		<mx:ControlBar horizontalAlign="right">  
			<mx:Button id="t_btn_Shooting" label="拍照" click="SnapshotPicture()"/>  
		</mx:ControlBar>  
	</mx:Panel>  
	<mx:Panel id="t_panel_Picture" x="298" y="10" width="280" height="300" layout="absolute" title="拍照图片" fontSize="12" visible="false">  
		<mx:Image id="t_img_Picture" x="0" y="0" width="260" height="220"/>  
		<mx:ControlBar   horizontalAlign="right">  
			<mx:Button id="t_ban_Save" label="保存" click="SavePicture()" />  
		</mx:ControlBar>  
	</mx:Panel>  
</mx:Application>
分享到:
评论

相关推荐

    FLEX视频摄像头录制上传到服务器及FMS服务器的安装与配置

    在本文中,我们将深入探讨如何使用FLEX技术实现视频摄像头录制,并将录制的视频上传到FMS(Flash Media Server)服务器。首先,我们先来理解一下FLEX是什么以及它的核心功能。 FLEX全称为Flex Framework,是Adobe...

    flex 多摄像头 发布 接收

    在这个“flex多摄像头发布接收”示例中,我们将探讨如何在Flex中利用多摄像头功能进行视频流的发布与接收。 1. **Flex中的摄像头API** Flex提供了内置的`Camera`类,允许开发者访问和控制用户的摄像头设备。通过`...

    flex实现现实用户摄像头实例

    在这个代码中,我们首先获取摄像头实例,然后在用户点击"Start Camera"按钮时,我们将摄像头连接到`videoDisplay`组件。如果未找到摄像头,程序会输出一条错误消息。 此外,Flex还提供了Microphone类,可以用来访问...

    flex连接到FMS详解

    本文将详细阐述如何使用Flex连接到FMS,并实现视频发送功能。 **一、准备工作** 1. **开发工具**: 首先,你需要安装Flash MX Authoring工具,这是Flex的基础。同时,你也需要Flash MX Communication Server,它是...

    flex_video_帮助

    此外,还可以使用 `attachCamera()` 和 `attachNetStream()` 方法来连接摄像头或网络流。 #### 三、Flex Video 的核心属性详解 ##### 1. accessibilityProperties: AccessibilityProperties 该属性用于定义 Flex ...

    Flex视频语音文字聊天程序

    此外,`Camera` 和 `Microphone` 类分别用于捕获视频和音频输入,`Camera.getCamera()` 方法用于获取系统默认摄像头,`setMode` 和 `setQuality` 方法则分别用于设置摄像头的分辨率和视频质量,从而实现视频的实时...

    flex 视频录制于推流

    1. **初始化摄像头和网络连接**:在`init()`方法中调用`setupCamera()`初始化摄像头,这为后续的视频录制打下基础。同时创建了一个`NetConnection`对象用于连接到指定的RTMP服务器(例如:`rtmp://127.0.0.1:1935/...

    flex for android 90分钟 完全入门

    6. **移动开发特定功能**:由于目标是Android应用,所以课程可能会涉及如何利用Flex实现特定的移动功能,如访问手机硬件特性(摄像头、GPS)、使用本地存储、处理设备方向变化等。 7. **Adobe AIR for Android**:...

    flex 视频聊天 基于red5

    3. 实现视频捕捉:在Flex应用中,使用Camera类捕获用户的摄像头视频,用户可以选择开启或关闭摄像头。 4. 实现音频捕捉:通过Microphone类获取用户的麦克风声音,同时可以处理音频增益和静音等设置。 5. 建立RTMP...

    使用Flex4.5开发Android应用程序

    这使得开发者能够利用Android的硬件功能,如GPS、摄像头、蓝牙等,同时保持跨平台的Flex代码。 七、调试和测试 Flash Builder提供了一套完整的调试工具,包括源码级调试、性能分析等。你可以直接在模拟器或连接的...

    flex开发框架

    4. **处理Android特定功能**:通过ActionScript调用Android Native API,实现访问硬件特性,如摄像头、GPS等。 5. **测试与调试**:使用模拟器或连接的Android设备进行测试,确保应用在不同设备上的兼容性和性能。 ...

    flex拍照案例,java后台保存照片

    - Flex 支持跨平台部署,但在不同操作系统上的摄像头驱动可能不同,需测试兼容性。 - Java 后端则通常具有良好的跨平台特性。 - **错误处理**: - Flex 和 Java 应用中都需要实现异常处理机制,确保程序在遇到...

    flex 代码总结

    在本文中,我们将深入探讨Flex中的关键概念,主要聚焦于摄像头操作、视频播放、自动弹出框、屏幕分辨率获取以及XML文件的读取。Flex是一个用于构建富互联网应用(RIA)的开发框架,它允许开发者创建具有交互性、动态...

    flex+fms实现视频直播源码

    这个项目提供了一个简单示例,演示了如何利用Flex进行摄像头和音频的捕获与录制,以及如何将这些内容实时推送到FMS服务器进行广播。下面将详细介绍这个系统的工作原理和关键知识点。 1. **Flex**:Flex是Adobe推出...

    flex 视频聊天程序

    Flex应用可以通过建立RTMP连接,实现实时的视频流通信。 1. **视频捕捉与编码**:在Flex中,我们可以使用Camera类获取用户的摄像头视频流,并通过Video对象显示。Camera类提供了调整摄像头设置(如分辨率、帧率)的...

    Flex实现的视频聊天室

    通过Flash Player,Flex可以捕获用户的摄像头和麦克风输入,实现实时的视频和音频传输。此外,它还能够对视频和音频数据进行编码和解码,确保数据在网络中的高效传输。 2. **Socket通信**:为了实现多用户间的实时...

    Flex Mobile M-JPEG

    Flex Mobile M-JPEG 是一种技术实现,用于在Adobe Flex移动应用程序中播放来自IP摄像头的M-JPEG(Motion JPEG)格式的视频流。Flex是基于ActionScript 3的开放源码框架,常用于创建富互联网应用(RIA)以及移动应用...

    flex 大头贴摄像简单实现

    8. **错误处理**:在开发过程中,确保添加适当的错误处理代码,以便在摄像头未连接、权限问题或其他异常情况时向用户提供反馈。 9. **多设备兼容性**:虽然Flex主要用于桌面应用,但也可以通过Adobe AIR运行在移动...

    flex4.5 手机应用开发

    开发者可以通过 ActionScript 实现业务逻辑,与移动设备的硬件特性如摄像头、GPS 等进行交互。 五、移动项目的创建与配置 在 Flash Builder 中,你可以选择“Mobile Project”模板来创建一个新的移动应用项目。在...

Global site tag (gtag.js) - Google Analytics