Я не очень много знаю о Flash или Action Scripts, но у меня возникли небольшие проблемы с AS3 и веб-камерами. У меня есть сценарий, который подключается к веб-камере, а затем отправляет свой вывод в сценарий php, который сохраняет захваченное изображение. Это работает все, кроме одной проблемы. Кажется, что максимальное разрешение, разрешенное для реального объекта Camera, составляет 320x240. Я дошел до крайности подключения Canon 60D в качестве веб-камеры, потому что у меня есть обычная веб-камера, которая должна иметь максимальное разрешение 1280x720, и все, что я могу получить, - это изображение размером 320x240. До сих пор я обнаружил, что максимум, который я могу получить от Canon, также составляет 320x240. Может быть, я долго смотрел на это, но я в тупике. Ниже приведен пример сценария действия, где videoCapture должен иметь размер 1024x768. Вместо этого получается изображение размером 1024x768 с черным фоном, а в левом верхнем углу - изображение размером 320x240 из videoCapture. Я, конечно, мог бы изменить это, но это побеждало бы цель, являющуюся плохим качеством. Есть ли что-то, чего я здесь не хватает, или, может быть, есть какое-то ограничение даже во Flash?
// adds event listener to the stage for keydown events.
stage.addEventListener(KeyboardEvent.KEY_DOWN, detectEnterKey);
import flash.display.Bitmap;
import flash.display.BitmapData;
import com.adobe.images.JPGEncoder;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
var bandwidth:int = 0;
var quality:int = 100;
var cam:Camera = Camera.getCamera();
var videoCapture:Video = new Video();
var previewPortData:BitmapData = new BitmapData(1024, 768, true, 0x00000000);
var previewPort:Bitmap = new Bitmap(previewPortData);
function onCameraStatus(evt):void {
if (evt.code == "Camera.Muted") {
Security.showSettings(SecurityPanel.CAMERA);
}
}
// detects the keycode looking for enter key pressed.
function detectEnterKey(event:KeyboardEvent):void {
//trace("keycode: "+event.keyCode);
if (event.keyCode == Keyboard.ENTER) {
previewPortData.draw(videoCapture);
var myEncoder:JPGEncoder = new JPGEncoder(100);
var byteArray:ByteArray = myEncoder.encode(previewPortData);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var saveJPG:URLRequest = new URLRequest("save.php");
saveJPG.requestHeaders.push(header);
saveJPG.method = URLRequestMethod.POST;
saveJPG.data = byteArray;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, sendComplete);
urlLoader.load(saveJPG);
function sendComplete(event:Event):void {
trace("compete");
}
}
}
if (cam == null) {
Security.showSettings(SecurityPanel.CAMERA);
} else {
cam.addEventListener(StatusEvent.STATUS, onCameraStatus)
cam.setQuality(bandwidth, quality);
cam.setMode(1024, 768, 30, false);
videoCapture.attachCamera(cam);
videoCapture.width = 1024;
videoCapture.height = 768;
addChild(videoCapture);
previewPort.x = 430;
previewPort.y = 50;
addChild(previewPort);
}