OBS BroadcastUSB RelayWEBCAM RELAY

무선 USB 랜카드와 USB 캠코더로 웹캠 중계 서버를 우분투 메인 PC 서버에 다시 세우다

무선 USB 랜카드와 USB 캠코더로 웹캠 중계 노드를 세우고, 같은 PC에서 웹서버와 OBS 방송 콘솔을 동시에 운용한 통합 기록입니다. 유선은 서버 운영의 기본 경로로 유지하고, USB 무선과 캠코더는 방송 입력·중계·실험의 경로로 분리했습니다.

WIRED
MAIN WEB
USB WIFI
WEBCAM RELAY
OBS
LINK ROTATION
무선 USB 랜카드와 USB 캠코더를 연결해 웹캠 중계 서버 라이브 페이지가 동작하는 화면
메인 웹서버에 무선 USB 랜카드와 USB 캠코더를 연결하고, 별도 웹캠 중계 경로와 HTTPS 공개 경로로 실시간 영상을 중계하는 운영 화면입니다.
Server Path유선랜은 기존 웹서버와 공개 HTTPS 프록시를 계속 담당합니다.
Relay PathUSB 무선랜은 별도 웹캠 중계 경로로 카메라 중계와 상태 점검을 맡습니다.
Camera PathUSB 캠코더는 UVC 장치로 잡아 uStreamer MJPEG 입력으로 사용합니다.
Broadcast PathOBS는 웹페이지, 웹캠, 자막, 효과, 오디오를 한 장면으로 합칩니다.

Article 82 merged

무선 USB 랜카드와 USB 캠코더로 웹캠 중계 서버를 우분투 메인 PC 서버에 다시 세우다

무선 USB 랜카드와 USB 캠코더를 연결해 웹캠 중계 서버 라이브 페이지가 동작하는 화면
구축 현장메인 웹서버에 무선 USB 랜카드와 USB 캠코더를 연결하고, 웹캠 중계 경로와 HTTPS 공개 경로로 실시간 영상을 중계하는 화면. 사진=NETCITY 구축 기록

[NETCITY NEWS] 이번 구축의 목표는 단순했다. PC 본 서버에 무선 USB 랜카드와 USB 캠코더를 붙이고, 그 장치를 하나의 작은 영상 중계 노드처럼 운영하는 것이다. 기존에는 웹캠 중계 서버 작업 폴더에 남아 있던 무선랜, 웹캠, 릴레이 기록을 기준으로 삼았고, 이번에는 현 메인 서버에서 실제 장치 인식부터 고정 주소, MJPEG 송출, 공개 HTTPS 연결까지 다시 묶었다.

결과적으로 본 서버의 유선 경로는 그대로 유지하고, USB 무선랜은 웹캠 중계 전용 경로로 분리했다. 캠코더는 Linux UVC 장치로 잡아 /dev/video0에서 영상을 받아오고, uStreamer가 8088 포트에서 MJPEG 스트림을 만든다. 외부 공개는 직접 포트를 열지 않고 https://www.netcity.co.kr/relay-server-2/live-stream/ 경로로 넘겼다.

장치부터 확인했다

USB에 연결된 무선랜카드는 Realtek RTL8188FTV 계열로 확인됐다. 장치 ID는 0bda:f179이고, 커널에서는 rtl8xxxu 드라이버로 올라왔다. 네트워크 인터페이스 이름은 wlx90de80320457로 잡혔다. 같은 USB 허브에 연결한 캠코더는 1908:2311 GEMBIRD Generic UVC 1.00 camera로 확인됐고, uvcvideo 드라이버를 통해 /dev/video0, /dev/video1, /dev/media0 장치가 만들어졌다.

USB Wi-Fi : 0bda:f179 Realtek RTL8188FTV
interface : wlx90de80320457
relay role: WEBCAM RELAY

USB camera: 1908:2311 GEMBIRD Generic UVC camera
video dev : /dev/video0
stream    : uStreamer 0.0.0.0:8088

메인 서버와 무선 중계 경로를 분리했다

중요한 것은 메인 서버의 기존 운영을 흔들지 않는 것이었다. 그래서 유선랜 enp4s0은 기존 웹서버 경로로 유지하고, USB 무선랜 wlx90de80320457만 웹캠 중계 전용 경로로 고정했다. 무선 USB 랜카드는 별도 연결 이름 NETCITY.co.kr USB로 등록했고, 기본 라우팅은 유선랜이 우선하도록 유지했다. 이렇게 해두면 웹서버의 공개 동작은 메인 서버가 계속 맡고, 무선 중계 경로는 카메라 중계와 상태 확인용으로 사용할 수 있다.

역할 장치 주소 운영 목적
본 서버 enp4s0 MAIN WEB 기존 웹서버와 공개 HTTPS 프록시 유지
무선 중계 주소 wlx90de80320457 WEBCAM RELAY USB 무선랜 기반 영상 중계와 상태 점검
캠코더 입력 /dev/video0 localhost:8088 uStreamer MJPEG 영상 소스

캠코더는 uStreamer로 바로 중계했다

캠코더 영상은 가볍게 운영하기 위해 uStreamer로 받았다. 현재 서비스 이름은 gd-c100-ustreamer.service이고, 재부팅 뒤에도 살아나도록 systemd에 등록했다. 설정은 /dev/video0 입력, 640x480 해상도, YUYV 포맷, 30fps 목표, JPEG 품질 90으로 맞췄다.

/usr/bin/ustreamer \
  --device=/dev/video0 \
  --host=0.0.0.0 \
  --port=8088 \
  --resolution=640x480 \
  --format=YUYV \
  --desired-fps=30 \
  --quality=90

현재 상태 API는 정상으로 응답한다. 소스는 온라인이고, 캡처 해상도는 640x480이다. 실시간 스트림은 웹캠 중계 경로에서 나오며, 외부에서는 Nginx가 이를 /relay-server-2/live-stream/으로 프록시한다.

USB 캠코더에서 직접 받아온 640x480 실시간 캡처 이미지
실시간 캡처uStreamer의 snapshot 경로에서 직접 받아온 640x480 프레임. 현재 조명 상태 때문에 어둡게 보이지만, USB 캠코더 입력과 MJPEG 서버가 정상 동작하는 검수 이미지다.

공개 주소는 443 하나로 정리했다

내부에서는 8088 포트를 쓰지만, 외부 사용자가 직접 내부 포트를 알 필요는 없다. 공개 접속은 relay-server-2 아래로 통일했다. 라이브 화면은 live-stream, 상태 확인은 live-state, 운영 화면은 OBS 제어와 유튜브 웹캠 라이브 페이지로 이어진다.

이 방식의 장점은 명확하다. 장치와 포트는 내부에서 바뀔 수 있지만, 외부 링크는 계속 같은 주소를 유지한다. 또한 HTTPS 인증서와 도메인 관리는 본 서버 Nginx가 맡기 때문에, 작은 USB 장치 기반 중계라도 공개 서비스의 모양은 안정적으로 가져갈 수 있다.

이번 구축에서 얻은 결론

USB 허브에 꽂힌 작은 무선랜카드와 캠코더도 역할을 잘 나누면 서버 장비가 된다. 유선랜은 본 서버의 안정적인 기본 경로로 두고, 무선 USB 랜카드는 웹캠 전용 중계 경로로 묶었다. 캠코더는 UVC 장치로 받아 uStreamer가 MJPEG로 만들고, 공개는 Nginx가 443 경로로 정리했다.

이제 웹캠 중계 경로는 단순한 예전 작업 폴더 이름이 아니라, 무선 USB 랜카드와 캠코더가 붙은 실제 영상 중계 주소가 됐다. 메인 서버는 기존 웹 운영을 계속 맡고, 무선 중계 경로는 카메라, OBS, 유튜브 송출 실험을 받아내는 작은 방송 입력 노드로 움직인다. 이번 작업은 스마트폰 서버와 USB 장치 서버를 함께 굴리기 위한 다음 단계의 기반이기도 하다.

Article 83 merged

PC 한 대로 웹서버와 OBS 방송을 동시에 돌리다

OBS Studio로 웹서버 화면과 방송 장면을 구성한 화면
OBS 방송 콘솔웹서버 화면, USB 캠코더, 자막, 특수 효과, PC 오디오를 한 장면 안에서 합성한 NETCITY OBS 운용 기록입니다.

[NETCITY NEWS] 이번 이용기는 OBS Studio를 단순한 화면 캡처 프로그램이 아니라, PC 한 대에서 웹서버와 웹방송을 동시에 운영하는 작은 방송 콘솔로 쓰는 과정이다. 유선 네트워크는 기존 웹서버 운영에 두고, 저가 USB 무선 장치는 방송·카메라·중계 실험 쪽으로 분리했다. 사용자가 말한 핵심 문장은 그대로다. “PC 한 대로 유선은 웹서버, 3000원짜리 USB 무선공유기는 웹방송으로 쓰고 있습니다.”

현재 구성은 꽤 단순하지만 역할은 분명하다. 본 서버는 https://netcity.co.kr/와 관련 사이트를 계속 제공하고, OBS는 그 화면을 브라우저 소스로 받아 유튜브 라이브로 송출한다. 여기에 USB 캠코더는 PIP 화면으로, 하단 자막은 브라우저 오버레이로, PC에서 재생되는 사운드는 데스크톱 오디오 캡처로 묶었다.

OBS 방송 콘솔과 웹서버 중계 구성을 보여주는 추가 캡처 화면
추가 구성 화면웹서버, USB 무선 중계, OBS 장면 운영 흐름을 한 화면에서 확인한 추가 캡처입니다. 사진=NETCITY OBS 구축 기록

PC 한 대를 두 역할로 나눴다

이 방식의 핵심은 “기존 서버 운영을 건드리지 않는 것”이다. 유선랜은 웹서버의 안정적인 기본 경로로 유지하고, USB 무선 장치는 방송 실험과 보조 네트워크 역할로 사용한다. 방송 쪽에서는 OBS가 화면 합성과 유튜브 송출을 맡는다. 웹페이지, 캠코더, 자막, 특수 효과, PC 사운드가 모두 OBS 장면 안에서 합쳐진다.

구성 역할 현재 적용
유선 네트워크 웹서버 운영 netcity.co.kr 메인과 하위 사이트 유지
USB 무선 장치 방송·중계 보조 웹캠 중계 작업 폴더와 방송 구성 연결
OBS Studio 화면 합성·송출 웹페이지, 웹캠, 자막, 효과, PC 사운드 믹스
YouTube Live 외부 송출 OBS RTMPS 연결로 방송 출력

장면은 순환 방송으로 만들었다

OBS에는 NetCity Link Rotation 장면을 새로 만들었다. 이 장면은 https://netcity.co.kr/index.php의 탑 메뉴 사이트와 하단 푸터 사이트를 순서대로 보여준다. 탑 메뉴 8개와 푸터 7개, 총 15개 사이트가 20초 간격으로 바뀌며 반복된다.

TOP: HOME, 매거진, 스페이스, AI/IT, 블로그진, IS, 스트리트, 포럼
FOOTER: 올드팝, 넷무비, 우분투, 링크 디렉토리, Meet, 웹하드, 스마트팜
LOOP: 20초 간격 자동 전환

순환 제어는 별도 플러그인에 의존하지 않고, OBS WebSocket을 호출하는 로컬 스크립트로 처리했다. 현재 표시 중인 사이트, 다음 사이트, 전체 순번은 상태 파일에 저장되고, 그 값을 OBS 상단 라벨 오버레이가 1초마다 읽는다. 그래서 방송 화면을 보면 지금 어느 사이트를 보여주는지 바로 알 수 있다.

웹캠과 자막을 같이 얹었다

단순히 웹페이지 하나만 송출하면 방송 화면이 정적이다. 그래서 USB 캠코더를 GD-C100 MJPEG Relay 소스로 넣고, 우측 하단 PIP로 배치했다. 하단에는 NetCity Scrolling Ticker 자막을 넣었다. 자막에는 운영 구조, OBS 송출 상태, “유선은 웹서버·USB 무선은 웹방송”이라는 메시지가 계속 흐른다.

OBS에서 NetCity 링크 순환 장면과 웹캠 PIP, 하단 자막을 함께 송출하는 화면
OBS 송출 화면 캡처NETCITY Link Rotation 장면. 탑 메뉴와 푸터 사이트가 시간차를 두고 순환되고, 우측 하단에는 GD-C100 웹캠 PIP, 하단에는 흐르는 자막이 함께 표시된다. 사진=NETCITY OBS 캡처

오디오도 중복을 피하도록 정리했다. OBS 안에서 브라우저 소리를 다시 모니터링하면 PC 스피커와 방송 오디오가 겹칠 수 있다. 그래서 PC Desktop Audio만 방송 트랙 1로 보내고, 브라우저 소스·자막·효과·웹캠 소스의 오디오 트랙은 비활성화했다. 청취자는 PC에서 재생되는 소리를 듣지만, OBS 로컬 플레이에서 다시 울리는 에코는 만들지 않는다.

특수 효과 장면도 따로 만들었다

방송 화면에 약간의 질감을 주기 위해 Web Browser FX 장면도 따로 만들었다. 기본 웹브라우저 장면 위에 얇은 스캔라인, 대각선 빛 스윕, LIVE 프레임, 신호 상태 배지를 얹은 구조다. 실제 송출 화면을 가리지 않도록 강한 효과보다는 얇은 방송 HUD 느낌으로 맞췄다.

OBS Web Browser FX 장면에서 특수 효과 오버레이가 적용된 화면
특수 효과 장면스캔라인, 빛 스윕, 신호 상태 배지, 프레임 효과를 투명 브라우저 오버레이로 구성했다. 필요할 때 미리보기에서 바로 프로그램 장면으로 전환할 수 있다.

OBS가 방송 콘솔이 됐다

이번 구성을 통해 OBS는 단순 캡처 도구가 아니라 작은 방송 콘솔이 됐다. 웹서버 화면을 보여주고, 사이트들을 자동 순환하고, 웹캠을 PIP로 올리고, 자막과 특수 효과를 합성하고, PC에서 나는 소리를 방송 오디오로 보내는 역할을 한 장비에서 수행한다.

실제 운영에서 중요한 것은 화려한 장비보다 역할 분리다. 유선은 웹서버의 안정적인 길로 두고, USB 무선 장치는 방송과 실험의 길로 나누었다. 그 위에 OBS를 올리면, PC 한 대로도 웹서비스와 실시간 방송을 함께 굴릴 수 있다. 이번 이용기는 그 구성이 실제 화면으로 돌아가는지 확인한 기록이다.