티스토리 뷰
브라우저에서 카메라와 마이크를 사용하는 방법: getUserMedia 소개
웹에서 화상 통화나 실시간 스트리밍을 구현할 때, 브라우저에서 카메라와 마이크에 접근해야 합니다. 이때 사용하는 API가 바로 navigator.mediaDevices.getUserMedia입니다. 별도의 라이브러리 없이, 웹 API로 브라우저에서 바로 제공되는 기능입니다.
getUserMedia란?
getUserMedia는 웹 애플리케이션이 사용자의 카메라와 마이크에 접근할 수 있게 해주는 브라우저 내장 API입니다. 이 API를 호출하면 사용자의 허가를 받아 비디오와 오디오 스트림을 가져올 수 있습니다. 구체적으로는 사용자에게 장치 사용 허가를 요청하고, 이를 허용할 경우 비디오 스트림과 오디오 스트림을 반환합니다.
사용 예시
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then((stream) => {
// 스트림을 비디오 요소에 연결하여 사용자 화면에 표시
videoElement.srcObject = stream;
})
.catch((error) => {
console.error("장치에 접근하는 동안 오류가 발생했습니다:", error);
});
위 코드에서 비디오와 오디오 옵션을 설정하여 카메라와 마이크에 접근하고, 반환된 스트림을 비디오 요소에 연결해 화면에 표시할 수 있습니다. 사용자는 요청을 수락하거나 거부할 수 있으며, 거부 시 에러가 발생하여 catch 블록에서 처리됩니다.
getUserMedia의 주요 특징
- 브라우저 내장 기능: 대부분의 최신 브라우저에서 지원하며, 별도의 설치 없이 사용 가능합니다.
- Promise 기반 비동기 처리: 호출 시 Promise를 반환하여 성공과 실패에 따라 다르게 처리할 수 있습니다.
- 사용자 허가 필요: 보안을 위해 항상 사용자에게 장치 접근 허가를 요청합니다.
getUserMedia가 제공하는 장점
getUserMedia 덕분에 웹 애플리케이션은 추가적인 라이브러리 없이도 화상 통화, 실시간 방송, 녹화 기능 등을 쉽게 구현할 수 있습니다. 이 API는 특히 화상 채팅 앱, 온라인 회의 서비스와 같은 실시간 통신 애플리케이션에서 필수적인 역할을 합니다.
아래 링크에서 더 많은 정보 확인하기👇
MediaDevices: getUserMedia() method - Web APIs | MDN
The getUserMedia() method of the MediaDevices interface prompts the user for permission to use a media input which produces a MediaStream with tracks containing the requested types of media.
developer.mozilla.org
'알아두면 쓸데 있는 > 코딩 지식' 카테고리의 다른 글
간단한 프록시 서버 만들기 - YTS API 프록시 서버 (1) | 2024.11.11 |
---|---|
React와 ReactJS는 같은 용어 (0) | 2024.11.11 |
CORS(Cross-Origin Resource Sharing)란? (0) | 2024.11.09 |
Babel(바벨) 이란? (1) | 2024.11.07 |
VSCode 멀티 커서 편집 (0) | 2024.10.31 |
- Total
- Today
- Yesterday
- 쉽게 풀어쓴 C언어 Express
- javascript 필수 문법
- pwa(progressive web app)
- 원시값(primitive)
- chrome extension 자동 배포
- math.h
- semver)
- ajax (asynchronous javascript and xml)
- x.y.z (메이저.마이너.패치)
- Jest
- json.parse(json.stringify())
- structuredclone()
- defaultdict
- inp
- styled-components
- 시맨틱 버전(semantic versioning
- named export vs default export
- core web vitals
- jackson 라이브러리
- react router
- 중첩 함수(nested function)
- mermaid-cli
- Collections
- counter
- 프로세스 강제 종료
- public vs assets
- 소프트웨어 버전 관리
- stdlib.h
- useEffect
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |