今天需要设置Flex中的Camera组件的一些属性,后来发现清晰度不是很高,于是捣鼓了上午半天,设置了很多的参数,竟然发现手册上就是有现成的一些设置方法,郁闷!不过我还是专门设置了几个有用和必要的属性,为自己的程序中应用,其实很简单!
以此为例:
Camera.setMode(320,240,15);

就是要设置一个宽320、高240、播放速率是15fps,他的带宽消耗:

(320*240*15)/1000000 = 1.2(Mbps) = 1152000(Bps)//1000000是1024*1024的取舍写法也即:1000*1000而获得的;

 关于所消耗的带宽,换成我们能看懂的带宽计算就是:

320*240*15/8000 = 144K/s (也即每秒144K)//由此可见,画面的尺寸和播放率的播放效果是跟带宽有一定的关系的~

接下来可以这样设置视频的质量:
由于在设置的时候function setQuality(bandwidth:int, quality:int)使用的单位是不一样的,bandwidth使用的是kbps,而不是Bps,要转换(8 bits =1 byte ),所以要转换一下1152000/8 = 144000 (kbps) ,
接下来要设置播放的质量时候必须这样设置

Camera.setQuality(144000,85);// (85为常规的视频质量,最好就采用这个数值)

接下来就是设置传输的视频关键帧了,可以根据实际的带宽情况来设置,记住:关键帧数值越小带宽使用率越大,反之关键帧数值越大带宽使用率越小。值 例如:1 表示每一帧都是关键帧,那么就是每帧都要传输出去,就会加大带宽的使用了,依此类推。可接受值为 1 至 48。对于画面质量要求不高的话,可以设置到48;对于质量要求很高的话,最好设置到5-10左右;

Camera.setKeyFrameInterval(48);

对于摄像头来说,最佳的成像比例是4:3,所以最好是将所成像的比例按照这个最小比例设置!

下面是网络摄像头和数字视频摄像头内置的典型设置:

160 x 120
176 x 144
320 x 240
360 x 240
352 x 288
640 x 480

本地视频捕捉分辨率一般都设置为4:3(宽和高)的比例。虽然没有操作比例的必要,当你入门它不是一个坏的想法。用4:3的比例,您能够优化你的摄像头看到的东西。


一些Flex的Camera的常规设定:

打开摄像头:
Camera camera = Camera.getCamera();

//将摄像头的捕获模式设置为最符合指定要求的本机模式.
camera.setMode(240,180,15);

//指定进行完整传输而不由视频压缩算法进行插值处理的视频帧(称为关键帧)。camera.setKeyFrameInterval(60);

//设置每秒的最大带宽或当前输出视频输入信号所需的画面质量
camera.setQuality(144,85 );
Video video = new Video(camera.width*2, camera.height*2);

//正在捕获视频数据的 Camera 对象
video.attachCamera(camera);


关闭摄像头:

//如果 getCamera() 返回 null,则表明摄像头正由另一个应用程序使用,或者系统上没有安装摄像头。
camera = Camera.getCamera(null);
camera = null;

//正在捕获视频数据的 Camera 对象。 若要切断与该 Video 对象的连接,请传递 null
video.attachCamera(null);

 

记录这篇文章,备忘一下

posted on 2012-02-20 18:02  编程趋势  阅读(838)  评论(0编辑  收藏  举报