Castor: 실시간 웹 비디오를 스마트 TV에 캐스팅
Castor: 실시간 웹 비디오를 스마트 TV에 캐스팅
Castor는 터미널 기반 유틸리티로, Chromecast나 AirPlay 없이도 임의의 웹 비디오를 스마트 TV에 캐스팅하도록 설계되었습니다. 웹 페이지에서 원시 비디오 스트림을 추출하고, 대상 기기에 맞게 트랜스코딩한 뒤, 실시간으로 TV에 스트리밍합니다.
주요 기능 및 역량
Castor는 표준 화면 미러링이나 제한된 캐스팅 앱의 한계를 뛰어넘어 웹 콘텐츠를 텔레비전 화면으로 이동시키는 포괄적인 파이프라인을 제공합니다.
스트림 추출 및 자동화
Castor는 무작위 지문과 스텔스 스크립트를 사용한 헤드리스 Chrome 인스턴스를 활용해 봇 탐지를 우회합니다. Chrome DevTools Protocol을 통해 네트워크 트래픽을 모니터링하여 실제 비디오 스트림 URL을 캡처합니다. 스트림이 잡히도록 도구는 자동화된 액션 파이프라인을 수행합니다: 가장 큰 iframe으로 이동, Cloudflare Turnstile 챌린지 해결, 그리고 대체 수단으로 클릭 시뮬레이션.
실시간 트랜스코딩 및 캐스팅
스트림이 캡처되면 Castor는 ffmpeg와 ffprobe를 사용해 실시간으로 비디오를 트랜스코딩하여 대상 TV가 지원하는 포맷과 호환되도록 합니다. 이를 통해 화면을 미러링하는 대신 전체 화질의 비디오를 캐스팅할 수 있어, 화면 미러링에서 발생하는 해상도 저하와 지연을 피할 수 있습니다.
자막 통합
Castor는 선택적으로 자동 생성된 자막을 비디오 스트림에 삽입하는 기능을 제공합니다. 이는 whisper.cpp 바인딩과 연동되어, 약 75 MB 크기의 작은 모델을 사용해 실시간으로 캡션을 생성합니다.
지원 하드웨어 및 호환성
DLNA/UPnP 지원
Castor는 주로 DLNA/UPnP MediaRenderer:1 프로파일 장치를 위해 설계되었습니다. 이는 지난 10년간 판매된 대부분의 스마트 TV(삼성, LG, 소니 브라비아, 파나소닉 비에라, 필립스, 하이센스, TCL, VIZIO, 샤프 등)와 Kodi, VLC, Plex와 같은 네트워크 플레이어를 포함합니다.
Chromecast 지원
Chromecast 지원은 현재 구현되어 있으나 실험 단계이며 아직 검증되지 않았습니다.
설치 및 설정
네이티브 바이너리 (권장)
최적의 네트워크 탐지를 위해 네이티브 바이너리를 권장합니다. 시스템 PATH에 Chrome/Chromium, ffmpeg, ffprobe가 설치되어 있어야 합니다.
- macOS: Homebrew를 이용해
brew install --cask stupside/tap/castor로 설치합니다. - 소스에서 빌드: Go 1.26 이상과 cmake가 필요합니다. 사용자는
libwhisper.a를 먼저 빌드한 뒤 castor 바이너리를 빌드해야 합니다.
Docker 배포
Docker는 Linux 호스트에서 선택적인 대안입니다. 장치 탐지가 SSDP 멀티캐스트에 의존하므로 컨테이너를 --network host 옵션으로 실행해야 합니다.
경고: macOS와 Windows의 Docker Desktop은 LAN 탐지를 허용하는 방식으로 --network host를 지원하지 않습니다. 해당 플랫폼 사용자는 네이티브 바이너리를 사용해야 합니다.
사용법 및 설정
빠른 시작
Castor는 대상 장치와 비디오 소스를 정의하는 config.yaml 파일이 필요합니다. 최소 구성 예시는 다음과 같습니다:
device:
name: "Living Room TV"
type: dlna
sources:
- proxies: ["https://vidsrc-embed.ru"]
templates:
movie: "/embed/movie/{itemID}"
episode: "/embed/tv/{itemID}/{season}-{episode}"
캐스팅 방법
사용자는 여러 명령을 통해 콘텐츠를 캐스팅할 수 있습니다:
- 대화형 브라우저: TMDB API 키와 함께
castor cast를 실행하면 TUI(터미널 사용자 인터페이스)에서 영화와 에피소드를 검색할 수 있습니다. - 웹 페이지 캐스팅:
castor cast player <URL>은 특정 웹 페이지에서 비디오를 추출합니다. - ID 기반 캐스팅:
castor cast movie <IMDB/TMDB_ID>은 설정된 프록시를 통해 콘텐츠를 찾아 캐스팅합니다. - 직접 URL 캐스팅:
castor cast url <URL>은 원시 스트림 URL을 바로 캐스팅합니다.
커뮤니티 인사이트 및 고려 사항
Hacker News에서의 커뮤니티 토론은 도구 기능과 관련된 여러 기술적·윤리적 고려 사항을 강조했습니다:
- 봇 탐지: 일부 사용자는 Castor가 Cloudflare Turnstile을 우회하는 것이 예상보다 쉬울 수 있다고 지적했습니다. 체크마크 클릭을 시뮬레이션하는 것이 비교적 간단하다는 의견이 있었습니다.
- 법적·윤리적 사용: 도구 제작자는 Castor가 어떠한 콘텐츠도 호스팅하지 않으며 일반 목적의 캐스팅 도구임을 명시했습니다. 사용자는 도구가 가리키는 소스의 법률 및 이용 약관을 준수할 책임이 있습니다.
- 인터페이스: 일부 사용자는 터미널 기반 제어 시스템보다 TV에 최적화된 인터페이스가 더 직관적일 것이라고 제안했습니다.