如何防止AS3 Camera类添加黑条?

时间:2017-06-15 23:19:54

标签: actionscript-3 flash camera activex webcam

在某些情况下,使用Camera.setMode()选择分辨率会在相机输入处添加黑条," letterboxing"它。我了解setMode()使用某种隐藏算法,从您的相机的一个可用分辨率中选择一个分辨率然后裁剪它以适合您想要的尺寸,但显然有时它会添加黑色条而不是裁剪它

此行为取决于我使用的相机。有些相机似乎总是裁剪,而不是信箱。这可能与他们拥有的可用解决方案有关。但真正奇怪的是,当我在Flash Player ActiveX控件中尝试使用信箱时,就像在Internet Explorer中一样。当我在Flash Player投影仪或谷歌浏览器中尝试完全相同的SWF时,它不会发生。这似乎意味着不同的Flash Player版本使用不同的算法来选择并使分辨率适合所需的尺寸。

这是一个非常简单的代码示例,它为我创造了这个问题。在这种情况下,我为setMode()提供4x3分辨率,这意味着它必须选择16x9分辨率,即使640x480是相机的可用分辨率之一。

public class Flashcam extends Sprite 
{
    private var _camera:Camera = Camera.getCamera("0");

    public var _video:Video;

    private var _width:int = 640;
    private var _height:int = 480;

    public function Flashcam() 
    {

        _camera.setMode(_width, _height, 15);
        _video = new Video(_camera.width, _camera.height);

        addChild(_video);

        _video.attachCamera(_camera);
    }
}

有没有办法阻止相机输入信箱?如果没有,是否有某种方法可以判断它是否被自动选中,以及哪个相机分辨率已被自动选中,以便我可以编写自己的代码来解释它?

0 个答案:

没有答案