2010-07-26 4 views
0

nous avons le code ci-dessous et il a capturé la vidéo, mais pas la vidéo réelle qui s'affiche dans la webcam. Il ne capturé un tiers de l'image comme de x 100 et y 40 quelque chose comme neimage de capture flash de webcam

pourrait quelqu'un aider à capter l'ensemble de l'image affichée dans la webcam comme 320 * 250

ci-dessous est le code

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(); 
+2

S'il vous plaît formater votre code: http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks – heavilyinvolved

Répondre