µStreamer
가볍고 빠른 MJPEG 비디오 스트리밍 서버
스마트 다운로드
프로젝트 홈페이지 방문
아직 설치 프로그램이 없습니다 — 소스 저장소로 이동하세요
초고속 MJPEG 비디오 스트림, Raspberry Pi 하드웨어 인코딩 지원
주요 기능
- 멀티스레드 JPEG 인코딩으로 성능 향상
- Raspberry Pi 하드웨어 인코딩 가속(V4L2 M2M)
- DV-timings로 입력 해상도 자동 적응
- 프레임 중복 제거 기능으로 60% 이상 트래픽 절감
- Unix 도메인 소켓 및 systemd socket 활성화
할 수 없는 것
- •libevent, libjpeg, libbsd 등의 라이브러리에 의존합니다. 기본적으로 127.0.0.1:8080에서 수신 대기하며, 크로스 오리진 요청은 기본적으로 비활성화되어 있으므로 --allow-origin=*을 설정하여 활성화해야 합니다. HTTPS는 리버스 프록시(예: Nginx)와 함께 사용해야 하며, 프레임 중복 제거 기능은 브라우저별로 특정 URL 파라미터를 사용해야 합니다.
사용 사례
- 라즈베리파이 HDMI/VGA 화면 캡처 라이브 스트리밍 (PiKVM 원격 관리 등)
- 고품질 네트워크 카메라 비디오 스트림 푸시
- 원격 모니터링 및 보안 시스템
상세 설명
µStreamer는 가볍고 빠른 MJPEG 비디오 스트리밍 서버로, 모든 V4L2 장치에서 네트워크로 비디오를 전송할 수 있습니다. 멀티스레드 JPEG 인코딩, Raspberry Pi 하드웨어 인코딩 가속, DV-timings 동적 해상도 조정, 대역폭 절약을 위한 프레임 중복 제거, Unix 도메인 소켓 스트리밍, GPIO 신호를 통한 스트림 상태 표시 등의 고급 기능을 지원합니다. PiKVM 프로젝트의 핵심 구성 요소로서 고프레임률, 고해상도 화면 캡처(HDMI/VGA)를 위해 특별히 설계되었으며, 유사한 mjpg-streamer보다 더 효율적이고 안정적입니다.
문제 해결 & FAQ (2)
문제 해결왜 내 GL.iNet GL-RM1 (Comet KVM)에서 /api/streamer/snapshot이 503을 반환하나요?
GL-RM1은 예상되는 /run/kvmd/ustreamer.sock의 Unix 소켓 대신 '--host=0.0.0.0 --port=8080' 플래그로 ustreamer를 실행하므로, 표준 PiKVM API가 작동하지 않습니다. 해결 방법: 장치에 SSH로 접속하여 ustreamer의 HTTP 엔드포인트에서 직접 스냅샷을 가져옵니다: 'ssh root@<kvm-ip> curl -s http://127.0.0.1:8080/snapshot > screenshot.jpg'. 이 명령은 1920x1080 JPEG 프레임을 반환합니다. 이 문제는 이 타사 구현에 한정됩니다. PiKVM 프로젝트는 GL-RM1의 비표준 설정을 지원하지 않습니다.
문제 해결여러 USB 카메라를 실행할 때 uStreamer 'CAP: Device select() timeout'을 어떻게 해결하나요?
timeout은 보통 USB 버스가 모든 카메라를 동시에 처리할 수 없다는 뜻입니다. uStreamer는 프로세스가 시작되자마자 각 V4L2 장치를 열고 캡처합니다. "아무도 보고 있지 않음"은 JPEG 인코딩만 건너뛸 뿐, USB 캡처를 중지하지는 않습니다.
해결 방법:
1. 네 개의 uStreamer 인스턴스를 한 번에 모두 시작하지 마십시오. process supervisor, reverse proxy 또는 launcher script를 사용하여 필요할 때만 인스턴스를 시작하고 유휴 상태일 때 중지하십시오.
2. 카메라를 별도의 USB 버스/호스트 컨트롤러에 연결하십시오. USB hat/hub가 있는 Raspberry Pi Zero 2W는 여전히 하나의 USB2 버스를 공유하므로, hub 포트를 추가해도 대역폭이 늘어나지 않습니다.
3. 해상도와 프레임 레이트를 낮춘 다음 카메라를 하나씩 테스트하십시오:
ustreamer --format=mjpeg --device=/dev/video0 --host=192.168.2.144 --port=8000 -r 1280x720 -f 1 --device-timeout=20
4. 더 큰 --device-timeout, 예를 들어 20은 조기 실패를 피할 수 있지만 USB 대역폭을 늘리지는 않습니다.
5. -K/--last-as-blank를 제거하십시오. 이 옵션은 deprecated되었으며 장치가 캡처되는 것을 막을 수 없습니다.
이 uStreamer 버전에는 첫 HTTP 뷰어가 연결될 때까지 비디오 장치를 닫아 두는 내장 옵션이 없습니다.
태그
시작하기
소프트웨어 설치
다운로드한 설치 프로그램을 더블 클릭하고 안내에 따르세요
저장소 클론: git clone --depth=1 https://github.com/pikvm/ustreamer
디렉터리로 이동: cd ustreamer
컴파일: make
- 저장소 클론: git clone --depth=1 https://github.com/pikvm/ustreamer
- 디렉터리로 이동: cd ustreamer
- 컴파일: make
체크섬 없음
이 프로젝트는 GitHub Release 페이지에 SHA-256 체크섬을 게시하지 않았습니다
SHA256 체크섬
체크섬 없음
GitHub Releases에서 직접 다운로드하고 파일 무결성을 직접 확인하세요
이 플랫폼의 모든 SHA-256 체크섬은 프로젝트의 공식 GitHub Release 페이지에서 추출되었으며, 어떠한 변경도 없습니다. GitHub Releases 페이지에서 직접 검증할 수 있습니다.
오픈소스 투명성
GitHub 소스 보기제거 정보
소스 코드 디렉토리를 삭제하면 됩니다. 패키지 관리자(예: apt, pacman)를 통해 설치한 경우, 해당 제거 명령(예: sudo apt remove ustreamer)을 사용하세요.
추가 의존성 없음
다운로드 후 바로 사용 가능. 추가 런타임이 필요하지 않습니다.
문제 발생? 아래 FAQ 확인
2 FAQs