es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TypeError: el video es nulo

Intenté crear un proyecto de permisos de video simple con audio y, aunque obtuve el permiso con éxito, después de proporcionar el permiso, mostró un error que decía que el video es nulo.

A continuación se muestra el código en JS:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Media Capture</title>
</head>
<body>

    <script>
       let constraints = {'video': true, 'audio': true} 

       navigator.mediaDevices.getUserMedia(constraints)
       .then(function(stream){
            let video = document.querySelector('video');
            video.srcObject=stream;
            video.play();
            console.log(stream)
       })
       .catch(function(err){
           console.log(err)
       })
    </script>
</body>
</html>

El error se muestra en el archivo adjunto:

En el navegador Google Chrome se muestra el siguiente error:

enter image description here

En el navegador Firefox se muestra el siguiente error:

enter image description here

Nota: Por favor, preste atención al código JS anterior y al error del navegador y ayúdeme a solucionarlo. ¡De antemano, gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “video es null” indica que hay un problema al acceder al elemento de video en el documento HTML. Al revisar el código proporcionado, parece que no hay ningún elemento con un id o clase de “video” en la estructura HTML.

    Para corregir este problema, se puede añadir un elemento de video al documento HTML con un id de “video” y especificar las dimensiones del elemento de video. Aquí hay una versión actualizada del código HTML:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Captura de medios</title>
    </head>
    <body>
    
        <video id="video" width="640" height="480"></video>
    
        <script>
           let constraints = {'video': true, 'audio': true} 
    
           navigator.mediaDevices.getUserMedia(constraints)
           .then(function(stream){
                let video = document.querySelector('video');
                video.srcObject=stream;
                video.play();
                console.log(stream)
           })
           .catch(function(err){
               console.log(err)
           })
        </script>
    </body>
    </html>
    

    En esta versión actualizada, se añadió un elemento de video con un id “video” y dimensiones de 640 por 480 píxeles. Luego, usamos document.querySelector() para acceder a este elemento en el código JavaScript y establecer su propiedad srcObject en el MediaStream obtenido de getUserMedia().

    Con estos cambios, el código ahora debería funcionar según lo esperado y mostrar el flujo de video en el elemento de video.

Comments are closed.