2011-01-27 9 views
5

Sono in streaming audio tramite NetConnection e NetStream. So che è possibile modificare i dati di esempio in tempo reale con l'oggetto Sound, tuttavia non riesco a trovare SampleDataEvent per la riproduzione audio con l'oggetto NetStream. Esiste un modo per trasferire l'audio dall'oggetto NetStream a un oggetto Sound e modificare invece l'audio su quell'oggetto?Modifica audio in tempo reale con SampleDataEvent per l'audio all'interno di NetStream

Modifica: Sono disposto a fare qualsiasi tipo di hack folle, quindi qualsiasi soluzione è OK!

+0

come sono i dati audio situati sul lato server, potresti mostrare un URL di esempio? hai un nuovo URL per ogni nuova traccia o è sempre lo stesso? il server consente di scaricare molto più velocemente della velocità di riproduzione ed è possibile ottenere il file completo? – www0z0k

+0

penso di conoscere la strada, ho solo bisogno di ulteriori informazioni – www0z0k

+0

I dati vengono trasmessi via RTMP standard e solo MP3. L'URL di esempio sarebbe qualcosa come http: // host: 1935/mp3playback/mp3: hello.mp3. C'è un nuovo URL per ogni traccia. È, naturalmente, possibile fare il download progressivo tramite l'oggetto Sound() per ottenere ciò che voglio, ma voglio farlo usando NetStream(). – Johan

risposta

2

è necessario accedere al bytecode del suono, se si utilizza Netstream è possibile solo passando per (invitandola by) NetStream.send()/NetConnection.call()oltre ai dati in streaming. altrimenti avrai bisogno di qualcosa come un url diretto per un Sound o URLStream

2

A seconda della qualità che stai cercando, puoi sacrificarlo fino a un segnale mono con basso bitrate, potresti riuscire a trasmettere per ottenerlo come URLStream sul lato client e quindi alimentare i dati di quel URLStream con un oggetto SampleDataEvent di un oggetto Sound vuoto, progressivamente in fase di runtime.

Il lavoro aggiuntivo sarebbe principalmente sul lato server, decomprimendo il file MP3 in un flusso Waveform di numeri a virgola mobile (un flusso di un segnale monocanale [mono] o una combinazione dei due combinati in mono) e quindi spingendolo fuori per l'applicazione lato client.

Mentre viene caricato l'URLStream, aggiungere i byte scaricati al ByteArray disponibile su SoundDataEvent di Sound (assegnargli un po 'di "tempo" di buffer per caricare dati di forma d'onda sufficienti). Per ogni lettura di campioni mono da URLStream, è necessario scrivere lo stesso valore due volte sull'oggetto SampleDataEvent.data (una volta sul canale sinistro, una volta sulla destra).

Tutto ciò detto, il downgrade del flusso audio simile a WAV a mono potrebbe non essere sufficiente per ridurre la larghezza di banda e raggiungere un vasto pubblico di destinazione. Forse dare un'occhiata ad una libreria OGG per AS3 (che dovrebbe esistere) sarebbe un'alternativa migliore, e dovrebbe certamente supportare la decodifica dei flussi parzialmente scaricati.