tutorial tag play examples javascript html5 audio streaming web-audio

javascript - tag - web audio api examples



Web Audio API: cómo reproducir una secuencia de fragmentos de MP3 (3)

Así que estoy intentando usar la Web Audio API para decodificar y reproducir fragmentos de archivos MP3 transmitidos al navegador usando Node.js & Socket.IO.

Mi pregunta es si mi única opción es crear un nuevo AudioBufferSourceNode para cada fragmento recibido de los datos de audio recibidos o ¿es posible crear un único AudioBufferSourceNode para todos los fragmentos y simplemente agregar los nuevos datos de audio al atributo de buffer del nodo fuente?

Actualmente, así es como estoy recibiendo mis fragmentos de MP3, decodificándolos y programándolos para su reproducción. Ya verifiqué que cada fragmento que se recibe es un ''fragmento de MP3 válido'' y que está siendo decodificado con éxito por la API de audio web.

audioContext = new AudioContext(); startTime = 0; socket.on(''chunk_received'', function(chunk) { audioContext.decodeAudioData(toArrayBuffer(data.audio), function(buffer) { var source = audioContext.createBufferSource(); source.buffer = buffer; source.connect(audioContext.destination); source.start(startTime); startTime += buffer.duration; }); });

Cualquier consejo o información sobre la mejor manera de "actualizar" la reproducción de la API de audio web con nuevos datos de audio sería muy apreciado.



No, no puede reutilizar un AudioBufferSourceNode y no puede push en un AudioBuffer. Sus longitudes son inmutables.

Este artículo ( http://www.html5rocks.com/en/tutorials/audio/scheduling/ ) tiene buena información sobre la programación con la API de Web Audio. Pero estás en el camino correcto.


Veo al menos 2 enfoques posibles.

  1. Configuración de un scriptProcessorNode , que alimentará la cola de datos recibidos y decodificados al flujo en tiempo real de audio web.

  2. Explotar la propiedad de audioBufferSource.loop : actualizar el contenido de audioBuffer en función del tiempo de audio.

Ambos enfoques se implementan en https://github.com/audio-lab/web-audio-stream . Técnicamente puede usar eso para enviar los datos recibidos al audio de la web.