..:: MX Studio Fóruns ::..: LIMITAR TEMPO DA GRAVAÇÂO - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

LIMITAR TEMPO DA GRAVAÇÂO Como limitar o tempo da Gravação da webcam?

#1 User is offline   owang 

  • Group: Membros
  • Posts: 2
  • Joined: 14-May 09

Posted 14 May 2009 - 07:12 PM

Ola boa noite,

Eu sou totalmente iniciante em Flash / Action Script e estou com um problema para resolver e acredito que aqui eu encontre a solução.
Estou precisando limitar o tempo da gravação do usuário tipo para 1 minuto, porém ja tentei limitar com nTimer = setInterval(stopRecording, 60000); dentro actionscript exemplo da Adobe, mas não esta funcionandoi. Ja fui no site da Adobe e mesmo assim não consegui compreender onde esta o erro.

Estou postando abaixo o Action da Adobe que esta funcionando perfeitamente, oq ue eu realmente gostaria era apenas limitar o tempo da gravação.

Agradeço muito se alguém puder me ajudar.


////////////////////////////////////////////////////////////////////////
//
// Flash Media Server Demonstration App: Publish / Subscribe
// Sample Code copyright 2006 Adobe Systems
//
////////////////////////////////////////////////////////////////////////

// connection & stream name text variables
var fms_url:String = "rtmp://localhost/simpleLive/";
var streamName:String = "recording";

// record & replay Netstream objects
var record_ns:NetStream;
var replay_ns:NetStream;

//debug text area
var debug_ta:mx.controls.TextArea;

//publish type constants
var kREC:Number = 1;
var kLIVE:Number = 2;
var kREP:Number = 3;

//init publish type
setPublishType(kLIVE);

//audio sample rate array
var sampleRate_array:Array = new Array(5, 8, 11, 22, 44);

//get Cam & set quality
var client_cam = Camera.get();
client_cam.setQuality(0,100);

//get Mic & set sample rate
var client_mic = Microphone.get();
client_mic.setRate(sampleRate_array[4]); //44.1k Hz

//////////////////////////////////////
//FMS app URL textfield
fms_app_url.autoSize = false;
fms_app_url.text = fms_url;
fms_app_url.type = "input";
fms_app_url.border = true;
debugtxt(fms_app_url.text);

////////////////////////////////////////
// FMS Instance textfield
fms_recording.text = streamName;

debugtxt(fms_recording.text);

//attach Cam to Live Video stage object
Live_Video.attachVideo(client_cam);

// init Event listeners
var connectBtnListener:Object = new Object();
var recBtnListener:Object = new Object();
var repBtnListener:Object = new Object();
var camBtnListener:Object = new Object();
var nsBufListener:Object = new Object();
var nsBufPBListener:Object = new Object();
var clearDBListener:Object = new Object();

// set the button event listeners to functions
Connect_btn.addEventListener("click", connectBtnListener);

Record_btn.addEventListener("click", recBtnListener);

Replay_btn.addEventListener("click", repBtnListener);

SetCamera_btn.addEventListener("click", camBtnListener);

nsBuf_btn.addEventListener("click", nsBufListener);

clearDebug_btn.addEventListener("click", clearDBListener);

nsBufPB_btn.addEventListener("click", nsBufPBListener);

connectBtnListener.click = function(eventObj:Object)
{
debugtxt("[Connect]");
connectClicked();
}

recBtnListener.click = function(eventObj:Object)
{
recordClicked();
}

repBtnListener.click = function(eventObj:Object)
{
replayClicked(true);
}

//set Camera properties
camBtnListener.click = function(eventObj:Object)
{
debugtxt("[SetCAM]");

var camBW:Number = cam_bw.text;
var camQual:Number = cam_qual.text;

var camWide:Number = cam_wide.text;
var camHi:Number = cam_height.text;
var camFrPS:Number = cam_setfps.text;
var kfi:Number = cam_kfi.text;

debugtxt("camBW= " + camBW);
debugtxt("camQual= " + camQual);

debugtxt("camWide= " + camWide);
debugtxt("camHi= " + camHi);
debugtxt("camFrPS= " + camFrPS + newline);

client_cam.setQuality(camBW,camQual);
client_cam.setMode(camWide, camHi, camFrPS);
client_cam.setKeyFrameInterval(kfi);
}

//set Record Netstream buffer time
nsBufListener.click = function(eventObj:Object)
{
debugtxt("[SetRec NS]");

var nsBufr:Number = ns_buf.text;
debugtxt("RecnsBuffer= " + nsBufr);
record_ns.setBufferTime(nsBufr);
}

//set Replay Netstream buffer time
nsBufPBListener.click = function(eventObj:Object)
{
debugtxt("[SetPB NS]");

var nsBufr2:Number = ns_bufPB.text;
debugtxt("PBnsBuffer= " + nsBufr2);
replay_ns.setBufferTime(nsBufr2);
}

//clear debug text area
clearDBListener.click = function(eventObj:Object)
{
debug_ta.text = " ";
debug_ta.vPosition = debug_ta.maxVPosition
}

/////////////////////////////////////////////////
// Connect Button
function connectClicked()
{
if(Connect_btn.getLabel() == "Connect"){
client_nc.connect(fms_app_url.text);
mcConnectionLight.connect(client_nc);
}else{
Connect_btn.setLabel("Connect");
closeRecord(true);
closeReplay(true);
client_nc.close();
}
}
/////////////////////////////////////////////////
// Record Button
function recordClicked()
{
if(Record_btn.getLabel() == "Publish"){
// Attach data from the video and audio devices to the output stream
record_ns.attachVideo(client_cam);

// Then publish the camera output as a recorded stream
debugtxt("pub type = " + st_publishType);
record_ns.publish(fms_recording.text,st_publishType);

Record_btn.setLabel("Stop");
Record_btn.setStyle("themeColor", "0xFF0000");
debugtxt("***recording***");
}else{
record_ns.close();
Record_btn.setLabel("Publish");
debugtxt("recording stopped");
Record_btn.setStyle("themeColor", "0xcccccc");
}
}

////////////////////////////////////////////////////
// Replay Button
function replayClicked(clicked:Boolean)
{
debugtxt("ReplayClicked = " + (clicked == false ? "false":"true"));
if(Replay_btn.getLabel() == "Replay"){
replay_ns.play(fms_recording.text);
Replay_btn.setLabel("Stop");
Replay_btn.setStyle("themeColor", "0x00ff00");
debugtxt("***replaying***");

}else{
Replay_btn.setLabel("Replay");
if(clicked == true){
replay_ns.close();
}
Replay_btn.setStyle("themeColor", "0xcccccc");
}
}
//////////////////////////////////////////////////////
// open streams & set buttons
function openStreams():Void
{
Record_btn.enabled = true;
Replay_btn.enabled = true;
initStreams(client_nc);
}

//////////////////////////////////////////////////////
// close Record stream & reset button
function closeRecord(disableBtn:Boolean):Void
{
record_ns.close();
Record_btn.setLabel("Publish");
if(disableBtn == true)
Record_btn.enabled = false;
}
//////////////////////////////////////////////////////
// close Replay stream & reset button
function closeReplay(disableBtn:Boolean):Void
{
replay_ns.close();
Replay_btn.setLabel("Replay");
if(disableBtn == true)
Replay_btn.enabled = false;
}

//////////////////////////////////////////////////////
// NetConnection object
var client_nc:NetConnection = new NetConnection();

//////////////////////////////////////////////////////
// Get Connection Success status
client_nc.onStatus = function(ncInfoObj:Object):Void {
debugtxt(ncInfoObj.code);
if (ncInfoObj.code == "NetConnection.Connect.Success") {
Connect_btn.setLabel("Close");
openStreams();
}
};

//////////////////////////////////////////////////////
// init streams
function initStreams(this_client_nc:NetConnection)
{
debugtxt("initStreams");
// Create an input stream to playback the video, and attach
// video on that stream to the Replay_video object
replay_ns = new NetStream(this_client_nc);

//always a good practice to set the NS buffer (seconds)
replay_ns.setBufferTime(0.1);

replay_ns.onStatus = function(infoObject:Object):Void {
debugtxt("replay_ns_onStatus");

for( var prop in infoObject){
debugtxt(prop + ": " + infoObject[prop]);
}
debugtxt(" ");

/////// Stop
if (infoObject.code == "NetStream.Play.Stop") {
debugtxt("*** Netstream Stopped ***");
}
}

replay_ns.onPlayStatus = function(infoObject:Object):Void{
debugtxt("onPlayStatus");
for( var prop in infoObject){
debugtxt(prop + ": " + infoObject[prop]);
}
debugtxt(" ");
replayClicked(false);
}

Replay_Video.attachVideo(replay_ns);

/////////////////////////////////////////////////////
//Create output stream used to publish the video
record_ns = new NetStream(this_client_nc);
record_ns.onStatus = function(infoObject:Object):Void {
debugtxt("record_ns_onStatus");

for( var prop in infoObject){
debugtxt(prop + ": " + infoObject[prop]);
}
debugtxt(" ");
}
Live_Video.attachVideo(client_cam);
record_ns.attachAudio(client_mic);

////////////////////////////////////////////////////
//record debug text

var debug1_interval:Number = setInterval(debug1Thing, 100, record_ns);

////replay debug text

var debug2_interval:Number = setInterval(debug2Thing, 100, replay_ns);
}

///////////////////////////////////////////////////////
//debug texts
function debug1Thing(that_ns:NetStream) {
debug1_txt.text = "time: "+Math.floor(that_ns.time);
cam_fps.text = client_cam.currentFps;
}
function debug2Thing(that_ns:NetStream) {
debug2_txt.text = "time: "+Math.floor(that_ns.time);

}

///////////////////////////////////////////////////
// mic audio level
var activityLevel_pb:mx.controls.ProgressBar;
activityLevel_pb.mode = "manual";
activityLevel_pb.label = "Mic check: %3%%";
activityLevel_pb.setStyle("themeColor", "0xFF0000");

////////////////////////////////////////////////////
// Audio montoring

//this.createEmptyMovieClip("sound_mc", this.getNextHighestDepth());
//var active_mic:Microphone = Microphone.get();
//sound_mc.attachAudio(active_mic);

this.onEnterFrame = function() {
activityLevel_pb.setProgress(client_mic.activityLevel, 100);
};

client_mic.onActivity = function(active:Boolean) {
if (active) {
var haloTheme_str:String = "haloGreen";
} else {
var haloTheme_str:String = "0xFF0000";
}
activityLevel_pb.setStyle("themeColor", haloTheme_str);
};

////////////////////////////////////////////////////
// publish type radiobuttons
var publishtypeListener:Object = new Object();
publishtypeListener.click = function(eventObj:Object)
{
debugtxt("click");
for(i in eventObj){
debugtxt(i + ": " + eventObj[i]);
}
publishType = eventObj.target.data;

setPublishType(publishType);
}

function setPublishType(type:Number):Void
{
switch(type){
case 1:
st_publishType = "record";
rad_record.selected = true;
rad_live.selected = false;
rad_append.selected = false;
break;
case 2:
st_publishType = "live";
rad_record.selected = false;
rad_live.selected = true;
rad_append.selected = false;
break;
case 3:
st_publishType = "append";
rad_record.selected = false;
rad_live.selected = false;
rad_append.selected = true;
break;
}
}

///////////////////////////////////////////////////
//Publish type radio buttons
rad_record.addEventListener('click', publishtypeListener);
//var rad_live:mx.controls.RadioButton;
rad_live.addEventListener('click', publishtypeListener);
//var rad_append:mx.controls.RadioButton;
rad_append.addEventListener('click', publishtypeListener);

////////////////////////////////////////////////////
// Audio SampleRate radio buttons
var sampleRateListener:Object = new Object();
sampleRateListener.click = function(eventObj:Object)
{
debugtxt("click");
for(i in eventObj){
debugtxt(i + ": " + eventObj[i]);
}
var sr = eventObj.target.data;

rad_44.selected = false;
rad_22.selected = false;
rad_11.selected = false;
rad_8.selected = false;
rad_5.selected = false;

client_mic.setRate(sampleRate_array[sr]);

switch(sr){
case 4:
rad_44.selected = true;
break;
case 3:
rad_22.selected = true;
break;
case 2:
rad_11.selected = true;
break;
case 1:
rad_8.selected = true;
break;
case 0:
rad_5.selected = true;
break;
}
debugtxt("sampleRate= " + sampleRate_array[sr]);
}

//audio samplerate radio buttons
rad_44.addEventListener('click', sampleRateListener);
rad_22.addEventListener('click', sampleRateListener);
rad_11.addEventListener('click', sampleRateListener);
rad_8.addEventListener('click', sampleRateListener);
rad_5.addEventListener('click', sampleRateListener);

//////////////////////////////////////
// genral debug text area
function debugtxt(txt:String)
{
//trace(txt);
debug_ta.text += txt;
debug_ta.text += newline;
debug_ta.vPosition = debug_ta.maxVPosition;
}

0

#2 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 15 May 2009 - 12:05 AM

Cade a função stopRecording? Sua lógica está certo, mas você precisa dessa função e os comandos para parar a gravação.

[]s
0

#3 User is offline   owang 

  • Group: Membros
  • Posts: 2
  • Joined: 14-May 09

Posted 15 May 2009 - 12:57 AM

Ola natan, e obrigado por esar responde meu tópico,

pois então, eu chamei no inicio do action (logo abaixo de var streamName:String = "recording";)

var nTimer:Number;

e montei a função de stop da seguinte forma:

function connectClicked()
{
if(Connect_btn.getLabel() == "Connect"){
client_nc.connect(fms_app_url.text);
mcConnectionLight.connect(client_nc);
}else{
Connect_btn.setLabel("Connect");
closeRecord(true);
closeReplay(true);
client_nc.close();
}
}
/////////////////////////////////////////////////
// Record Button
function recordClicked()
{
if(Record_btn.getLabel() == "Publish"){
// Attach data from the video and audio devices to the output stream
record_ns.attachVideo(client_cam);

// Then publish the camera output as a recorded stream
debugtxt("pub type = " + st_publishType);
record_ns.publish(fms_recording.text,st_publishType);

Record_btn.setLabel("Stop");
Record_btn.setStyle("themeColor", "0xFF0000");
debugtxt("***recording***");
}else{
record_ns.close();
Record_btn.setLabel("Publish");
debugtxt("recording stopped");
Record_btn.setStyle("themeColor", "0xcccccc");
}
}

nTimer = setInterval(stopRecording, 10000);
}

function stopRecording():Void{
ns.close();
clearInterval(nTimer);
btnPlay.enabled = true;
mcRecordInfo._visible = false;
}
}



mas tb não funciona.
Sei que deve ser alguma coisa simples, mas como eu eu não tenho o conhecimento necessário, não sei como proceder.


0

#4 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 15 May 2009 - 11:57 PM

Dá uma olhada nisso aqui:

http://www.flashcomguru.com/forum/forum_posts.asp?TID=3247

[]s
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


Similar Topics Collapse

  Topic Forum Started By Stats Last Post Info
New Replies Outro Canal: Net terá de ressarcir cliente por falta temporária de web e TV Notícias Notícias 
  • 0 Replies
  • 88 Views
New Replies Saiba como acrescentar sons em suas apresentações Notícias Notícias 
  • 0 Replies
  • 400 Views
New Replies Teclado
Como configuro!?
InDesign Tulio Santos 
  • 1 Reply
  • 1158 Views
New Replies Como criar um link para um arquivo exe
Criar um link para um arquivo executavel
Dreamweaver opauloeduardo 
  • 2 Replies
  • 2028 Views
New Replies Editar artigos JPEG
Como posso editar um arquivo JPEG
Corel Draw nelton gemo 
  • 1 Reply
  • 2548 Views
New Replies Como preparar arquivo para SILK-SCREEN?
Empresas que fazem letreiros exigem CorelDraw!
Processos Gráficos Herweg 
  • 1 Reply
  • 1711 Views
New Replies Como converter RGB para CMYK sem perder qualidade
Estou fazendo uma capa de livro em Photo
Photoshop & Image Ready Rodrigo_rj 
  • 7 Replies
  • 8653 Views
New Replies Check Box
help.. como ver se está selecionado?
PHP --Ludson-- 
  • 4 Replies
  • 2383 Views

Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)