Ciao a tutti,
premetto che ho pochissima esperienza su actionscript, ma mi è stato chiesto di realizzare un sistema che permetta agli utenti di un portale di registrare un piccolo videoclip attraverso la loro webcam e salvarlo per poi renderlo disponibile in visione.
Abbiamo a disposizione e già installato il server di streaming RED5, e questo integra, per chi lo conosce, anche un esempio che fa al caso mio. L'esempio si chiama "simpleRecorder", visionabile a questo indirizzo:
http://www.digs.jp:5080/demos/simpleRecorder.swf
Purtroppo però questo esempio andrebbe modificato nel senso che ad esempio l'url del server red5 e dell'applicativo che si occupa dello streaming non posso farlo inserire all'utente, oltre al fatto che i pulsanti per lo "start recording" e "stop recording" andrebbero modificati per renderli più "intuitivi".
Di questo esempio non c'è il .fla che mi permetterebbe magari la modifica e quindi mi sono armato di pazienza(anche se la sto perdendo) e sto provando a farlo, con scarsissimi risultati.
posto il codice actionscript cosicchè qualcuno magari mi può dare qualche dritta:
Rimango in attesa che qualcuno di buona volontà abbia l'intenzione e la pazienza di leggere...codice:// Oggetto necessario per instaurare la connessione al server var nc:NetConnection=new NetConnection(); // Stream dedicato alla pubblicazione del flusso sul server var out_ns:NetStream; // Crea un oggetto Camera var publisher_cam:Camera; // Crea un oggetto Microfono var publisher_mic:Microphone; var idStream:String; var streamingServer:String; var streamingStarted:Boolean = false; /*** GESTIONE EVENTI PULSANTI ***/ startRecording.onPress = function(){ doPublish("1"); } stopRecording.onPress = function(){ stopPublish("2"); } init(); /*** FINE GESTIONE EVENTI PULSANTI ***/ function doConnect(){ status_txt.text="Connecting to "+ streamingServer +"...\n"; nc.connect(streamingServer); } function doPublish(idStream:String){ publishStream(idStream); } function stopPublish(idStream:String){ stopPublishStream(idStream); } /* PUBBLICA LO USER STREAM SUL SERVER DI STREAMING */ function publishStream(idStream:String){ status_txt.text+="[INFO] Publishing Started for stream" + idStream + "\n"; // Collego la web cam all'oggetto // video presente sullo stage previewVideo.attachVideo(publisher_cam); //Inserisco l'audio al flusso out_ns.attachAudio(publisher_mic); // Inserisco il video al flusso out_ns.attachVideo(publisher_cam); // Pubblico sul server Red5 // il flusso audiovisivo out_ns.publish("stream"+idStream); startRecording.enabled = false; stopRecording.enabled = true; out_ns.onStatus = function(info){ if(info.code!="NetStream.Publish.BadName"){ streamingStarted = true; status_txt.text+="[OK] Trasmissione avviata"; }else{ status_txt.text+="[INFO]" + info.code + "\n"; } } } /* PUBBLICA LO USER STREAM SUL SERVER DI STREAMING */ function stopPublishStream(idStream:String){ status_txt.text+="[INFO] Stopping stream" + idStream + "\n"; previewVideo.attachVideo(null); out_ns.attachAudio(null); out_ns.attachVideo(null); // Pubblico sul server Red5 // il flusso audiovisivo out_ns.close("stream"+idStream); stopRecording.enabled = false; startRecording.enabled = true; } function init(id:String){ idStream = id; streamingServer="rtmp://mystreamingRED5Server/oflaDemo"; width_txt.text=250; height_txt.text=250; doConnect(); } nc.onStatus = function(info){ status_txt.text+="[INFO]" + info.code + "\n"; // Se l'instaurazione della connessione è andata a buon fine if(info.code=="NetConnection.Connect.Success"){ //Inizializzo lo stream in uscita out_ns = new NetStream(nc); status_txt.text+="[INFO] Connected to Red5 Streaming Server" + "\n"; // Abilito il pulsante "Start recording" startRecording.enabled=true; // Imposto le proprietà del video trasmesso dalla WebCam publisher_cam.setMode(width_txt.text, height_txt.text); // Creo un riferimento alla videocamera publisher_cam = Camera.get(); // Creo un riferimento al microfono publisher_mic = Microphone.get(); }else{ status_txt.text+="[ERROR]" + info.code; } } /* GESTIONE CONNESSIONE AL SERVER */![]()

Rispondi quotando