No puedo destruir el video de YouTube incrustado en el reproductor plyr. El método player.destroy() se llama sin ningún error pero no destruye el reproductor.
Por esta razón, cuando trato de abrir otro video incrustado, solo carga el video incrustado anterior.
Cuando verifiqué la propiedad isEmbed del reproductor, devuelve false . Debería ser true ya que estoy reproduciendo un video de YouTube.
Estoy usando reaccionar js.
let video = document.getElementById('player-embed'); var youtubeEmbedId = extractYoutubeEmbedId(options.source.src) window.player = new Plyr(video, defaultOptions); useEffect(() => { return () => { window.player.destroy(); if (window.hls) { window.destroyHLS(); } } }, []) return ( <div id="player-embed" data-plyr-provider="youtube" data-plyr-embed-id={youtubeEmbedId}/> ); Encontré este ejemplo de plyr para el ejemplo de video de youtube de plyr y funciona como se esperaba. La propiedad isEmbed devuelve verdadero y el método player.destroy() de hecho destruye al jugador. No se porque no me funciona.
Parece que window.player = new Plyr() se llama cada vez que se vuelve a renderizar su componente de reacción, por lo tanto, sigue creando nuevas instancias de Plyr. Intente mover la inicialización de Plyr a useState como const [player] = useState(new Plyr()) y luego asígnelo a la ventana en useEffect para que se llame solo una vez.
Todavía podría tener algunos errores, por lo que sería mejor usar el paquete oficial de Plyr para reaccionar https://github.com/chintan9/plyr-react