Tengo una transmisión HLS que estoy adjuntando a un elemento de audio usando la biblioteca Hls.js. Luego quiero tomar ese flujo y alimentarlo en Wave.js. Quiero usar el método fromStream para construir el visualizador de forma de onda de audio y no fromElement para poder establecer el argumento connectDestination opcional en falso.
Para crear el flujo de medios que se alimenta al constructor Wave.fromStream() , estoy siguiendo este ejemplo que muestra cómo se puede usar captureStream() para reflejar la reproducción de un elemento de audio o video. Mi implementación de capturar la transmisión es la siguiente.
let audio = this.audioPlayer.nativeElement; let stream; if (audio.captureStream) { stream = audio.captureStream(); } else if (audio.mozCaptureStream) { stream = audio.mozCaptureStream(); } else { console.error('Stream capture is not supported'); stream = null; }Luego, el flujo se pasa a Wave.fromStream().
Desafortunadamente, cuando se ejecuta Wave.fromStream(), aparece el siguiente error.
core.js:6498 ERROR DOMException: Failed to execute 'createMediaStreamSource' on 'AudioContext': MediaStream has no audio trackEsto significa que el flujo de medios pasado a Wave.fromStream no tiene pistas de audio asociadas. Y cuando observo mi elemento de audio, incluso con el flujo Hls adjunto, el registro de Audio.audioTracks devuelve indefinido, a pesar de que hay un flujo de audio reproduciéndose y controlado por ese elemento de audio. Por lo tanto, no hay problema con la creación de la transmisión de medios a partir del elemento de audio, es simplemente cómo Hls.js adjunta la transmisión al elemento de audio.
¿Hay otra forma de crear un objeto de transmisión de medios a partir de una transmisión Hls creada por Hls.js?
Encontré una solución al problema que consistía en crear mi propia versión personalizada del paquete @foobar404/wave npm y modificarlo para aceptar un argumento de entrada que es un contexto de audio preexistente y el nodo final en el contexto. esto significa que puedo conectar la forma de onda al nodo final en el contexto de audio sin luego conectar la forma de onda al destino o origen del contexto de audio, que es de donde provenían mis errores.
Consulte: https://www.npmjs.com/package/wave-external-audio-context