美文网首页
HTML5 API getUserMedia 调用摄像头 拍拍照

HTML5 API getUserMedia 调用摄像头 拍拍照

作者: Xiaodongsu | 来源:发表于2016-08-10 20:29 被阅读0次

    来来来,对着你的浏览器跳个舞,唱首歌,你是我的小呀小苹果.......
    今天介绍一个新玩意儿

    navigator.getUserMedia

    该兄弟可以让你对着你的浏览器照镜子哦!当你孤孤单单一个人的时候(程序员本来就是一个人!),可以对着浏览器说说话看看自己那英姿。

    提示用户需要权限去使用像摄像头或麦克风之类的媒体设备.如果用户提供了这个权限,successCallback函数会被调用,且接收一个LocalMediaStream 对象作为参数.

    语法

    navigator.getUserMedia ( constraints, successCallback, errorCallback );
    
    

    constraints

    constraints参数是一个 MediaStreamConstraints 对象,包含两个值为布尔值的成员: videoaudio. 这个参数描述了被 LocalMediaStream对象所支持的媒体类型,使用时,需要在constraints参数里指定某个类型或者两个类型.如果某特定类型不被浏览器所支持, getUserMedia 会调用errorCallback函数,并传入错误类型NOT_SUPPORTED_ERROR. 如果浏览器不能得到特定类型的音频或者视频流, getUserMedia 会调用 errorCallback 函数,并传入错误类型MANDATORY_UNSATISFIED_ERR.

    若某种媒体类型未被指定,他的值默认为false。下面的例子描述了如何去设置constraints函数接收audio与video:

    { video: true, audio: true }
    

    下面的例子是我对该函数的理解,作的一个小小的调用摄像头及麦克风
    html 代码

    <textarea style="width: 100%; height: 100px;"><video id="video" autoplay="autoplay" width="600px" height="400px"></video>
    <canvas id="canvas1" style="border: 2px solid #ccc;" width="320" height="240"></canvas>
    <canvas id="canvas2" width="320" height="240"></canvas>
    <button>Make Photo</button>
    </textarea>
    

    javascript 代码:

    var video = document.getElementById("video");
    
    navigator.getMedia = navigator.getUserMedia ||
    navigator.webkitGetUserMedia ||
    navigator.mozGetUserMedia ||
    navigator.msGetUserMedia;
    navigator.getMedia(
    // use type video or audio
    {
    video: true,
    audio: true
    },
    // success callback
    function (stream) {
    video.src = window.webkitURL.createObjectURL(stream);
    },
    // error callback
    function(err) {
    console.log("The following error occured: " + err);
    }
    
    );
    setInterval(function(){
    var videoElement = document.getElementById('video');
    var canvasObj = document.getElementById('canvas2');
    var context1 = canvasObj.getContext('2d');
    context1.fillStyle = "#ffffff";
    context1.fillRect(0, 0, 320, 240);
    context1.drawImage(videoElement, 0, 0, 320, 240);
    },1000/60);
    
    function getPic(){
    var videoElement = document.getElementById('video');
    var canvasObj = document.getElementById('canvas1');
    var context1 = canvasObj.getContext('2d');
    context1.fillStyle = "#ffffff";
    context1.fillRect(0, 0, 320, 240);
    context1.drawImage(videoElement, 0, 0, 320, 240);
    }
    

    再来一张图片让大家爽一爽

    1

    演示地址:http://runjs.cn/detail/arbvjdpx

    现在官方已经废弃改方法了:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia

    如果需要可以使用新的API: https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia 下面有例子

    并且由于安全问题,高版本的google 必须使用https https://stackoverflow.com/questions/34197653/getusermedia-in-chrome-47-without-using-https

    有兴趣可以看看webrtc的例子 https://webrtc.github.io/samples/src/content/getusermedia/gum/

    相关文章

      网友评论

          本文标题:HTML5 API getUserMedia 调用摄像头 拍拍照

          本文链接:https://www.haomeiwen.com/subject/fvujsttx.html