---
title: WebRTCで自撮り
tags: ["HTML5", "WebRTC"]
categories: ["Programming", "JavaScript", "HTML5", "getUserMedia"]
date: 2015-02-07T10:49:47Z
updated: 2015-02-07T10:49:47Z
---

WebRTCのgetUserMedia APIで自撮りするサンプルです。
Chrome 40で確認。

[サンプル](http://blog.ik.am/api/v1/files/22a3ba91-f3b3-4514-bab1-10d1bf413686/camera.html)

``` html
<!doctype html>
<html>
<head>
    <title>Cameraテスト</title>
</head>
<body>
<video autoplay width="400" height="300"></video>
<img src="" width="400" height="300">
<canvas style="display:none;" width="400" height="300"></canvas>

<script type="text/javascript">
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || window.navigator.mozGetUserMedia || navigator.msGetUserMedia;
    window.URL = window.URL || window.webkitURL;

    var video = document.querySelector('video');
    var canvas = document.querySelector('canvas');
    var ctx = canvas.getContext('2d');
    var localMediaStream;

    navigator.getUserMedia({video: true, audio: false},
            function (stream) {
                video.src = window.URL.createObjectURL(stream);
                localMediaStream = stream;
            },
            function (error) {
                alert(JSON.stringify(error));
            }
    );

    function takeSnapshot() {
        if (localMediaStream) {
            ctx.drawImage(video, 0, 0, 400, 300);
            document.querySelector('img').src = canvas.toDataURL('image/webp');
        }
    }
    video.addEventListener('click', takeSnapshot, false);
</script>
</body>
</html>
```
