Estoy tratando de agregar efectos de filtro a una transmisión de audio que reproduzco en mi sitio web. Puedo conectar la biblioteca Tone.js a la transmisión de audio, pero no escucho ningún cambio en la transmisión de audio que se reproduce en el sitio web. No veo ningún error en la consola y he intentado ajustar el filtro de 50 a 5000 pero nada parece tener ningún efecto en el audio. ¿Necesito configurar el new Tone.Player() para escuchar el audio? Si es así, ¿cómo hace para configurar el reproductor si no hay src para el elemento de audio existente?
$('#testBtn').click(async function () { const audioElement = document.getElementById('theAudioStream'); const mediaElementSource = Tone.context.createMediaElementSource(audioElement); const filter = new Tone.Filter(50, 'lowpass').toDestination(); Tone.connect(mediaElementSource, filter); await Tone.start(); console.log("Started?"); });La transmisión de audio que intento modificar se configura a partir de una llamada JsSip. El código para iniciar la transmisión es el siguiente:
var audioStream = document.getElementById('theAudioStream') //further down in code currentSession.answer(options); if (currentSession.connection) { currentSession.connection.ontrack = function (e) { audioStream.srcObject = e.streams[0]; audioStream.play(); } }Hago clic en el botón de prueba después de que la llamada ha comenzado para saber que la transmisión de audio está presente antes de inicializar los filtros Tone.js
Solución de trabajo:
Eliminar el audioStream.play() desde donde se responde la llamada JsSIP resuelve el problema.
No sé la razón exacta por la que esto resuelve el problema (incluso podría ser una solución), pero después de muchas pruebas y errores, esta forma permite que el audio esté disponible para que ToneJS lo efectúe .
Cualquier otra solución es bienvenida.