Desarrollé un complemento de Firefox para aumentar la salida del altavoz. Usé AudioContext para esto.
En los videos de YouTube funciona bien, pero en otros sitios web no funciona. Así que descubrí que esto se debía a que DOM no está cargado. Así que ahora, si estoy esperando que DOM se cargue por completo, no sale ningún sonido de los altavoces, incluso para YouTube, que funcionaba anteriormente.
Aquí está el código, intenté ponerlo dentro de DOMReady y otros métodos que esperan a que DOM se cargue, pero Audio deja de funcionar después de esto.
let mVideoElement = document.querySelector('video'); let audioCtx = new AudioContext(); let source = audioCtx.createMediaElementSource(mVideoElement); let gainNode = audioCtx.createGain(); browser.storage.onChanged.addListener((changes, area) => { if (area === 'local' && 'value' in changes) { increaseVolume(changes.value.newValue); } if (area === 'local' && 'status' in changes) { speakerBoosterStatus(changes.status.newValue); } }); function increaseVolume(value) { if (value === undefined) { gainNode.gain.value = 1; } else { gainNode.gain.value = value; } source.connect(gainNode); gainNode.connect(audioCtx.destination); } function speakerBoosterStatus(status) { if (status === false) { gainNode.gain.value = 1; source.connect(gainNode); gainNode.connect(audioCtx.destination); window.location.reload(); } else { browser.storage.local.get('value').then(result => increaseVolume(result.value)); } } browser.storage.local.get('value').then(result => increaseVolume(result.value)); browser.storage.local.get('status').then(result => speakerBoosterStatus(result.value));Aquí está el código fuente para una mejor prueba.
Las relaciones públicas son bienvenidas. Gracias :)