모바일 디바이스에서 동영상을 촬영하는 기능은 현대적인 웹 어플리케이션에서 매우 중요한 기능입니다. 이 기능을 자바스크립트를 사용하여 구현하는 방법에 대해 알아보겠습니다.
1. getUserMedia API 사용하기
getUserMedia API는 웹 브라우저에서 사용자의 미디어 장치를 액세스하는 데 사용됩니다. 이를 통해 카메라와 마이크 같은 장치에 접근하여 동영상을 촬영하고 스트림을 생성할 수 있습니다.
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
const videoElement = document.createElement('video');
videoElement.srcObject = stream;
document.body.appendChild(videoElement);
})
.catch(error => {
console.error('Error accessing media devices:', error);
});
위의 코드는 getUserMedia API를 사용하여 동영상 스트림을 얻어내고, 이를 video 요소의 srcObject로 설정하여 화면에 띄우는 예시입니다. 이 코드를 실행하면 브라우저는 사용자에게 카메라 접근 권한을 요청하게 됩니다.
2. MediaRecorder API를 사용하여 동영상 녹화하기
MediaRecorder API는 브라우저에서 스트림에 있는 미디어 데이터를 기록하고 저장할 수 있는 기능을 제공합니다. 이를 사용하여 모바일 디바이스의 동영상을 녹화할 수 있습니다.
let mediaRecorder;
const recordedChunks = [];
function startRecording() {
mediaRecorder = new MediaRecorder(userMediaStream);
mediaRecorder.ondataavailable = event => {
recordedChunks.push(event.data);
};
mediaRecorder.start();
}
function stopRecording() {
mediaRecorder.stop();
}
function saveRecording() {
const blob = new Blob(recordedChunks, { type: 'video/webm' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'recording.webm';
document.body.appendChild(a);
a.click();
}
위의 코드는 startRecording 함수를 호출하면 MediaRecorder를 생성하고 녹화를 시작합니다. 녹화된 데이터는 ondataavailable 이벤트 핸들러에서 recordedChunks 배열에 저장됩니다. stopRecording 함수를 호출하여 녹화를 멈출 수 있으며, saveRecording 함수를 호출하여 녹화된 동영상을 저장할 수 있습니다.
결론
위의 코드를 사용하면 자바스크립트로 모바일 디바이스의 동영상 촬영 기능을 구현할 수 있습니다. getUserMedia API를 사용하여 스트림을 얻어내고, MediaRecorder API를 사용하여 동영상을 녹화할 수 있습니다. 이를 활용하여 웹 어플리케이션에서 동영상 촬영 기능을 제공할 수 있습니다.
참고 자료
-
[MediaDevices.getUserMedia() - Web APIs MDN](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) -
[MediaRecorder - Web APIs MDN](https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder)