Flex中设置Camera的视频清晰质量的最佳配合
今天需要设置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);