我正在尝试使用相机和一些运动跟踪AS3类来检测ViewSonic智能显示器前面的移动,以便进行演示。我已经在其他Android设备上运行了应用程序和检测功能,但“智能显示器”向我展示了一些奇怪的问题。
有人可能已经遇到过这一点,但是这是非常简单的相机设置代码我将问题简化为:
var camera = Camera.getCamera();
camera.setMode(stage.stageWidth, stage.stageHeight, 30, true);
var video:Video = new Video(stage.stageWidth, stage.stageHeight);
video.attachCamera(camera);
我的问题在于“video.attachCamera” 出于某种原因,该设备将此功能视为“在右上角的一个小窗口中显示视频”并忽略所有其他代码,在屏幕上用空白黑色和一个微小(可能是40x20px方形)的视频流占主导地位。
它的形象......
非常感谢任何帮助,谢谢
答案 0 :(得分:1)
问题可能是您使用setMode()
方法传递给相机的值。您正尝试将相机设置为在舞台的宽度/高度捕捉。
相机可能没有这样的捕捉分辨率,而documentation for setMode()状态下,它会尝试找到与你指定的接近的东西:
将摄像头捕获模式设置为最符合指定要求的纯模式。如果摄像机没有与您传递的所有参数匹配的本机模式,则运行时会选择最接近合成所请求模式的捕获模式。此操作可能涉及裁剪图像和丢帧。
现在,我们认为您希望Flash选择的分辨率大于屏幕截图中显示的分辨率。但鉴于无数的相机设备/驱动程序,在你的情况下这可能不太好。
您可以尝试使用更多典型分辨率捕捉视频:480x320,640x480,800x600或最多1024x768。网络上的大多数应用程序可能使用第一个或第二个捕获分辨率。
所以改变:
camera.setMode(stage.stageWidth, stage.stageHeight, 30, true);
要:
camera.setMode(640, 480, 30, true);
请注意,您可以以任何您想要的尺寸显示视频,但您可以使用的捕获分辨率取决于您的相机硬件/驱动程序/操作系统/等。典型的分辨率具有4:3的宽高比并且相对较小(不是屏幕/舞台的全尺寸)。您使用的捕获分辨率会影响视频的质量以及流式传输视频所需的网络带宽量。通常(对于流式传输),不想要使用较大的捕获分辨率,但可能在动作捕获用例中并不重要。