Come catturare l'audio da un browser?
-
25-09-2019 - |
Domanda
I miei bisogni del cliente a lasciare un record utente un messaggio dal browser, quindi esportare il messaggio come un file audio (per esempio, WAV).
Come è meglio raggiunto? Flash, Java, HTML5? Di meglio, voglio dire qualcosa che è semplice da implementare e anche un ampio sostegno.
Quali sono le esperienze delle persone che utilizzano HTML5?
Grazie!
Soluzione
Flash è un'opzione, ma è necessario un server di streaming multimediale (Adobe Media Server, Wowza, Red5). Non c'è modo per catturare e memorizzare l'audio su Flash a livello locale per un file.
Se siete disposti ad andare con applet Java ci sono più soluzioni. Tutti loro richiedono l'accesso al file system locale e chiederà agli utenti per le autorizzazioni aggiuntive. Per esempio provare http://www.javasonics.com/ o Google " applet registrare audio ".
Aggiornamento: a partire da Flash 10.0 c'è possibilità di usare il microfono con SampleDataEvent.SAMPLE_DATA. Questo dà l'accesso ai dati grezzi audio dal microfono. Vedere questo progetto per l'implementazione: http://code.google.com/p/micrecorder/
Altri suggerimenti
Beh ho il sospetto che una simile caratteristica di HTML5 sarebbe piuttosto non standard, e il supporto del browser può essere diverso per un sacco (con molti browser non comprese le eventuali).
Java non è così popolare come il flash e ci sono molte persone che non hanno JRE è affatto.
Quindi, tutto sommato vorrei andare per la soluzione Flash in questo caso. E forse con un HTML5 di riserva per alcuni casi limitati, sono risorse permettere.
Supponendo che si intende "esportare" a un server, qui è una soluzione Flash open-source che non richiede un media server Flash:
https://code.google.com/p/wami-recorder/
La registrazione viene trasferito via HTTP post per una tecnologia lato server di tua scelta. Nel caso più semplice, è possibile catturare e salvare l'audio con 4 righe di codice PHP:
<?
$content = file_get_contents('php://input');
$fh = fopen('output.wav', 'w') or die("can't open file");
fwrite($fh, $content);
fclose($fh);
?>
Per quanto riguarda il supporto HTML5, mantenere un occhio su getUserMedia ()