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

64
Vistas
MediaStreamAudioDestinationNode siempre es estéreo; AudioNodeOptions ignorado

Estoy tratando de crear un MediaStreamTrack de 1 MediaStreamAudioDestinationNode MediaStreamTrack De acuerdo con el estándar, esto debería ser posible.

 const ctx = new AudioContext(); const destinationNode = new MediaStreamAudioDestinationNode(ctx, { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'speakers', }); await ctx.resume(); // doesn't make a difference // this fails expect(destinationNode.stream.getAudioTracks()[0].getSettings().channelCount).equal(1);

Resultado:

  • Chrome 92.0.4515.107 siempre crea una pista estéreo
  • Firefox 90 no devuelve nada para destinationNode.stream.getAudioTracks()[0].getSettings() aunque getSettings() debería ser totalmente compatible

¿Qué estoy haciendo mal aquí?


Editar: Aparentemente, tanto Firefox como Chrome en realidad producen una pista mono, simplemente no te dicen la verdad. Aquí hay una solución alternativa para Typescript:

 async function getNumChannelsInTrack(track: MediaStreamTrack): Promise<number> { // unfortunately, we can't use track.getSettings().channelCount, because // - Firefox 90 returns {} from getSettings() => see: https://bugzilla.mozilla.org/show_bug.cgi?id=1307808 // - Chrome 92 always reports 2 channels, even if that's incorrect => see: https://bugs.chromium.org/p/chromium/issues/detail?id=1044645 // Workaround: Record audio and look at the recorded buffer to determine the number of audio channels in the buffer. const stream = new MediaStream(); stream.addTrack(track); const mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(); return new Promise<number>((resolve) => { setTimeout(() => { mediaRecorder.stop(); mediaRecorder.ondataavailable = async ({ data }) => { const offlineAudioContext = new OfflineAudioContext({ length: 1, sampleRate: 48000, }); const audioBuffer = await offlineAudioContext.decodeAudioData( await data.arrayBuffer() ); resolve(audioBuffer.numberOfChannels); }; }, 1000); }); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No creo que estés haciendo nada malo. Es un problema conocido ( https://bugs.chromium.org/p/chromium/issues/detail?id=1044645 ) en Chrome que simplemente no se solucionó hasta ahora.

Creo que en Firefox ni siquiera está implementado. Este error ( https://bugzilla.mozilla.org/show_bug.cgi?id=1307808 ) indica que getSettings() solo devuelve los valores que se pueden cambiar hasta el momento.

Creo que sería útil si destacas/sigues estos temas o los comentas para asegurarte de que no se olviden.

about 4 years ago · Juan Pablo Isaza Denunciar
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