Tengo:
if ('webkitAudioContext' in window) { ctx = new webkitAudioContext() } else if ('AudioContext' in window) { ctx = new AudioContext() } else { console.log('Web Audio API is not available.') } audioHuman = document.getElementById("human") sourceHuman = ctx.createMediaElementSource(audioHuman) sourceHuman.connect(ctx.destination)
Pero luego me sale un error aquí:
sourceHuman.noteOn(0)
TypeError no capturado: sourceHuman.noteOn no es una función
¿Por qué no está definido el método noteOn
?
Estoy usando mi etiqueta de audio HTML para transmitir por hls.js:
<audio id="human" preload="metadata" playsinline> <source src="media/human/playlist.m3u8"> <source src="media/human.m4a" type="audio/mpeg"> <source src="media/human.ogg" type="audio/ogg"> <source src="media/human.mp3" type="audio/mpeg"> Your browser does not support the audio tag. </audio>
function setupHls(media, mediaSrc) { if (Hls.isSupported()) { // Check if HLS.js is supported. var hls = new Hls() hls.loadSource(mediaSrc) hls.attachMedia(media) } else if (media.canPlayType('application/vnd.apple.mpegurl')) { // Check for native browser HLS support. media.src = mediaSrc } else { console.log("Your browser doesn't support HTTP Live Streaming.") } } setupHls(document.getElementById("human"), 'media/human/playlist.m3u8')
Me gustaría obtener el audio transmitido por HLS y procesarlo con Web Audio API.
De acuerdo con esta publicación , supongo que tendría que usar MediaElementAudioSourceNode . Pero no estoy muy seguro de cómo.
Al registrar la salida en la consola, entiendo que MediaElementAudioSourceNode es en realidad el tipo de salida del método createMediaElementSource
.
Como señaló @DDomen, lo que no entendí fue el hecho de que los métodos de play/pause/stop
del elemento HTML5 <audio>
siguen siendo válidos con AudioContext
:
Nota: Como consecuencia de llamar a createMediaElementSource(), la reproducción de audio desde HTMLMediaElement se redirigirá al gráfico de procesamiento de AudioContext. Por lo tanto, la reproducción/pausa de los medios aún se puede hacer a través de la API del elemento multimedia y los controles del reproductor.