0

我正在使用 flex 开发视频聊天应用程序。经过一些带宽检查后,我想根据结果调整相机分辨率。

但是每隔一次我这样做,相机帧就会冻结,我必须杀死 Flash 播放器并重新启动它。相机基本崩溃。

private var camera:Camera;


private function setCameraResolution(width:Number, height:Number):void {
    try {
        camera = null;
        camera = Camera.getCamera();

        if (camera == null) {
            infoPanel.title = "Error: ";
            infoText.text = "No Camera Found";
            infoPanel.visible = true;
            hideAllControllers();
            throw new Error("No Camera Found");
        }

        camera.setQuality(0, 80);
        camera.setKeyFrameInterval(15);
        camera.setMode(width, height, 24);
        camera.addEventListener(ActivityEvent.ACTIVITY, cameraActivityHandler);

        videoCamera.clear();
        videoCamera.attachCamera(camera);
    } catch (error:Error) {
        if (debug) {
            ExternalInterface.call('console.log', "Error: " + error.message);
        }
    }
}

此时相机未连接到任何 NetStream。它只发生在一些相机上,我正在使用 Mac。我在其他网站上检查过,他们也更改了分辨率,我从来没有遇到过问题。这一定是我的代码。

非常感谢您的帮助

4

2 回答 2

0

您永远不应该多次更改相机分辨率。

而是缩放您用来表示相机输出的组件。

于 2012-09-12T14:00:20.107 回答
0

我建议你检查这个问题如何使用 AS3 提高相机的质量?

我不认为你应该把相机归零,试着打电话 cam.setMode()

于 2012-09-12T14:44:06.730 回答