我有一种情况,我必须有一些不同大小的“相机”通过网络流发送,具体取决于它是桌面还是移动连接。以下是我设置的方法:
protected var nearCam:Camera;
protected var nearCamForMobile:Camera;
nearCam = Camera.getCamera();
nearCam.setMode(385,240,10);
nearCam.setQuality(0,0);
//this is the cam I want to display on the near Side to show the user themselves.
near_video.attachCamera(nearCam);
//If a mobile user connects, I want to send them this resolution/aspect ratio of a camera so i'm just setting up this Camera but not showing it anywhere.
nearCamForMobile = Camera.getCamera();
nearCamForMobile.setMode(480,800,10);
nearCamForMobile.setQuality(0,0);
因此,当移动用户连接时,我只是将连接到网络流的相机交换到移动用户,这样它在手机上看起来不错,而不是全部拉伸。
if(isFarMobile)
{
sendStream.attachCamera(nearCamForMobile);
}
else
{
sendStream.attachCamera(nearCam);
}
现在问我的问题......
如果我只做了nearCamForMobile并将其发送到移动通道,它在手机上看起来很棒并且它没有拉伸。但显然它的480x800分辨率在桌面版本上看起来很紧张,这是一个385x240的视频盒。因此,如果我只使用nearCam,它在桌面上看起来很棒,但它在移动设备上看起来很紧张....
所以我很好奇为什么我可以按照上面显示的方式进行两种变换,显示nearCam,然后在需要时将nearCamForMobile等待发送?
您一次只能设置一种相机模式吗?我有什么想法可以做到这一点?在移动版本的设置,所以用户在potrait和它的840x480手机。桌面网站看起来最像是宽屏视频。
最后,我基本上试图弄清楚如何拥有2个具有2种分辨率的相机变速器。在远端是移动客户端的情况下,在近侧显示1并将另一个连接到网络流。 (我知道如何判断远程是否移动,我不担心那部分)
我只需要能够传输一个看起来适合移动客户端的分辨率/宽高比。恰好是与桌面清晰度不同的宽高比。
答案 0 :(得分:1)
无法完成。请专门从文档中查看此行:
“多次调用getCamera()方法引用同一个摄像头 驱动程序。因此,如果您的代码包含类似firstCam的代码:Camera = getCamera()和secondCam:Camera = getCamera(),firstCam和 secondCam引用相同的摄像头,这是用户的默认值 照相机“。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#getCamera()
换句话说,只要你得到一个,任何后续的get尝试都只会创建另一个指向同一个对象的指针。因此,您有两个带有指向同一对象的指针的变量。在该指针上设置属性会将其设置为两者。
有意义吗?
对不起坏消息:\
答案 1 :(得分:0)
如果您使用的是Flash Builder 4.5,则可以通过调用CameraUI而不是Camera来检查您是否正在访问移动摄像头。您可以通过以下方式编码来检查您拥有的相机类型:
if(CameraUI.isSupported)
{
//Mobile camera
}
else
{
//Desktop camera
}
您可以在以下链接中找到更多信息:http://www.flex-tutorial.fr/2010/09/07/air-android-prendre-des-photos-videos-avec-cameraui/
希望这会有所帮助:)