Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
Por qué decodeAudioData for Icecast stream solo funciona en el navegador Chrome de escritorio

Tengo una transmisión en vivo que se transmite a través de Icecast como audio/mpeg. Uso el siguiente código para tomar el audio de una transmisión en vivo para escuchar el audio:

 function playLiveAudio() { // Fix up prefixing window.AudioContext = window.AudioContext || window.webkitAudioContext; var context = new AudioContext(); var offset = 0; var byteOffset = 0; var minDecodeSize = 4096; // This is your chunk size var request = new XMLHttpRequest(); request.onprogress = function(evt) { if (request.response) { var size = request.response.length - byteOffset; if (size < minDecodeSize) return; // In Chrome, XHR stream mode gives text, not ArrayBuffer. // If in Firefox, you can get an ArrayBuffer as is var buf; if (request.response instanceof ArrayBuffer) buf = request.response; else { ab = new ArrayBuffer(size); buf = new Uint8Array(ab); for (var i = 0; i < size; i++) buf[i] = request.response.charCodeAt(i + byteOffset) & 0xff; } byteOffset = request.response.length; context.decodeAudioData(ab, function(buffer) { playSound(buffer); }, function(error) { console.log(error); }); } }; request.onloadend = function(evt) { console.log(evt); }; request.open('GET', liveURL, true); request.responseType = "stream"; // 'stream' in chrome, 'moz-chunked-arraybuffer' in firefox, 'ms-stream' in IE request.overrideMimeType('text/plain; charset=x-user-defined'); request.send(null); function playSound(buffer) { source = context.createBufferSource(); // creates a sound source source.buffer = buffer; // tell the source which sound to play source.connect(context.destination); // connect the source to the context's destination (the speakers) source.start(offset); // play the source now // note: on older systems, may have to use deprecated noteOn(time); offset += buffer.duration; } }

Intenté cambiar la transmisión a moz-chunked-arraybuffer y ver si podía manipular el búfer de audio, pero no parece hacer una diferencia: siempre recibo un rechazo de promesa de decodificación en Safari sin más mensajes, o un error de decodificación de datos de audio en Firefox.

Por alguna razón, solo funciona en Desktop Chrome; no funciona en ninguna versión de Firefox, Safari o Mobile Chrome. ¿Cómo se puede hacer que decodeAudioData() funcione en todos los entornos? En Firefox recibo el error: no se puede decodificarAudioData(). Puedo configurar un elemento de audio para transmitir en vivo la URL, pero luego hay un retraso de 8 segundos. Este código logra un retraso de 1 segundo.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda