网络摄像头分辨率检测

时间:2011-01-19 10:05:44

标签: flash actionscript webcam

我简直无法相信我在谷歌上发现了什么,我开始认为这可能是一个DUMB问题,但我不得不问。

我想获得网络摄像头支持的最大分辨率,我该怎么做?

这是我的实际代码:

 // Maximum amount of bandwidth that the current 
 // outgoing video feed can use, in bytes per second.
 var bandwidth:int = 0; 
 var quality:int = 100; // This value is 0-100 with 1 being the lowest quality. 


 var cam:Camera = Camera.getCamera();
 if(cam==null)
  writeErrorPopup(NOCAMERA_ERR);
 else
 {
  cam.addEventListener(StatusEvent.STATUS,statusHandler);
  function statusHandler(evt:StatusEvent):void
  {
   if(cam.muted)
   {   
    writeErrorPopup(CAMPERMISSION_ERR);
   }
   else
   {   
    trace(cam.width);
   }
  }    

 cam.setQuality(bandwidth, quality);
 //cam.setMode(640,480,30,false); 
 // setMode(videoWidth, videoHeight, video fps, favor area)

我所理解的是:

  • 任何网络摄像头的默认setMode都将其分辨率设置为160x120,实际上跟踪会返回160x120的值。

  • 如果我取消注释640x480 setmode,则跟踪会返回640x480值,这是正常的,但这是静态值,我想了解WHICH是网络摄像头分辨率..

任何提示?

3 个答案:

答案 0 :(得分:7)

有一种方法可以找到:

Camera.setMode将相机的高度和宽度设置为与您请求的分辨率匹配的最接近的可能值。因此,如果您选择4:3宽高比并将大小设置为8192x6144,则应该能够获得相机的最高分辨率。只是为了确保,您还可以尝试16:9或16:10的比例,看看哪个返回最佳结果。

答案 1 :(得分:2)

同样的感觉!没有人在谷歌可以给出一个简单的答案,没有特别的谈话! 这是:

var cam:Camera = Camera.getCamera(); 
if (cam != null) 
{ 
var vid:Video = new Video(cam.width, cam.height); 

// setmode(width, height, framerate);
cam.setMode(2048,1536,30);

vid.attachCamera(cam); 
addChild(vid);
vid.width = 2048; 
vid.height =1536;

}

答案 2 :(得分:0)

上述答案的顺序错误。它应该是:

var cam:Camera = Camera.getCamera(); 
if (cam != null) 
{     
    cam.setMode(2048,1536,30);
    var vid:Video = new Video(cam.width, cam.height);    
    vid.attachCamera(cam); 
    addChild(vid);
}

此方法适用于Windows,但我发现在Mac上,无论相机的功能如何,它都允许所有尺寸高达1920x1080。无论宽高比是否错误,它都会将其设置为HD尺寸。我还没有找到解决方法。