у нас есть код ниже, и он захватил видео, но не фактическое видео, которое отображается в веб-камере.Он захватил только одну треть изображения, например, от x 100 и y 40, что-то вроде
Может ли кто-нибудь помочь с тем, как захватить все изображение, отображаемое в веб-камере, как 320 * 250
нижеэто код
import flash.geom.*;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.display.LoaderInfo;
import flash.display.Bitmap;
import flash.display.BitmapData;
import com.adobe.images.JPGEncoder;
var nc:NetConnection = null;
var camera:Camera;
var microphone:Microphone;
var nsPublish:NetStream = null;
var nsPlay:NetStream = null;
function startCamera()
{
// get the default Flash camera and microphone
camera = Camera.getCamera();
microphone = Microphone.getMicrophone();
// here are all the quality and performance settings that we suggest
camera.setMode(160, 120, 12, false);
camera.setQuality(0, 88);
camera.setKeyFrameInterval(24);
microphone.rate = 11;
microphone.setSilenceLevel(0);
// subscribeName.text = "testing";
publishName.text = "testing";
// publishName.text = root.loaderInfo.parameters.streamname ;
connect.connectButton.addEventListener(MouseEvent.CLICK, doConnect);
doPublish.addEventListener(MouseEvent.CLICK, publish);
doSubscribe.addEventListener(MouseEvent.CLICK, subscribe);
enablePlayControls(false);
}
function ncOnStatus(infoObject:NetStatusEvent)
{
trace("nc: "+infoObject.info.code+" ("+infoObject.info.description+")");
if (infoObject.info.code == "NetConnection.Connect.Failed")
prompt.text = "Connection failed: Try rtmp://[server-ip-address]/videochat";
else if (infoObject.info.code == "NetConnection.Connect.Rejected")
prompt.text = infoObject.info.description;
}
function doConnect(event:MouseEvent)
{
// connect to the Wowza Media Server
if (nc == null)
{
// create a connection to the wowza media server
nc = new NetConnection();
nc.connect(connect.connectStr.text);
// get status information from the NetConnection object
nc.addEventListener(NetStatusEvent.NET_STATUS, ncOnStatus);
connect.connectButton.label = "Stop";
// uncomment this to monitor frame rate and buffer length
//setInterval(updateStreamValues, 500);
videoCamera.clear();
videoCamera.attachCamera(camera);
enablePlayControls(true);
}
else
{
nsPublish = null;
nsPlay = null;
videoCamera.attachCamera(null);
videoCamera.clear();
//videoRemote.attachNetStream(null);
//videoRemote.clear();
nc.close();
nc = null;
enablePlayControls(false);
doSubscribe.label = 'Play';
doPublish.label = 'Go Live';
connect.connectButton.label = "Connect";
prompt.text = "";
}
}
function doConnect12()
{
// connect to the Wowza Media Server
if (nc == null)
{
// create a connection to the wowza media server
nc = new NetConnection();
nc.connect(connect.connectStr.text);
// get status information from the NetConnection object
nc.addEventListener(NetStatusEvent.NET_STATUS, ncOnStatus);
connect.connectButton.label = "Stop";
// uncomment this to monitor frame rate and buffer length
//setInterval(updateStreamValues, 500);
videoCamera.clear();
videoCamera.attachCamera(camera);
enablePlayControls(true);
}
else
{
nsPublish = null;
nsPlay = null;
videoCamera.attachCamera(null);
videoCamera.clear();
//videoRemote.attachNetStream(null);
//videoRemote.clear();
nc.close();
nc = null;
enablePlayControls(false);
doSubscribe.label = 'Play';
doPublish.label = 'Go Live';
connect.connectButton.label = "Connect";
prompt.text = "";
}
}
function enablePlayControls(isEnable:Boolean)
{
doPublish.enabled = isEnable;
doSubscribe.enabled = isEnable;
publishName.enabled = isEnable;
subscribeName.enabled = isEnable;
}
// function to monitor the frame rate and buffer length
function updateStreamValues()
{
if (nsPlay != null)
{
fpsText.text = (Math.round(nsPlay.currentFPS*1000)/1000)+" fps";
bufferLenText.text = (Math.round(nsPlay.bufferLength*1000)/1000)+" secs";
}
else
{
fpsText.text = "";
bufferLenText.text = "";
}
}
function nsPlayOnStatus(infoObject:NetStatusEvent)
{
trace("nsPlay: "+infoObject.info.code+" ("+infoObject.info.description+")");
if (infoObject.info.code == "NetStream.Play.StreamNotFound" || infoObject.info.code == "NetStream.Play.Failed")
prompt.text = infoObject.info.description;
}
function subscribe(event:MouseEvent)
{
if (doSubscribe.label == 'Play')
{
// create a new NetStream object for video playback
nsPlay = new NetStream(nc);
// trace the NetStream status information
nsPlay.addEventListener(NetStatusEvent.NET_STATUS, nsPlayOnStatus);
var nsPlayClientObj:Object = new Object();
nsPlay.client = nsPlayClientObj;
nsPlayClientObj.onMetaData = function(infoObject:Object)
{
trace("onMetaData");
// print debug information about the metaData
for (var propName:String in infoObject)
{
trace(" "+propName + " = " + infoObject[propName]);
}
};
// set the buffer time to zero since it is chat
nsPlay.bufferTime = 0;
// subscribe to the named stream
nsPlay.play(subscribeName.text);
// attach to the stream
//videoRemote.attachNetStream(nsPlay);
doSubscribe.label = 'Stop';
}
else
{
// here we are shutting down the connection to the server
//videoRemote.attachNetStream(null);
nsPlay.play(null);
nsPlay.close();
doSubscribe.label = 'Play';
}
}
function nsPublishOnStatus(infoObject:NetStatusEvent)
{
trace("nsPublish: "+infoObject.info.code+" ("+infoObject.info.description+")");
if (infoObject.info.code == "NetStream.Play.StreamNotFound" || infoObject.info.code == "NetStream.Play.Failed")
prompt.text = infoObject.info.description;
}
function publish(event:MouseEvent)
{
if (doPublish.label == 'Go Live')
{
var jpgSource:BitmapData = new BitmapData (camera.height, camera.width);
jpgSource.draw(videoCamera);
var jpgEncoder:JPGEncoder = new JPGEncoder();
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
//Make sure to use the correct path to jpg_encoder_download.php
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
var jpgURLLoader:URLLoader = new URLLoader();
// navigateToURL(jpgURLRequest, "_blank");
sendToURL(jpgURLRequest);
// create a new NetStream object for video publishing
nsPublish = new NetStream(nc);
nsPublish.addEventListener(NetStatusEvent.NET_STATUS, nsPublishOnStatus);
// set the buffer time to zero since it is chat
nsPublish.bufferTime = 0;
// publish the stream by name
nsPublish.publish(publishName.text);
// add custom metadata to the stream
var metaData:Object = new Object();
metaData["description"] = "Chat using VideoChat example."
nsPublish.send("@setDataFrame", "onMetaData", metaData);
// attach the camera and microphone to the server
nsPublish.attachCamera(camera);
nsPublish.attachAudio(microphone);
doPublish.label = 'Stop';
}
else
{
// here we are shutting down the connection to the server
nsPublish.attachCamera(null);
nsPublish.attachAudio(null);
nsPublish.publish("null");
nsPublish.close();
doPublish.label = 'Go Live';
}
}
stage.align = "TL";
stage.scaleMode = "noScale";
startCamera();
doConnect12();
stop();