Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda