2012-06-07 10 views
6

Attualmente sto lavorando a un progetto che utilizza l'audio HTML5 e abbiamo problemi con le limitazioni sui dispositivi iOS (principalmente limitazione di canali audio multipli).Utilizzo di Node.js per lo streaming di tag audio audio in html5 e esclusione della limitazione iOS

Stavo pensando che potrebbe essere possibile controllare i suoni lato server usando node.js. Il client si connetterebbe a un singolo URL audio e il server del nodo trasmetterà i suoni dal vivo attraverso questo singolo canale, facendo tutte le missioni e le transizioni live sul server.

Tecnicamente è possibile? Puoi analizzare l'audio su node.js e fare un po 'di mixaggio dal vivo? Pensi che il server esploderà con più di 5 client simultanei?

Grazie

+0

Cosa speri di realizzare che non può essere fatto da pre-elaborazione del file audio? –

+0

@SamDufel ad esempio, un suono di sottofondo costante con altri suoni che possono essere attivati ​​facendo clic. In realtà useremo una soluzione di pre-elaborazione per questo specifico progetto ma stavo pensando che potrebbe essere una soluzione per esperienze in tempo reale/dinamiche. –

+0

Interessante ... Non sono sicuro che sia possibile, tuttavia, a causa di problemi di cache. –

risposta

4

Sì, questo è del tutto possibile, ma come Sam ha sottolineato, il buffering è un problema. C'è notevole ritardo che si accumula su più punti:

  • Come comandi di controllo dal client
  • missaggio audio PCM prima in un buffer interno
  • dati di codifica con il codec corretto (richiede di fare questo in blocchi)
  • Invio di dati audio
  • buffering lato client
  • buffer di riproduzione sul lato client

Aggiungi tutto questo, e anche se lo fai funzionare molto velocemente, stai ancora guardando un ritardo di un paio di secondi.

Se si decide di seguire questa rotta, è necessario un'applicazione esterna (o scrivere la propria estensione del nodo) per eseguire il missaggio e la codifica. Sox è probabilmente una scelta decente e FFMPEG include molti codec per il tuo uso. È possibile utilizzare entrambi su STDIO.

Per quanto riguarda il carico del server ... questo non è un processo di peso leggero, ma si dovrebbe tracciare il profilo per vedere quanto è grave. Suggerisco di fare altri tentativi di riprodurre più flussi audio contemporaneamente sul lato client prima di tentare qualcosa di simile.

+0

Perché non usare noioso? @TooTallNate ha scritto un bel wrapper per esso, https://github.com/TooTallNate/node-lame – EaterOfCode

+1

@EaterOfCorpses, LAME è solo un codec MP3. Se desideri un supporto browser più ampio, devi supportare più di MP3.Inoltre, le build FFMPEG spesso raggruppano LAME come un possibile codec, quindi potresti anche usare FFMPEG per avere un supporto migliore. – Brad

+0

Suoni logici. – EaterOfCode

Problemi correlati