Access webcam without Flash

后端 未结 2 417
死守一世寂寞
死守一世寂寞 2020-12-01 08:31

I want to create a video chat application using HTML 5 elements and JavaScript, and I don\'t want to use Flash to access the user\'s webcams.

How can I accomplish th

相关标签:
2条回答
  • 2020-12-01 08:57

    At the moment of writing this the best solution is WebRTC. It is supported in Chrome, Mozilla and Opera, but still unavaialble in Internet Explorer and Safari.

    Minimalistic demo.

    Index.html

    <!DOCTYPE html>
    <head>
    </head>
    <body>
        <video></video>
        <script src="webcam.js"></script>
    </body>
    

    webcam.js

    (function () {
        navigator.getMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia);
    
        navigator.getMedia(
            // constraints
            {video:true, audio:false},
    
            // success callback
            function (mediaStream) {
                var video = document.getElementsByTagName('video')[0];
                video.src = window.URL.createObjectURL(mediaStream);
                video.play();
            },   
            //handle error
            function (error) {
                console.log(error);
            })   
    })();
    

    Read more here or there

    0 讨论(0)
  • 2020-12-01 09:12

    Despite the fact the provided example is great and inspired me, at the time of writing this answer, the Navigator.getUserMedia() function is obsolete. I've rewritten the provided example using the video tag's srcObejct and promise approach.

    <!DOCTYPE html>
    <head>
    </head>
    <body>
        <video id="video-cam"></video>
        <script>
            navigator.mediaDevices.getUserMedia({ video: true, audio: true })
            .then(mediaStream => {
                const video = document.getElementById('video-cam');
                video.srcObject = mediaStream;
                video.onloadedmetadata = (e) => {
                    video.play();
                };
            })
            .catch(error => {
                alert('You have to enable the mike and the camera');
            });
        </script>
    </body>

    0 讨论(0)
提交回复
热议问题