모바일 디바이스에서 native app을 만들지 않고 웹브라우저에서 제공되는 기능을 통해,

카메라를 실행시켜 사진/동영상을 찍고 해당 데이터를 java script를 통해 접근/제어할 수 있음.

 

W3C API에서 Media Capture에 관련된 건 2가지가 있는데,

하나는 단순 미디어 데이터 접근에 관한 것이고, 나머지 하나는 스트림 수준에서 접근하는 것. 

 

http://mobilehtml5.org/ 에서 확인해 본 결과,

미디어 데이터에만 접근할 수 있는 HTML Media Capture의 경우,

현재 iOS와 Android 브라우저에서 지원이 되지만,

스트림 수준에서 접근할 수 있는 통칭 getUserMedia API는 Chrome/FireFox에서만 지원되고 있음.

 

그러므로 이 포스팅에서는 단순 HTML Media Capture에 대한 간단한 예제만 다룸.

모든 테스트는 iOS8 Safari 브라우저에서만 해봤음.

 

1. 웹 페이지에서 버튼을 눌러 사진촬영 후 <img> 태그에 촬영한 사진 보여주기.

<!doctype html>
<html>
<head>
<meta name="viewport" content="width=320; user-scalable=no" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Camera</title>
<script src="/jquery/jquery.js"></script>

<script>
$(document).ready(function(){
    if (!('url' in window) && ('webkitURL' in window)) {
        window.URL = window.webkitURL;
    }

    $('#camera').change(function(e){
        $('#pic').attr('src', URL.createObjectURL(e.target.files[0]));
    });
});
</script>
</head>

<body>
    <input type="file" id="camera" name="camera" capture="camera" accept="image/*" />
    <br />

    <img id="pic" style="width:100%;" />
</body>
</html>

 

 

2. 웹 페이지에서 버튼을 눌러 동영상촬영 후 <video> 태그에서 재생버튼을 눌러 촬영한 동영상 보여주기.

<!doctype html>
<html>
<head>
<meta name="viewport" content="width=320; user-scalable=no" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Camera</title>
<script src="/jquery/jquery.js"></script>

<script>
$(document).ready(function(){
    if (!('url' in window) && ('webkitURL' in window)) {
        window.URL = window.webkitURL;
    }

    $('#camcorder').change(function(e){
        $('#mov').attr('src', URL.createObjectURL(e.target.files[0]));
        // iOS Safari에서는 autoplay가 안먹히므로 알림
        alert('동영상 재생버튼을 누르시오');
    });
});
</script>
</head>

<body>
    <input type="file" id="camcorder" name="camcorder" capture="camcorder" accept="video/*" />
    <br />

    <video id="mov"></video>
</body>
</html>

 

3. 사진과 동영상을 PHP쪽에 넘겨보면 사진은 .jpg, 동영상은 .MOV로 나옴.

<!doctype html>
<html>
<head>
<meta name="viewport" content="width=320; user-scalable=no" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Camera</title>
</head>

<body>
    <form method="post" enctype="multipart/form-data" action="camera.php">
        <input type="file" id="camera" name="camera" capture="camera" accept="image/*" />
        <input type="file" id="camcorder" name="camcorder" capture="camcorder" accept="video/*" />
        <br />
        <input type="submit" value="전송" />
    </form>
</body>
</html>

 

 

 

 

동영상은 별 의미가 없을 수도 있겠지만,

사진의 경우 <canvas>에 밀어넣고 이런저런 많은 응용을 할 수 있을 듯 하다.

 

 

 

 

 

 

 

 

 

 

Posted by bloodguy
,