Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Ma in questo modo l'audio viene riprodotto in streaming?

    Ho realizzato un progetto in cui, facendo doppio click sul titolo di una canzone, essa viene eseguita. Il fatto è che il file mp3 risiede e viene eseguito in locale, se volessi sapere come si comporta invece se il tutto risiedesse su un server (che poi è lo scopo ultimo) come dovrei fare? Nel senso, vorrei capire se il file viene rirpodotto man mano in streaming, oppure aspetta che sia stato scaricato del tutto per mandarlo in esecuzione.

    Il codice che manda in esecuzione il file è il seguente:
    codice:
    var music:Sound
          music=new Sound()
          music.load(new URLRequest(myXML.BLADE[sup].brano[Number(e.target.name)].percorso))
    
    var sc:SoundChannel 
         sc=music.play()
    non c'è alcun riferimento al fatto che esso debba avvenire in streaming, dunque è scontato che ciò avvenga oppure di default avviene il contrario? Come dovrei fare invece per fare in modo che venga eseguito in streaming?

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Credo che di default vada in streaming. La documentazione flash, riguardo la classe Sound e il relativo metodo load, fa riferimento sempre allo streaming.
    http://livedocs.adobe.com/flash/9.0_...dia/Sound.html
    Il primo argomento da passare all'oggetto Sound o al metodo load si chiama, per l'appunto, "stream".

    Ad ogni modo per evitare che l'audio sia riprodotto in streaming dovresti creare una sorta di preload, quindi aggiungere un listener che catturi l'evento di caricamento completo, e solo a quel punto mandare l'audio in play.

    Una cosa del genere:

    codice:
    var suono:Sound=new Sound(new URLRequest("musica.mp3"));
    suono.addEventListener(Event.COMPLETE, caricamentoCompletato);
    
    function caricamentoCompletato(e:Event):void {
    	suono.play();
    }
    In effetti da flash si può fare una simulazione di scaricamento dalla finestra di prova del filmato, ma da quanto ho potuto verificare non funge tanto bene in questo caso. L'audio sembra partire comunque subito, saltando l'attesa di precaricamento, perciò non è affidabile.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    infatti, e non è l'unico limite della simulazione scaricamento che ho trovato...

    cmq con quel metodo dell'event.COMPLETE che hai scritto ho fatto un altra cosa, ovvero, il caricamento di un swf esterno, tuttavia non funziona

    ho scritto semplicemente:
    Codice PHP:
    var contentLoader:Loader function processSWF():void 
    {     
       
    contentLoader=new Loader    
       contentLoader
    .load(new URLRequest(mySWF.swf)        
     
    contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETEaddswf) }

     function 
    addswf(e:Event):void 
    mastermc.addChild(contentLoader)} 
    eppure mi da errore TypeError: Error #1009: Cannot access a property or method of a null object reference

    Se invece l'addChild lo chiamo subito, senza aspettare il completamento del caricamento, funziona tutto regolarmente

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    metti le virgolette

    codice:
    URLRequest("mySWF.swf")
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    è vero le ho dimenticate tuttavia non c'entrano le virgolette, in realtà quella che ho riportato è la versione "semplificata". Il codice originale che genera l'errore, carica il link da un file XML, quindi:

    contentLoader.load(new URLRequest(myXML.CONTENUTO[sup].collegamento))


    funziona fintanto l'addChild non lo metto in una funzione separata dopo l'event.COMPLETE

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Scusami ma il tuo script non mi è tanto chiaro e altrettanto la spiegazione che hai dato, ad esempio non capisco dove viene richiamata la funzione processSWF.

    Posso intuire dove sta il problema. Ad ogni modo, se non hai già risolto, sarebbe più opportuno aprire una nuova discussione, dato che il nuovo problema sorto non è propriamente attinente all'oggetto di questa discussione, e nel caso ti consiglio di spiegare più dettagliatamente la situazione che ti si presenta.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    ok apro una nuova discussioe

    cmq la funzione processSWF sta li per errore..dannato copia/incolla

  8. #8
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Ci sono 2 tipi di streaming per i contenuti audio/video

    1. Streaming on demand
    2. Streaming live

    Per maggiori info leggere qui: http://it.wikipedia.org/wiki/Streaming

    Un oggetto della classe Sound, non si aggiunge allo stage come un qualsiasi oggetto di visualizzazione (MovieClip o Immagine) e va in esecuzione dopo che sono disponibili un numero minimo di byte.

    Non serve quindi monitorare l'evento di caricamento COMPLETE, non serve addChild e una volta che hai l'indirizzo da passare all'oggetto URLRequest lo passi all'oggetto Sound che lo manderà in esecuzione con il metodo play().

    Quindi se vuoi che la traccia audio vada in esecuzione al Click su un link o un pulsante ti basta fare qualcosa del genere:

    Codice PHP:
    suonaMp3();

    function 
    suonaMp3():void
    {
        
    richiesta = new URLRequest(percorsi[0]);
        
    suono = new Sound(richiesta);
        
    playBtn.addEventListener(MouseEvent.CLICKprimoMp3);
    }
    function 
    primoMp3(evento:Event):void
    {
        
    suono.play();

    Come credo sia evidente la variabile ''richiesta'' è di tipo Stringa e il parametro passato a URLRequest è il primo elemento di un Array (è irrilevante che questo elemento sia inserito nell'Array direttamente o preso da un .xml.

    Per quanto riguarda la simulazione di download di Flash su un oggetto Sound è improbabile che dia una risposta attendibile.
    Se vuoi creare una barra di caricamento in corso con sopra una barra che segnala la posizione di riproduzione del brano in esecuzione, è tutto un altro discorso e ti serve anche un'istanza della classe soundChannel

    ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da Sleter
    Ciao

    Ci sono 2 tipi di streaming per i contenuti audio/video

    1. Streaming on demand
    2. Streaming live

    Per maggiori info leggere qui: http://it.wikipedia.org/wiki/Streaming

    Un oggetto della classe Sound, non si aggiunge allo stage come un qualsiasi oggetto di visualizzazione (MovieClip o Immagine) e va in esecuzione dopo che sono disponibili un numero minimo di byte.

    Non serve quindi monitorare l'evento di caricamento COMPLETE, non serve addChild e una volta che hai l'indirizzo da passare all'oggetto URLRequest lo passi all'oggetto Sound che lo manderà in esecuzione con il metodo play().

    Quindi se vuoi che la traccia audio vada in esecuzione al Click su un link o un pulsante ti basta fare qualcosa del genere:

    Codice PHP:
    suonaMp3();

    function 
    suonaMp3():void
    {
        
    richiesta = new URLRequest(percorsi[0]);
        
    suono = new Sound(richiesta);
        
    playBtn.addEventListener(MouseEvent.CLICKprimoMp3);
    }
    function 
    primoMp3(evento:Event):void
    {
        
    suono.play();

    Come credo sia evidente la variabile ''richiesta'' è di tipo Stringa e il parametro passato a URLRequest è il primo elemento di un Array (è irrilevante che questo elemento sia inserito nell'Array direttamente o preso da un .xml.

    Per quanto riguarda la simulazione di download di Flash su un oggetto Sound è improbabile che dia una risposta attendibile.
    Se vuoi creare una barra di caricamento in corso con sopra una barra che segnala la posizione di riproduzione del brano in esecuzione, è tutto un altro discorso e ti serve anche un'istanza della classe soundChannel

    ciao
    Ok quindi di default la riproduzione viene eseguita in streming senza dover apportare accorgimenti aggiuntivi


    cmq la questione dell'evento COMPLETE era riferita ad un altro mio problema, ma come suggerito, ho aperto un altro topic al riguardo

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 © 2025 vBulletin Solutions, Inc. All rights reserved.