在视频程序的编写过程中,我们经常要使用摄像头,在使用摄像头前有必要对摄像头的现有状态做个检测:
1.被占用
2.没安装摄像头
3.正常
看下面代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml%22
layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var camera:Camera;
private var isExistsCamera:Boolean=false;
private var isBusyCamera:Boolean=false;
private var intervalId:uint;
private var times:int;
private function init():void
{
camera=Camera.getCamera();
if (camera == null)
{
if (Camera.names.length <= 0)
{
this.isExistsCamera=false;
Alert.show("没安装摄像头");
}
}
else
{
this.vdpaly.attachCamera(this.camera);
this.isCameraBusy();
}
}
private function isCameraBusy():void
{
this.intervalId=setInterval(callback,50);
}
private function callback():void
{
trace("currentFPS=" + camera.currentFPS.toString());
if (camera.currentFPS > 0)
{
//视频设备可用
clearInterval(this.intervalId);
this.isBusyCamera=false;
Alert.show("摄像头正常");
}
else
{
times++;
trace("times=" + times.toString());
if (times > 30)
{
//视频设备忙
clearInterval(intervalId);
this.isBusyCamera=true;
Alert.show("摄像头被占用");
}
}
}
private function cl():void
{
Alert.show(this.camera.currentFPS.toString());
}
]]>
</mx:Script>
<mx:VideoDisplay id="vdpaly" click="cl()" x="44" y="64" width="232" height="236"/>
</mx:WindowedApplication>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml%22
layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var camera:Camera;
private var isExistsCamera:Boolean=false;
private var isBusyCamera:Boolean=false;
private var intervalId:uint;
private var times:int;
private function init():void
{
camera=Camera.getCamera();
if (camera == null)
{
if (Camera.names.length <= 0)
{
this.isExistsCamera=false;
Alert.show("没安装摄像头");
}
}
else
{
this.vdpaly.attachCamera(this.camera);
this.isCameraBusy();
}
}
private function isCameraBusy():void
{
this.intervalId=setInterval(callback,50);
}
private function callback():void
{
trace("currentFPS=" + camera.currentFPS.toString());
if (camera.currentFPS > 0)
{
//视频设备可用
clearInterval(this.intervalId);
this.isBusyCamera=false;
Alert.show("摄像头正常");
}
else
{
times++;
trace("times=" + times.toString());
if (times > 30)
{
//视频设备忙
clearInterval(intervalId);
this.isBusyCamera=true;
Alert.show("摄像头被占用");
}
}
}
private function cl():void
{
Alert.show(this.camera.currentFPS.toString());
}
]]>
</mx:Script>
<mx:VideoDisplay id="vdpaly" click="cl()" x="44" y="64" width="232" height="236"/>
</mx:WindowedApplication>
代码说明:
camera == null,那么就是没安装摄像头
如果摄像头被占用,那么camera.currentFPS 肯定不会大 于0,而是等于0
我之前有研究过.是这样
转自:http://blog.163.com/terry_boss/blog/static/3335226220095114272344/?fromdm&fromSearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2009-04-16 C# 生成js文件
2009-04-16 onmousemove与onmouseover区别