다중 카메라 구성
FLYOS-FAST v1.4.0의 GoCam은 동일한 상위 컴퓨터에서 여러 개의 UVC 카메라를 연결하는 것을 지원합니다. 본 문서에서는 두 개의 카메라를 예로 들어 전체 구성 방법을 설명하며, 세 개, 네 개의 경우에도 동일하게 적용됩니다.
다중 카메라는 GoCam에 의존하며, FLYOS-FAST v1.4.0 이상 버전에서만 제공됩니다. Crowsnest를 사용하는 기기는 카메라 연결 및 사용을 참고하시고, 단일 GoCam의 기본 사용법은 GoCam 카메라 서비스를 참고하십시오.
포트 및 접속 주소
각 카메라의 포트와 웹페이지 경로는 일대일로 대응되며, /webcamN/ 접두사는 nginx에 출하 시 미리 설정되어 있어 수정할 필요가 없습니다. 주소 오른쪽의 아이콘을 클릭하면 복사할 수 있습니다:
| 채널 및 포트 | 실시간 비디오 스트림 | 단일 프레임 스냅샷 |
|---|---|---|
제1채널 · 8080 | Loading... | Loading... |
제2채널 · 8081 | Loading... | Loading... |
제3채널 · 8082 | Loading... | Loading... |
제4채널 · 8083 | Loading... | Loading... |
규칙은 다음과 같습니다: 제N채널의 포트는 8080 + (N - 1)이며, 웹페이지 경로는 /webcamN/이고, 그중 제1채널은 숫자를 생략하여 /webcam/으로 표기합니다.
?action=stream과 ?action=snapshot은 GoCam이 mjpg-streamer와 호환되는 표기법으로, 각각 /stream 및 /snapshot과 동일하며, 인터페이스 자체의 동작으로 구성해야 하는 옵션이 아닙니다.
카메라 연결
카메라 선택, 배선 방식 및 드라이버 불필요 UVC 요구 사항은 카메라 연결 및 사용을 참고하십시오.
다중 카메라 환경에서는 각 카메라를 상위 컴퓨터의 서로 다른 USB 인터페이스에 연결해야 하며, 동일한 비전원 허브를 거치지 않아야 합니다. 카메라를 연결하거나 분리하기 전에 프린터를 완전히 종료하고 전원을 차단하십시오.
1단계: 구성 열기
Fluidd에서 구성 파일을 열고 장치 노드(카메라 ID)를 확인하는 방법은 구성 열기를 참고하십시오.
다중 카메라 환경에서는 각 채널마다 해당 카메라의 캡처 노드(video-index0)를 기입해야 하며, metadata 노드를 가리키지 않도록 하고, USB 물리 포트에 따라 고정하여 재부팅 후 노드 번호 변경으로 인한 오류를 방지하십시오.
2단계: 다중 채널 구성 작성
구성 파일 위치:
/usr/share/printer_data/config/gocam.conf
두 채널 구성 예시(device는 by-path로 고정, 해상도는 실측값으로 기입):
[cam 1]
port: 8080
device: /dev/v4l/by-path/platform-5311000.usb-usb-0:1:1.0-video-index0
resolution: 640x480
max_fps: 15
quality: 5
[cam 2]
port: 8081
device: /dev/v4l/by-path/platform-5101000.usb-usb-0:1:1.0-video-index0
resolution: 640x480
max_fps: 15
quality: 5
| 매개변수 | 설명 |
|---|---|
port | 해당 채널이 수신하는 HTTP 포트, 채널 간 중복 불가 |
device | 해당 카메라 캡처 노드(video-index0)의 경로 |
resolution | 카메라가 실제로 지원하는 해상도, 형식은 너비x높이 |
max_fps | 최대 프레임 레이트, 카메라 열거 값을 초과하지 않도록 권장 |
quality | MJPEG 품질, 값 범위 1 ~ 31, 숫자가 작을수록 화질이 좋고 대역폭이 높음 |
v4l2ctl | 선택 사항, UVC 매개변수, 관리 페이지에서 저장한 매개변수가 이 항목에 기록됨 |
ffmpeg_flags | 선택 사항, FFmpeg 매개변수 |
YUYV 형식만 지원하는 카메라는 상위 컴퓨터에서 MJPEG로 소프트웨어 인코딩해야 하므로 CPU 점유율이 높습니다. MJPG를 지원하는 카메라는 패스스루가 가능하여 CPU를 거의 점유하지 않습니다. 두 채널 모두 YUYV만 가능한 경우 640x480, 15 프레임부터 시작하는 것을 권장하며, 특정 채널이 MJPG를 지원하는 경우 해당 채널만 해상도를 높일 수 있습니다.
3단계: 웹페이지에서 카메라 패널 추가
GoCam을 구성한 후 Moonraker에 카메라를 등록해야 Fluidd / Mainsail에서 패널이 표시됩니다.
Fluidd에서 설정 → 카메라를 열고 두 채널 항목을 각각 다음과 같이 기입했는지 확인하십시오:
| 항목 | 비디오 스트림 주소 | 스냅샷 주소 |
|---|---|---|
| 제1채널 | Loading... | Loading... |
| 제2채널 | Loading... | Loading... |
- 제2채널을 여전히
/webcam/으로 작성: 두 패널이 동일한 카메라의 화면을 표시합니다. 제N채널은 반드시/webcamN/을 사용해야 합니다. - 웹페이지에서 추가한 항목은 Moonraker 데이터베이스에 저장됩니다(
source가database).moonraker.conf만 수정하면 적용되지 않으며, 반드시 인터페이스에서 수정해야 합니다. - Moonraker의
/server/webcams/item인터페이스는 조회, 추가, 삭제만 지원하며 수정은 지원하지 않으므로 역시 인터페이스에서 조작하십시오.
구성 파일 방식으로 항목을 추가해야 하는 경우(데이터베이스의 기존 항목은 변경하지 않음), moonraker.conf에 다음을 추가할 수 있습니다:
[webcam cam2]
enabled: true
service: mjpegstreamer-adaptive
target_fps: 15
stream_url: /webcam2/?action=stream
snapshot_url: /webcam2/?action=snapshot
자주 묻는 질문
| 증상 | 가능한 원인 | 처리 |
|---|---|---|
페이지에 NO SIGNAL 표시, frames가 항상 0 | device가 metadata 노드를 가리키거나 resolution이 카메라 성능을 초과함 | --list-formats-ext로 확인하고 video-index0으로 변경 |
| 두 패널의 화면이 완전히 동일함 | 제2채널의 URL이 여전히 /webcam/으로 작성됨 | /webcam2/?action=stream으로 변경 |
| 재부팅 후 특정 채널이 작동하지 않음 | /dev/videoN 번호가 연결/분리 순서에 따라 변경됨 | device를 /dev/v4l/by-path/...-video-index0으로 변경 |
| 제2채널 포트가 연결되지 않음 | [cam 2]가 구성되지 않았거나 다른 서비스 포트와 충돌 | ss -lntp | grep 8081로 수신 확인 |
| 화면 끊김, 상위 컴퓨터 부하 증가 | YUYV 소프트웨어 인코딩에 높은 해상도, 높은 프레임 레이트가 중첩됨 | 해상도나 프레임 레이트를 낮추거나 MJPG 지원 카메라로 교체 |