Skip to main content

ros-stream-viewer

ROS Streamer 서버가 ZMQ로 발행하는 카메라 이미지를 구독해 화면에 표시하는 CLI입니다. ROS 설치 없이 단독 실행되며, Python 3.12+ 에서 동작합니다.

# 설치 없이 실행 (권장)
uvx ros-streamer stream --host <HOST> --port 5556

# 설치
uv tool install ros-streamer    # 또는: pip install ros-streamer
ros-stream-viewer stream

ros-streamer, ros-stream-viewer, rviewer는 동일한 실행 파일입니다.

빠른 시작

# compressed(JPEG) 스트림 표시 (서버 base+1, 기본 5556)
ros-stream-viewer stream

# raw 스트림 표시 (서버 base, 기본 5555)
ros-stream-viewer stream --port 5555 --stream-type raw

# 창 없이 100프레임만 수신하고 JSON 요약을 stdout으로 출력 (CI/스크립트)
ros-stream-viewer stream --headless --max-frames 100 --json

표시 중 단축키: i 정보 오버레이 토글 · p/Space 일시정지 · s PNG 스냅샷 · v mp4 녹화 · f 전체화면 · q/ESC 종료.

주요 플래그

플래그 설명 기본값
--host 서버 호스트 localhost
--port ZMQ 포트 (서버 규약: base=raw, base+1=compressed) 5556
--stream-type auto(매직 자동 판별) / raw / compressed auto
--width, --height 헤더 없는 raw 스트림의 해상도 (헤더가 있으면 무시) 640x480
--connect-timeout 첫 프레임 대기 시간(초). 초과 시 종료 코드 4 (0=무한) 5
--stall-timeout 수신이 멈춘 것으로 경고할 임계(초, 0=끄기) 3
--max-frames, --duration N프레임/N초 후 종료 (0=무제한) 0
--snapshot-dir s/v 저장 디렉터리 현재 디렉터리
--network-info 네트워크 정보 오버레이 (--network-info=false로 끔) true
--headless 창 없이 통계만 로그로 출력 false
--json 실행 요약(JSON)을 stdout으로 출력 false
-q, --quiet / -d, --debug 경고만 출력 / DEBUG 로그 출력 -
--config, --dotenv 설정 파일 / .env 경로 -
--log-level, --log-file 로그 레벨 / JSON Lines 로그 파일 INFO / -
--no-color 색상 출력 끄기 -

설정

우선순위는 플래그 > 환경변수 > .env > 설정 파일 > 기본값이며, 환경변수 prefix는 ROS_STREAMER, 중첩 키 구분자는 __입니다.

ROS_STREAMER_STREAM__HOST=10.0.0.2 ROS_STREAMER_STREAM__PORT=15555 \
  ros-stream-viewer stream

설정 파일(JSON/TOML/YAML)은 --config로 지정합니다. 지정하지 않으면 .env와 OS 설정 디렉터리($XDG_CONFIG_HOME/ros-streamer/config.toml, macOS는 ~/Library/Application Support, Windows는 %APPDATA%)의 config.{toml,yaml,yml,json}을 자동으로 찾습니다.

# viewer.yaml
stream:
  host: 10.0.0.2
  port: 5555
  type: raw
  connect_timeout: 5.0
  network_info: false
logging:
  level: INFO

불리언은 true/false/1/0/yes/no/on/off(대소문자 무관)만 인정합니다. 해석할 수 없는 값은 기본값으로, 해석됐지만 규약을 벗어난 값(포트 범위 등)은 종료 코드 2로 거부합니다.

출력과 종료 코드

결과(도움말, --json 요약)는 stdout, 로그·진행·오류는 stderr로 나갑니다.

$ ros-stream-viewer stream --headless --max-frames 100 --json 2>/dev/null
{"backlog_skipped": 0, "decode_errors": 0, "dropped_frames": 0, "exit_code": 0,
 "fps": 30.0, "frames": 100, "frames_processed": 100, "host": "localhost",
 "latency_ms": 0.4, "port": 5556, "resolution": "640x480", "status": "ok", ...}
코드 의미
0 정상 종료(사용자 종료, --max-frames/--duration 도달 포함)
1 예기치 않은 시스템 오류
2 사용법/설정 오류
3 뷰어 서비스 시작 실패(ZMQ 소켓 생성/연결 실패)
4 실행 중 서비스 실패(첫 프레임 타임아웃, 소켓/프로토콜 오류)

요구 사항과 지원 범위

  • Python 3.12 / 3.13 (CI에서 두 버전 모두 테스트)
  • Linux/macOS/Windows. GUI 표시에는 OpenCV 창이 필요하며, 헤드리스 환경에서는 --headless를 사용하세요.
  • 일부 Linux 배포판은 OpenCV 런타임 의존성(libGL)이 필요합니다: apt-get install -y libgl1 libglib2.0-0
  • ROS 서버 없이도 동작하며, ROS 패키지는 필요하지 않습니다.

0.x 버전은 API가 아직 안정적이지 않습니다. 하위 호환이 깨지는 변경은 CHANGELOG에 기록합니다.

문서

라이선스

Apache-2.0 (LICENSE).

Metadata

Release files for ros-streamer 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ros-streamer 0.3.0
File Size Uploaded
ros_streamer-0.3.0.tar.gz 44.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ros-streamer 0.3.0
File Interpreter ABI Platform
ros_streamer-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 76.1 kB

Release files / ros_streamer-0.3.0.tar.gz

Download URL ros_streamer-0.3.0.tar.gz
Size 44.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ddeaac9ea4e12dee338d0810427cd51b94cce07675aff6d3031fe620a8135467
BLAKE2b-256 checksum
How to use checksums
649054f02e5000c0618472819fe13fbc73dc82b16d7c4fe4e827e88a2e6d5b34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ros_streamer-0.3.0-py3-none-any.whl

Download URL ros_streamer-0.3.0-py3-none-any.whl
Size 31.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9b747d6a4c91c01d5e71f716bce8983af3e72e32d3b016896069113e85ee3da
BLAKE2b-256 checksum
How to use checksums
466718ead079df4212f1a6b5230f7be2589ec2ad2ebac2daf9286809377e1d2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.3.1

2 release files

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page