2004/09/24 | [教程]Flash MX 2004 对视频摄像头的获取教程
类别(我闪推荐) | 评论(2) | 阅读(254) | 发表于 14:08
作者:123Webwizard 译:芦大伟

效果:http://www.xingmiao.cn/news/inc/soho/aticle/mycam.htm
下载:http://www.xingmiao.cn/news/inc/soho/aticle/cam.rar
这将是一个简短的文章关于Flash播放器7的视频捕获,Actionscript 2.0的两个类使得在这个版本中捕获视频成为可能,它们是
1、Camera Class
2、Video Class

Camera类起初是用于Macromedia 的Flash信息服务器的,但仅限于用在没有服务器的情况正是我们将要讨论的。制作一个仅限于此版本的能够捕获安装有PC摄像头的用户的视频的Flash电影,例如,给你本地添加一个视频监视系统。

以下就是故事的正文!

我们将用Flash MX2004的方法,压缩包里和这个教程相关的有3个文件:

项目文件:wwinc_cam.flp
.FLA源文件:mycam.fla
.AS类文件:MyVideoPlayer.as
.SWF文件: mycam.swf
html网页文档:mycam.htm

项目文件:
********************
如果你是一个程序员,而且你已经有了一些在Microsoft Visual Studios 或者 JBuilder的工作经验的话,你可能已经有了对项目这个概念的认识,而对于非程序员,那就是,对于一个工程的一个计划文件,例如:这里的wwinc_cam.flp,它包含了一些相关的文件,mycam.fla(源文件), mycam.swf (浏览器要执行的文件)等等其它的。

.FLA源文件
********************
Actionscript 2.0定义了一个内置的类,它可以让你移植自定义的共享了你自定义的方法和属性的对像在单独的.as文件里或在动作面板里。但关键字诸如static 是可利用的在外部AS文件中。

例如:如果你正开发一个发票管理系统,你可能需要建立一个发票生成的类,在这个类里定义了所有的用于每次开发票时用到的方法和属性,你将以后用new invoice()命令来建立一个发票对像。形式如:

var MyInvoice = new invoice();

类的名字必须是和包含此类的外部存储文件的名字一样的,例如:如果你命名一个类MyVideoPlayer,包含定义这个类的文件必须命名为MyVideoPlayer.as

对类的解说研究的太深就远离我们这个教程了

对于这儿的这个例子,MyVideoPlayer.as就是我们自定义的类文件。(这将也给你一个关于AS2.0的自定义类的解释的提示),代码是加好了注释的,所以我们来直接看一看它:

/******************************
译者: 芦大伟
52soho.yeah.net
*******************************/
class MyVideoPlayer extends Object {
private var CamObj ;
function MyVideoPlayer() { }
/*检查摄像头是否已经安装了或是没有安装找不到
***************************************************/
public function hasCamera():Boolean{
if (null != Camera.get()) {
return true;
}
else {
return false;
}
}
/*our interface to the status field
***********************************/
public function setStatus(str):Void {
_root.status.text += str;
}
/*这个函数实际上是捕获了视频数据流
**************************************************/
public function captureVideo(vo):Void {
var wwinc_Cam = Camera.get();
/*改变默认的帧频率*/
wwinc_Cam.setMode(280, 210, 30);
/*确保 4096 比特/秒 (4K/second) 被发送
视频质量最小到50 */
wwinc_Cam.setQuality(4096, 50);
vo.attachVideo(wwinc_Cam);
/*视频将是平滑的就像我们在舞台上的物体一样*/
vo.smoothing = true;
/*输出视频对像用于更多的用处*/
setCameraObject(wwinc_Cam);
}
private function setCameraObject(co){
this.CamObj = co;
}
public function getCamera():Camera{
return this.CamObj;
}
}
.FLA 源文件:
*********************
这是Flash源文件,它包括:视频对像和几个对我们代码类的调用,这几个类是被连接的。
如下:

var wwinc_mvp = new MyVideoPlayer();
with(wwinc_mvp){
if(hasCamera()==true){
setStatus("Capturing Devices(s) found...\n");
captureVideo(myVideo_mc);
}
else{
setStatus("No display devices are installed or in use!\n");
}
}
/*从视频对像处得到当前状态
************************************/
wwinc_mvp.getCamera().onStatus = function(msg) {
if (msg.code == "Camera.Muted") {
wwinc_mvp.setStatus("User has denied access to the camera!");
}
else{
with(wwinc_mvp){
setStatus("Video Device started...\n");
setStatus("Frames per second: " + getCamera().fps + "\n");
}
}
};
wwinc_mvp.getCameraObject().onActivity = function(activity) {
/*
事件句柄;当视频开始和停止的时候被调用
探测动作如果你想要对此事件有响应!!
*/
};
其它文件:
************
有两个文件是同样作用的,演示效果文件 ;-)
.SWF 文件: mycam.swf
.HTML 文件: mycam.htm

希望它可以用于任何人,我已经测试通过了而且只花了一小会儿的时间!
0

评论Comments