[나만무] react-webcam

2023. 7. 22. 07:45·프로젝트/나만무

배경

웹기반 실시간 화상 게임(with 모션 인식)을 주제로 화상채팅 기능을 구현했었다. NomadCoder의 줌 클론코딩으로 시작해서 그것을 그대로 프로젝트에 적용했었는데, 알대일 화상 채팅만을 할 때는 문제가 없었다. 그러나 미디어파이프의 모션 인식을 접목시키자 <canvas>에 그려지는 손 골격이 매우 느려지는 것을 확인했다. 검색을 해도 다른 사람들은 손 골격이 실제 손에 잘 붙어있는 반면, 나의 모션인식은 반박자는 느렸다. 단순히 노트북 성능이슈로 생각하고 넘겼는데, 오늘 react-webcam이라는 라이브러리를 사용함으로써 원인을 알 수 있었다.

 

이전 방식

navigator.mediaDevices?.getUserMedia를 사용해서 디바이스의 노트북을 찾고, stream도 꺼낸 다음, <video> 태그를 js로 가져와서 비디오 태그에 집어넣었다. 리액트에서 바닐라JS처럼 구현을 했었다. 화상채팅만 할 때는 속도가 빨랐어서 문제를 못 느꼈었지만, 모션 인식이 들어가니 속도차이가 확연히 드러났다.

 

react-webcam 방식

https://www.npmjs.com/package/react-webcam

 

react-webcam

React webcam component. Latest version: 7.1.1, last published: a month ago. Start using react-webcam in your project by running `npm i react-webcam`. There are 247 other projects in the npm registry using react-webcam.

www.npmjs.com

 

이 속도 문제를 개선하기 위해서는 react 외부 라이브러리인 react-webcam 라이브러리를 사용하면 된다! 원리는 알 수 없지만 직접 구현한 웹캠보다 월등히 속도가 빠르다. 사용방법도 무척 간단한데, 이전처럼 디바이스에서 카메라 가져오고 할 필요없이, 그냥 <Webcam> 컴포넌트를 집어넣으면 자동으로 웹캠이 켜진다!

    <Webcam
        audio={false}
        width={500}
        height={700}
        ref={webcamRef}
        screenshotFormat="image/jpeg"
        videoConstraints={{ width: 500, height: 500, facingMode: "user" }}
      />

모션인식을 집어넣으면 느려지지않을까 했지만, 캔버스에 그려지는 골격이 내 손인 것처럼 딜레이없이 부드럽게 아주 잘 나온다. 나만무 개발에 들어간지 오래 되지 않아서 다행이다.

 

테스트 영상

 

 

'프로젝트 > 나만무' 카테고리의 다른 글

[나만무] 2차 발표 후기  (0) 2023.07.27
[나만무] 프론트도 어렵다  (0) 2023.07.24
[나만무] React 렌더링 트러블이슈  (0) 2023.07.22
[나만무] 현재 프로젝트 아키텍처 구조v5.0  (0) 2023.07.10
[나만무] ChatGPT 과금 요소  (0) 2023.07.10
'프로젝트/나만무' 카테고리의 다른 글
  • [나만무] 2차 발표 후기
  • [나만무] 프론트도 어렵다
  • [나만무] React 렌더링 트러블이슈
  • [나만무] 현재 프로젝트 아키텍처 구조v5.0
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (576)
      • 혼잣말 (88)
      • TIL (3)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (169)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (40)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    블록체인
    사이드프로젝트
    JavaScript
    글리치해커톤
    RNN
    pintos
    니어프로토콜
    Pint OS
    docker
    NEAR Protocol
    리액트
    Flutter
    부산대
    핀토스
    OS
    센디
    코드프레소
    나만무
    numpy
    파이썬
    졸업과제
    자바스크립트
    프로그래머스
    크래프톤정글
    딥러닝
    react
    알고리즘
    해커톤
    머신러닝
    MailBadara
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
[나만무] react-webcam
상단으로

티스토리툴바