GD-C100 Ubuntu 연결 성공
다이소에서 약 5,000원대에 구할 수 있는 PC용 GD-C100 USB 화상카메라를 192.168.0.197 Ubuntu 서버에 연결했고, uStreamer와 nginx 프록시로 실시간 MJPEG 공개 송출까지 성공했습니다.
192.168.0.197:8088/stream을 직접 프록시합니다. PHP-FPM을 거치지 않는 실시간 MJPEG 경로라 장시간 재생에 맞습니다.GD-C100 Ubuntu 실시간 연결 성공 요약
GD-C100은 Ubuntu에서 /dev/video0 장치로 인식됐고, 현재 640x480 모드로 실시간 송출 중입니다.
nginx는 192.168.0.197:8088/stream을 공개 경로로 넘겨서 메인 캠프 위젯과 전용 페이지에서 바로 볼 수 있게 구성했습니다.
- 구매 기준: 다이소 약 5,000원대 PC용 웹캠
- 입력 장치:
/dev/video0 - 송출 경로:
/gd-c100-ubuntu-camera/live-stream/ - 운영 방식: systemd + uStreamer + nginx
구매부터 Ubuntu 인식까지
GD-C100은 별도 전원 없이 USB로 연결하는 보급형 PC 화상카메라입니다. 설치는 제품을 서버 USB 포트에 꽂고, Linux 웹캠 장치로 잡히는지 확인한 뒤 실시간 송출 서비스를 붙이는 순서로 진행했습니다.
- GD-C100을 서버 USB 포트에 연결합니다.
lsusb로 USB 카메라가 잡히는지 확인합니다.v4l-utils,ffmpeg,cheese,ustreamer를 설치합니다.v4l2-ctl --list-devices로/dev/video0같은 영상 장치를 확인합니다.- 웹 서버나 캡처 프로세스를 실행할 계정을
video그룹에 넣고 재로그인합니다. v4l2-ctl --list-formats-ext로 실제 지원 해상도와 FPS를 확인합니다.
sudo apt update
sudo apt install -y v4l-utils ffmpeg cheese ustreamer
lsusb
v4l2-ctl --list-devices
v4l2-ctl -d /dev/video0 --list-formats-ext
sudo usermod -aG video "$USER"
640x480 30fps 모드까지 확인됩니다. 실제 FPS는 조명, USB 상태, 장면 변화량에 따라 /state의 captured_fps 값처럼 낮아질 수 있고, 720p 이상은 이 장치가 지원 모드로 제공하지 않습니다.테스트 캡처
장치가 /dev/video0로 보이면 지원 해상도인 640x480으로 한 장을 캡처합니다. 파일이 정상 생성되면 서버가 카메라 입력을 받을 준비가 된 상태입니다.
mkdir -p ~/gd-c100-test
ffmpeg -y -f v4l2 -input_format yuyv422 -video_size 640x480 -i /dev/video0 -frames:v 1 ~/gd-c100-test/gd-c100.jpg
ls -lh ~/gd-c100-test/gd-c100.jpg
실시간 확인이 필요할 때
ffplay -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30 -i /dev/video0
GUI 확인은 cheese로 하고, 공개 페이지 운영은 ustreamer 서비스를 사용합니다.
현재 운영 서비스
현재 실시간 영상은 gd-c100-ustreamer.service가 담당합니다. 서비스는 부팅 시 자동으로 켜지고, nginx는 /gd-c100-ubuntu-camera/live-stream/ 요청을 192.168.0.197:8088/stream으로 직접 전달합니다. uStreamer는 목표 30fps와 JPEG 품질 90으로 실행하며, 실제 캡처 FPS는 상태 API에서 확인합니다.
systemctl status gd-c100-ustreamer.service
curl -I http://192.168.0.197:8088/stream
curl http://192.168.0.197:8088/state
curl -I https://www.netcity.co.kr/gd-c100-ubuntu-camera/live-stream/
수동 실행 기준
ustreamer --device /dev/video0 --host 0.0.0.0 --port 8088 \
--resolution 640x480 --format YUYV --desired-fps 30 \
--encoder CPU --quality 90 --persistent --drop-same-frames 30