Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93

    [AS3] Esperimenti con l'audio di un video in streaming

    Salve a tutti!

    Da qualche settimana mi sto cimentando nell'utilizzo di AS3 per realizzare un'applicazione server e una client per la trasmissione di video live mediante red5.

    Sono riuscito a concludere qualcosa ma ora stavo facendo qualche esperimento con l'audio del video.

    In particolare non sono riuscito a far funzionare il pan (parlo del client):
    codice:
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.media.Sound;
    import fl.controls.Slider;
    import fl.controls.SliderDirection;
    import fl.events.SliderEvent;
    import flash.media.SoundChannel;
    import flash.media.SoundTransform;
    import flash.events.NetStatusEvent;
    import flash.media.Video;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
    
    var serverURI:String=loaderInfo.parameters['server_ip'];
    
    var nc:NetConnection=new NetConnection(); 
    
    /* Oggetto per la riproduzione dello stram in entrata */
    var in_ns:NetStream; 
    
    /* Visualizzo delle info sul tentativo di connessione in una textArea */
    status_txt.text="Connecting to Red5 Streaming Server " + serverURI + "...\n";
    nc.connect(serverURI);
    
    nc.addEventListener(NetStatusEvent.NET_STATUS,netstat);
    
    function netstat(stats:NetStatusEvent){
    	status_txt.appendText(stats.info.code);
    	status_txt.appendText("\n");
    			
    	/* Se l'instaurazione della connessione è andata a buon fine */
    	if(stats.info.code=="NetConnection.Connect.Success"){
    						
    		/* Inizializzo l'oggetto NetStream */
    		in_ns = new NetStream(nc);
    				
    		status_txt.appendText("[!] Connected to Red5 Streaming Server\n");
    
    		my_video.attachNetStream(in_ns);
    		
    		in_ns.play("stream1");
    		
    		var suono:SoundTransform=in_ns.soundTransform;
    		suono.pan=-1;
    		in_ns.soundTransform=suono;
    		
    				
    	}else{
    		status_txt.appendText("[ERROR]");
    		status_txt.appendText(stats.info.code);
    	}
    	
    }
    Con questo codice dovrei sentire solo l'audio dalla cuffia sinistra giusto? Ed invece si sente su entrambe!

    Cosa mi sto perdendo

    Grazie mille!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Mi potreste aiutare indicandomi almeno se:

    a) Il codice semba corretto -> il problema è da ricercare altrove.

    b) Il codice è pieno zeppo di errori o manca qualcosa -> è da rivedere completamente.

    Grazie!

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    A occhio il codice sembra corretto e considerato che senti il suono, le uniche parti che potrebbero avere problemi sono quelle riguardanti il SoundTransform, quindi potresti inserire nel codice un paio di trace per vedere se "suono" viene impostato e se dopo la trasformazione del pan, in_ns.soundTransform ha subito il cambiamento richiesto. Oltretutto potresti provare a modificare anche il parametro "volume" giusto per vedere come agisce.

    Non so se potrebbe creare problemi, ma magari un suono mono potrebbe non poter gestire il pan (l'ho solo sparata eh...).

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Originariamente inviato da and80
    Non so se potrebbe creare problemi, ma magari un suono mono potrebbe non poter gestire il pan (l'ho solo sparata eh...).
    Grazie and80!

    Credo che tu abbia proprio ragione!

    Se uso Adobe Flash Media Live Encoder per acquisire il video e l'audio (selezionando nelle impostazioni l'audio stereo) funziona!

    Io invece usavo questo codice:
    codice:
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.NetStatusEvent;
    import flash.media.Sound;
    import flash.media.Camera;
    import flash.media.Video;
    import flash.media.Microphone;
    import flash.media.SoundTransform;
    import fl.motion.MotionEvent;
    import flash.media.Microphone;
    
    var serverURI:String=loaderInfo.parameters['server_ip'];
    
    var nc:NetConnection=new NetConnection(); 
    
    /* Oggetto per la pubblicazione dello stram in entrata */
    var out_ns:NetStream;
    /* Oggetto per la riproduzione dello stram in entrata */
    var local_ns:NetStream;
    
    var camera:Camera;
    var microphone:Microphone;
    
    /* Aggiunge i gestori necessari */
    play_btn.addEventListener(MouseEvent.CLICK, playVideo);
    connetti_btn.addEventListener(MouseEvent.CLICK, connectToServer);
    nc.addEventListener(NetStatusEvent.NET_STATUS,netstat);
    
    /* Setta i valori di default */
    server_txt.text="rtmp://192.168.1.2/oflaDemo";
    width_txt.text="800";
    height_txt.text="600";
    fps_txt.text="25";
    kbyteRate_txt.text="200";
    quality_txt.text="50";
    
    function connectToServer(e:MouseEvent)
    {
    	/* Visualizza dei messaggi di output nello stage */
    	status_txt.text="Connecting to Red5 Streaming Server " + server_txt.text + "...\n";
    	nc.connect(server_txt.text);
    }
    
    function netstat(stats:NetStatusEvent){
    	status_txt.appendText(stats.info.code);
    	status_txt.appendText("\n");
    		
    	/* Se l'instaurazione della connessione è andata a buon fine */
    	if(stats.info.code=="NetConnection.Connect.Success"){
    		
    		/* Abilita i pulsanti */
    		play_btn.enabled=true;
    		
    		/* Acquisisce video e audio */
    		camera=Camera.getCamera();
    		camera.setMode(Number(width_txt.text), Number(height_txt.text), Number(fps_txt.text));
    		camera.setQuality(Number(kbyteRate_txt.text)*1024,Number(quality_txt.text));
    		
    		microphone=Microphone.getMicrophone();
    		/* Sperando che così sia in stereo */
    		microphone.rate=44;
    		
    		/* Inizializza gli oggetti NetStream */
    		out_ns = new NetStream(nc);
    		local_ns = new NetStream(nc);
    						
    		status_txt.appendText("[INFO] Connected to Red5 Streaming Server\n");
    		}else{
    			status_txt.appendText("[ERROR]");
    			status_txt.appendText(stats.info.code);
    		}
    	
    }
    
    function playVideo(e:MouseEvent)
    {
    	local_ns.attachAudio(microphone);
    	local_ns.attachCamera(camera);
    	
    	my_video.attachNetStream(local_ns);
    	out_ns.attachAudio(microphone);
    	out_ns.attachCamera(camera);
    	
    	out_ns.publish("livestream");
    	local_ns.play("livestream");
    	
    }
    con cui invece non riesco a catturare l'audio in stereo.

    Qualche idea su come fare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Nessuna idea su come catturare audio in stereo

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mi era sfuggito...

    Sinceramente non ne ho idea, probabilmente bisogna settare qualcosa a livello di server, ma la sto proprio buttando lì.

    Immagino che tu abbia già consultato la guida in linea di AS3 e, se non hai trovato lì una proprietà o un metodo per configurare la cosa, non saprei proprio indirizzarti.

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Nelle discussioni che si trovano online, l'unica cosa che dovrebbe occuparsi della qualità stereofonica è il rate, come tu stesso hai segnato nel tuo codice. Ma chiaramente è inefficace o, almeno nel tuo caso, non viene recuperato dallo stream

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Ma tipo nella documentazione ufficiale non c'è nessun accenno all'acquisizione stereo vero?

    Io non ho trovato nulla!

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ho provato a cercare, ma non trovo nulla...

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Beh, grazie mille and80!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.