2010-10-25 18 views
11

Mi piacerebbe sviluppare un'applicazione web di esempio in grado di inviare e leggere l'audio al volo.Creazione di una web radio

L'idea è di sviluppare un sito Web con HTML5/JS. Quindi, la parte di amministrazione (in php o qualsiasi altra lingua lato server) mi consentirà di inviare l'audio da un microfono.

Quindi, sul lato client, l'utente può ascoltare lo streaming con il tag <audio> ad esempio.

È possibile? Qualcuno ha usato una soluzione forte (aperta/libera) per farlo?

Grazie,

Saluti.

risposta

1

http://web.psung.name/zeya/ - questa applicazione transcodifica la tua musica al volo e la trasmette tramite HTML5. Forse questo aiuterà un po ';)

+0

Grazie per la risposta.Proverò questa soluzione stasera! – Zakaria

+0

In questo modo i dati vengono effettivamente trasmessi o solo transcodificare un file audio e inviare il tutto? Poiché la domanda richiede l'ingresso microfonico, non sarebbe un file audio sul server, ma un flusso. Ho guardato la fonte, ma non sono sicuro che questo funzionerebbe per l'input microfonico o simili al volo. – sworoc

+0

Immagino che mandi tutto, ma la radio internet funziona grazie al fatto che gli mp3 non devono segnare dove si trova la fine del file - e suppongo che Ogg Vorbis faccia lo stesso. Quindi dovremmo controllare se mandare un file all'infinito (o dividerlo su blocchi più piccoli e inviarlo parzialmente, e poi giocare insieme nel browser di un client) farebbe il trucco. – flegmatyk

1

Esiste una specifica per interacting with devices, ad esempio i microfoni, ma sono i primi giorni e non sono a conoscenza di alcun supporto.

Se vuoi qualcosa che possa interagire con un microfono oggi, guarda ad Adobe Flash.

1

Non penso che si possa fare qualcosa del genere con solo JavaScript e HTML5. E se potessimo, molto probabilmente dovremmo aspettare molto prima che i client possano usarlo nel browser. Come ha detto David, Flash funzionerebbe, il problema è che: A) molti dispositivi non lo supportano e B) Flash è tutt'altro che gratuito. Esistono altri modi per fare ciò che hai descritto, ma richiedono altri programmi o almeno altri plugin. L'unica altra alternativa a cui posso pensare è Silverlight di Microsoft, gratuito e non eccessivamente difficile da usare, ma con supporto per il microfono, non so quanto sia grande. Spero che questo ti aiuti.

+0

Ecco un collegamento al sito Web di Microsoft per Silverlight: http://www.silverlight.net/ – Blake

+0

Grazie per la risposta. Il problema è che voglio mettere in atto una soluzione multipiattaforma. Quindi, ho scelto dispositivi come iPad ... – Zakaria

+0

Per piattaforme multipiattaforma Flash è una pessima idea, l'iPad non supporta nemmeno Flash. Dubito che abbia comunque alcun supporto per l'etere di Silverlight. Vedo il tuo problema con il mercato della telefonia mobile. Chiederò in giro e vedrò se riesco a trovare un'altra soluzione per te. Quando arrivo a qualcosa lascerò un altro commento qui. – Blake

1

Il tag audio HTML non specifica alcun particolare codec, quindi i produttori di browser sono liberi di scegliere il proprio. Attualmente nessuno supporta un formato di streaming, anche se ciò potrebbe accadere. Per quanto riguarda la registrazione, non sono sicuro che vorresti davvero supportare la registrazione illimitata dal browser, perché avresti problemi di concorrenza? Vuoi davvero permettere a tutti di registrare contemporaneamente?

Sembra avere più senso avere un accesso limitato alla registrazione di una sessione multimediale sul server e quindi consentire l'accesso archiviato a tale tramite il browser. Il recupero può essere facilmente eseguito con il tag HTML AUDIO, ma in sostanza abbiamo appena inventato il podcast.

1

Sarebbe possibile manipolare i tag audio per il contenuto "stream", ma ci dovrebbe essere un buffer di un paio di secondi (almeno). Reimpostare la sorgente del tag su un URL che fornisce i secondi secondi successivi ogni due secondi (ovviamente non file statici, ma pubblicati dinamicamente dallo stream). Lato amministratore Penso che tu sia bloccato con un plug-in poiché hai bisogno dell'accesso al microfono.

1

Penso che ciò che stai proponendo sia fattibile in teoria, ma in pratica i client e gli standard web non sono ancora sufficientemente maturi. Ad esempio, dai un'occhiata a questo interessante blog su audio synthesis in JavaScript.

Ora, per la teoria:

Alternativa 1: Attendere che i browser per aggiungere il supporto per un formato di streaming audio (tipicamente, il tag audio attualmente supporta WAV, OGG e/o MP3).

Alternativa 2: implementazione streaming in corso ...

Per il lato server (la cosa di input audio "mic") presumo che tu sia libero di fare praticamente quello che vuoi. Ad esempio, dovrebbe essere possibile non collegare effettivamente il microfono al server, ma piuttosto consentire al server di eseguire una sorta di processo di transcodifica da un'altra sorgente/server. Quindi è possibile avere un'applicazione CGI/FastCGI a cui i client Web si connettono per ottenere l'ultima finestra del flusso (parte dello stream, ad esempio 1-5 secondi?).

Dal lato del client Web, è possibile utilizzare il tag audio e controllarlo da JavaScript per aggiornarlo periodicamente con nuove finestre di flusso. L'accodamento di campioni audio non è supportato, quindi è necessario elaborare una sorta di meccanismo di sincronizzazione personalizzato. Una soluzione potrebbe essere quella di utilizzare due campioni audio simultanei che si dissolvono in dissolvenza (riducendo così al minimo i clic & hickup risultanti da un tempo impreciso).

+0

Ho pensato che sarebbe stato facile installare un server "Icecast" che trasmettesse un flusso audio su un URL. Quindi, in una pagina HTML, il tag audio otterrà ... – Zakaria

2

Praticamente qualsiasi soluzione scelta subirà una cattiva accettazione su un dispositivo o un altro, e la soluzione basata sul Web è ancora peggio (come ampiamente sottolineato da tutti).

Se si desidera coprire il più vasto pubblico possibile, configurare un server di streaming come Icecast e trasmetterlo su MP3 e/o OGG (entrambi sono migliori). Praticamente tutti i dispositivi connessi a Internet dotati di capacità ragionevoli saranno in grado di riprodurre audio in streaming, in modo che l'utente scelga il lettore appropriato o il suo preferito.