¿Cómo reproducir/pausar video o audio en ReactJS?

En este artículo, discutiremos cómo encender/apagar video o audio. Comprenderemos cómo podemos encender o apagar nuestro video/audio usando el botón de alternar

Para una mejor comprensión, mantendremos la implementación simple. 

Creación y configuración del entorno:

Paso 1: Cree una aplicación React usando el siguiente comando

 npx  create-react-app myapp

Paso 2: después de crear la aplicación React, muévase a nuestro directorio de proyectos usando el siguiente comando

cd myapp

dentro de la carpeta src, encontrarás el archivo App.js, modificaremos este componente.

Estructura del proyecto: Tendrá el siguiente aspecto:

Ejemplo: el componente es App.js, tiene un elemento de video donde aparecerá su video. En la parte inferior izquierda, hay dos botones de alternar, mediante los cuales puede alternar su video/audio. 

  • Aplicación.js:

Javascript

import { useEffect, useState, useRef } from "react";
  
export default function App() {
    const [mystream, setmystream] = useState(null);
    const [videoswitch, setvideo] = useState(true);
    const [audioswitch, setaudio] = useState(true);
    const myvideo = useRef(null);
  
    useEffect(() => {
        navigator.mediaDevices
            .getUserMedia({ video: true, audio: true })
            .then((stream) => {
                myvideo.current.srcObject = stream;
                myvideo.current.autoplay = true;
                myvideo.current.muted = false;
                setmystream(stream);
            });
    }, []);
  
    const handleVideo = () => {
        if (videoswitch) {
            setvideo(false);
            mystream.getTracks().forEach(function (track) {
                if (track.readyState === "live" && 
                    track.kind === "video") {
                    track.enabled = false;
                }
            });
        } else {
            setvideo(true);
            mystream.getTracks().forEach(function (track) {
                if (track.readyState === "live" && 
                    track.kind === "video") {
                    track.enabled = true;
                }
            });
        }
    };
    const handleAudio = () => {
        if (audioswitch) {
            setaudio(false);
            mystream.getTracks().forEach(function (track) {
                if (track.readyState === "live" && 
                    track.kind === "audio") {
                    track.enabled = false;
                }
            });
        } else {
            setaudio(true);
            mystream.getTracks().forEach(function (track) {
                if (track.readyState === "live" && 
                    track.kind === "audio") {
                    track.enabled = true;
                }
            });
        }
    };
    return (
        <div>
            <button onClick={handleVideo}>
                {videoswitch ? "Turn off video" : 
                    "Turn on video"}
            </button>
            <button onClick={handleAudio}>
                {audioswitch ? "Turn off audio" : 
                    "Turn on audio"}
            </button>
            <video ref={myvideo} style={{
                width: "500px", height: "500px" }}></video>
        </div>
    );
}

El estado utilizado en este componente:  

  1. mystream: este estado retendrá el flujo de medios del usuario.
  2. videoswitch: Esto mantendrá el estado actual del botón de cambio de video.
  3. audioswitch:   Esto mantendrá el estado actual del botón de alternancia de audio.

Hemos usado el gancho useRef para acceder al elemento de video y establecer su propiedad srcObject:

const myvideo = useRef(null);

Ahora obtenga los medios del usuario cuando el componente se monte por primera vez usando el gancho de reacción useEffect y configure la propiedad srcObject del elemento de video. Hemos creado dos detectores de eventos onClick para los botones para que podamos alternar entre activado/desactivado.

Si el video o el audio ya están apagados, lo encenderemos usando 

track.enabled=true

Nota: si desea detener la transmisión, puede usar track.stop()

Inicie la aplicación: ahora inicie el servidor de desarrollo con el siguiente comando

 npm start

Producción:

Publicación traducida automáticamente

Artículo escrito por mondaltarakes y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *