【发布时间】:2012-10-17 17:05:07
【问题描述】:
我有一个视频显示器(Spark)和相机。
public var camera:Camera;
...
livePreview.source = getDynamicStreamingVideoSource();
camera.setMode(camWidth, camHeight, 15);
livePreview.videoObject.attachCamera(camera);
...
<s:VideoDisplay id="livePreview" ... />
在某些情况下,在我的代码中的某处,我尝试通过调用 camera.setMode(newWidth, newHeight) 并设置 livePreview.width = newWidth, livePreview.height = newHeight 以编程方式调整两者的大小。从我所看到的情况来看,这并不奏效。实时预览 至少部分调整到新的宽度和高度,但不是相机。 例如,原始尺寸是 250、250,如果我将 500 (W) 和 250 (H) 设置为新尺寸,摄像机视频将水平显示为挤压,但物理宽度保持在 250。现在这是关键,如果我将 livePreview.scaleMode 设置为“拉伸”,相机视频将完全按照我想要的方式显示视频(不失真,大小正确,比例完好)。
现在是我真正的问题:这在性能方面效果不佳。 “拉伸”确实向您展示了它正在拉伸视频,至少需要一秒钟才能完成。太慢了。我希望它在没有任何影响的情况下立即工作。我也不明白为什么在我指定正确的宽度并且与 videoDisplay 宽度相同时需要拉伸它。我在这里失踪了吗?
【问题讨论】:
-
我不明白。你为什么要捕捉相机(例如 4:3 或 16:9 等)并试图让它以 1:1 或 2:1 的比例显示?
-
好吧,我这样做是因为它让我:P 如果我在 setMode() 中指定一个正方形区域,它会显示一个正方形。不管怎样,我想了想,我想我只是为了得到想要的结果而作弊。
-
只是一个更新:我的解决方法是根本不调整视频大小,而是从捕获的图像中“剪切”部分,并掩盖不应该成为切片位图一部分的部分。
标签: actionscript-3 apache-flex air flex4 flex4.5