# IPTV보다 더 좋고 저렴한 Castor

> Clean Markdown view of GeekNews topic #31605. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=31605](https://news.hada.io/topic?id=31605)
- GeekNews Markdown: [https://news.hada.io/topic/31605.md](https://news.hada.io/topic/31605.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-07-20T10:04:57+09:00
- Updated: 2026-07-20T10:04:57+09:00
- Original source: [github.com/stupside](https://github.com/stupside/castor)
- Points: 8
- Comments: 2

## Topic Body

- **Castor**는 웹 페이지나 직접 스트림 URL에서 실제 영상 스트림을 찾아 TV에 맞게 변환하고, 화면 미러링 없이 원본 품질로 실시간 전송하는 터미널 도구임
- 헤드리스 Chrome과 **Chrome DevTools Protocol**로 네트워크 트래픽을 관찰하며, 페이지 클릭·최대 iframe 진입·재클릭을 거쳐 스트림을 추출하지만 자동 재생을 허용하지 않는 페이지에서는 작동하지 않을 수 있음
- **DLNA/UPnP**를 지원하는 스마트 TV와 Kodi·VLC·Plex에서 사용할 수 있고, Chromecast 지원은 구현됐지만 아직 실험적이며 테스트되지 않음
- 재생 가능한 H.264 영상은 재인코딩 없이 전달하고, 필요하면 하드웨어 인코더나 `libx264`로 변환하며 **whisper**로 생성한 자막을 영상에 삽입할 수도 있음
- 영상·카탈로그·소스를 제공하거나 DRM을 우회하지 않으며, 사용자가 직접 지정하고 이용 권한을 가진 페이지와 스트림만 전송하도록 설계됨

---

### 웹 영상을 실제 스트림으로 전송
- [Castor](https://github.com/stupside/castor)는 임의의 웹 영상을 직접 전송하지 못하는 스마트 TV와 지연·해상도 저하가 있는 화면 미러링을 대신해, **실제 영상 스트림**을 전체 품질로 전송함
- 웹 페이지 또는 직접 스트림 URL을 입력하면 영상을 탐색하고 스트림을 추출한 뒤 TV에 맞게 트랜스코딩해 실시간으로 전송함
- 사용자가 구성한 소스에서 **IMDB/TMDB ID**를 조회하거나 자동 생성 자막을 영상에 삽입할 수 있음
- `castor cast`를 실행하면 터미널 기반 대화형 브라우저에서 작품을 탐색하고 전송할 수 있음

### 스트림 추출 방식과 한계
- 헤드리스 Chrome을 실행하고 **Chrome DevTools Protocol**로 네트워크 트래픽을 관찰해 스트림을 찾음
- 재생 시작을 위해 짧은 동작 파이프라인을 수행함
  - 페이지 클릭
  - 가장 큰 iframe으로 이동
  - 대체 동작으로 다시 클릭
- 자동 재생을 허용하는 페이지에서 작동하며, 모든 사이트를 지원하지는 않음

### 설치와 실행 요건
- 권장 방식은 TV와 같은 네트워크에서 실행되는 **네이티브 바이너리**임
- 실행 환경의 `PATH`에 다음 도구가 필요함
  - Chrome 또는 Chromium: 헤드리스 스트림 추출
  - `ffmpeg`: 트랜스코딩
  - `ffprobe`: 미디어 형식 감지
- macOS에서는 Homebrew로 설치할 수 있음

```sh
brew install --cask stupside/tap/castor
```

- 소스 빌드에는 **Go 1.26+** 와 CMake가 필요함
  - whisper.cpp 바인딩이 cgo를 사용하며 로컬에서 빌드한 `libwhisper.a`에 연결됨
  - 로컬 `replace`와 사전 빌드된 정적 라이브러리가 필요하므로 `go install`은 작동하지 않음

```sh
git clone --recurse-submodules https://github.com/stupside/castor.git
cd castor
make
```

### 기본 사용 흐름
- `castor scan`으로 TV 이름을 찾고 `config.yaml`의 `device`에 정확한 이름과 장치 유형을 지정함

```yaml
device:
  name: "Living Room TV"
  type: dlna
```

- 웹 페이지나 직접 스트림 URL은 `cast player`로 전송함

```sh
castor cast player https://example.com/watch/some-video
```

- 대화형 작품 검색에는 TMDB API 키와 사용자가 구성한 소스가 필요하며, 전체 명령과 플래그는 `castor --help`에서 확인할 수 있음

### 구성과 사용자 제공 소스
- `config.yaml`은 현재 디렉터리 또는 `--config`로 지정한 경로에서 읽으며, 필수 항목은 전송 대상 **장치 설정**뿐임
- 시간 제한, 탐색, 캡처, 트랜스코딩, 네트워크 인터페이스, Chrome 탐색에는 기본값이 제공됨
- 비밀 값은 Git에서 제외한 `config.local.yaml`로 덮어쓰거나 `CASTOR_SECTION__FIELD` 형식의 환경 변수로 지정할 수 있음
- `cast movie`, `cast episode`, 대화형 브라우저는 사용자가 구성한 소스에 작품 ID를 대입함
  - Castor 자체에는 소스, 카탈로그, 조회 기능이 포함되지 않음
  - 사용자가 작성한 `templates`에 ID를 대입하고 각 `proxies`를 앞에 붙여 페이지를 연 뒤 `cast player`와 같은 방식으로 스트림을 추출함
  - 여러 프록시는 지정된 순서대로 시도함

```yaml
sources:
  - proxies: ["https://your-source.example"]
    templates:
      movie: "/embed/movie/{itemID}"
      episode: "/embed/tv/{itemID}/{season}-{episode}"
```

### TMDB 검색과 자동 자막
- 대화형 브라우저는 작품 검색에 **TMDB API 키**를 사용함
  - 키는 [themoviedb.org](https://www.themoviedb.org/settings/api)에서 받을 수 있음
  - `cast movie &lt;id&gt;` 같은 직접 명령에는 TMDB 키가 필요하지 않음
- 자동 자막은 whisper로 음성을 전사해 영상에 삽입하며 기본적으로 비활성화돼 있음
  - 기본 언어는 영어임
  - 기본 모델은 약 75MB인 `ggml-tiny.en`이며 자동 다운로드됨

### 지원 장치
- **DLNA/UPnP `MediaRenderer:1`** 프로필을 구현한 TV를 지원함
  - Samsung은 테스트됐으며 LG, Sony Bravia, Panasonic Viera, Philips, Hisense, TCL, VIZIO, Sharp가 지원 대상임
  - Kodi, VLC, Plex 같은 네트워크 플레이어도 사용할 수 있음
- `castor scan`으로 같은 네트워크의 장치를 조회함
- Chromecast 지원은 구현됐지만 **실험적이며 테스트되지 않음**

### Docker 제약과 네트워크 구성
- Linux 전용 Docker 이미지는 Chrome, `ffmpeg`, `ffprobe`를 함께 제공함
- Docker에서는 TV와 같은 LAN의 **Linux 호스트**가 필요하며, SSDP 멀티캐스트 검색과 Castor 재생 서버 연결을 위해 `--network host`를 사용해야 함
- Docker Desktop의 macOS·Windows에서는 `--network host`가 LAN으로 연결되지 않음
  - 컨테이너가 Docker Desktop 내부 VM 서브넷에 배치돼 `scan`이 장치를 찾지 못하고 전송도 실패함
  - macOS·Windows에서는 네이티브 바이너리를 사용하거나 Linux VM을 LAN에 브리지해야 함
- `/config.yaml`을 마운트해 설정을 제공하고, 볼륨에 자동 다운로드된 whisper 모델을 보존할 수 있음
- `latest` 대신 릴리스 태그를 사용하면 버전을 고정할 수 있음

### 미디어 패스스루와 인코딩
- TV가 허용하는 프로필과 레벨의 H.264 영상을 이미 재생할 수 있으면 **스트림 복사**를 사용해 CPU 사용량을 거의 0으로 낮춤
- TV가 코덱을 거부하거나 자막을 삽입해야 하면 재인코딩함
  - Linux의 VA-API 또는 네이티브 macOS 바이너리의 VideoToolbox처럼 실제로 작동하는 하드웨어 H.264 인코더를 우선 선택함
  - 사용할 수 없으면 소프트웨어 `libx264`로 대체함
- Docker 컨테이너에서 Intel GPU의 VA-API를 사용하려면 `--device /dev/dri`가 필요하며, `--network host`만으로는 GPU가 노출되지 않음

### 용도와 제한
- Castor는 특정 사이트에 연결된 서비스가 아닌 **범용 전송 도구**임
- 영상, 카탈로그, 소스를 호스팅하거나 번들로 제공하지 않으며, 사용자가 지정하고 이용 권한을 가진 페이지·스트림·소스만 처리함
- DRM을 해독하거나 우회하지 않으며 **DRM 보호 서비스**는 전송할 수 없음
- 사이트 이용약관과 현지 법률을 준수할 책임은 사용자에게 있으며, 합법적인 개인·교육 용도로 현 상태 그대로 제공됨

## Comments



### Comment 62070

- Author: xguru
- Created: 2026-07-20T10:34:52+09:00
- Points: 2

와 아래 댓글에 https://tvexplorer.live/channel/EBS1TV.kr.SD/country/KR 이거 너무 편하네요. ㅎㅎ  
한국엔 막혀있는거 같던데, 해외에서는 바로 볼수 있으려나요?  
  
그 아래 있는 tv.garden 은 일부는 유튜브로 연결해서 바로 볼수 있어서 더 좋네요 https://famelack.com/tv/kr/jvEnH2enN4Ahyj

### Comment 62067

- Author: neo
- Created: 2026-07-20T10:04:58+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=48964015) 
- 별도 우회 없이 채널이 공개한 HLS 스트림을 브라우저에서 바로 재생하는 **TV Explorer**를 만들었음. 1만 개 이상의 무료 채널이 담긴 공개 GitHub 목록을 활용함  
  [https://tvexplorer.live](<https://tvexplorer.live>)
  - 놀라울 정도로 매끄럽고 가벼우며 거의 즉시 반응하고, 뒤로 가기도 제대로 작동함. 자막 팝업이 일부 화면 요소와 겹치지만, 평범한 데스크톱에서도 아날로그 NTSC 시절 채널을 돌리던 것만큼 **채널 전환이 빠름**  
    다른 TV 서비스들이 하는 것 중 여기서는 하지 않는 게 무엇인지 궁금함
  - 특히 일본 채널을 보면 [https://tv.garden/](<https://tv.garden/>) 쪽에 **채널이 더 많은 듯함**
  - 모바일에서도 매우 빠르게 로드되고 세계 각지의 채널을 볼 수 있어 **별도 글로 소개할 만함**
  - **Jellyfin 플러그인**으로 나오면 좋겠음
  - 지금까지 본 **IPTV 사이트 중 가장 완성도가 높아 보임**

- 봇이 매번 새 프로필의 헤드리스 브라우저를 실행해야 하는 상황은 터무니없음. Cloudflare는 봇을 막지 못하면서 양쪽의 자원만 낭비시키고, **접속 기록과 비밀번호**를 NSA에 넘기는 셈이니 예전 인터넷으로 돌아가고 싶음

- “Chromecast나 AirPlay가 없어 노트북의 웹 영상을 TV로 전송하지 못해 만들었다”는 설명이지만, **Claude가 만든 것처럼 보임**
  - Claude의 도움을 받은 건 맞고 DLNA나 FFMPEG 전문가도 아니지만, 내가 겪던 문제를 해결했다는 게 중요함. 다른 사람의 문제까지 해결한다면 더 좋음
  - 컴파일러가 Google 등의 라이브러리를 이용해 만들었다고도 할 수 있음. Claude가 배포 가능한 기계어를 직접 출력하기 전까지는 인간의 의도와 최종 결과물 사이에 있는 **또 하나의 중간 계층**일 뿐임

- Turnstile의 핵심은 헤드리스 브라우저를 탐지해 우회하기 어렵게 만드는 것이라고 알았는데, 단순히 체크 표시 클릭을 흉내 내는 것만으로 정말 통과할 수 있는지 의문임
  - Turnstile은 사이트 운영자에게 막연한 보안감을 팔고, JavaScript를 끈 Tor 사용자를 차단하며, 모든 트래픽의 사본을 Cloudflare에 제공하도록 유도하는 도구에 가까움  
    실제 보안보다 Cloudflare가 사람과 봇을 가리지 않고 집계한 **차단 사용자 수**를 마케팅에 활용하는 가짜 보안이 더 중요해 보임
  - 적절한 이벤트를 흉내 내면 플랫폼 탐지 없이는 헤드리스 브라우저와 실제 브라우저를 구분하기 어려움. 다만 Linux의 소프트웨어 렌더러를 찾는 건 어렵지 않아 이런 우회가 계속되면 Linux 사용자에게 하나 이상의 추가 인증을 강제할 가능성이 있음  
    체크박스는 일부일 뿐이며, 그전까지 브라우저의 모든 동작과 이벤트 반응을 관찰해 **봇일 가능성**에 따라 추가 인증 여부를 결정함
  - 체크 클릭만 흉내 내는 게 아니라 여러 **브라우저 속성도 위조**함. 일반적인 헤드리스 브라우저라면 탐지될 가능성이 큼
  - 수백만 달러 규모의 방어 체계가 있어도 사람들은 진동하는 선풍기에 주변기기를 테이프로 붙이는 식으로 오랫동안 WoW를 자동화해 왔음. 헤드리스 브라우저 자동화도 FPS 부정행위와 같아서, **공격 측이 주도권**을 쥐고 충분한 시간과 돈을 쓰면 결국 이길 수 있음
  - 백그라운드에서 수행되는 다른 검사를 모두 통과하도록 브라우저를 만들 수 있다면, 마지막에 남는 건 **체크 표시 클릭**뿐임

- 보통 불법 복제 도구는 최소한 그럴듯한 부인 가능성을 남기는데, 여기서는 이번 주말에 개봉하는 **제작비 2억 5천만 달러짜리 대작**까지 스트리밍하도록 도와준다고 내세움
  - 설정된 소스에서 영화를 찾고 없으면 “찾을 수 없음”을 반환하는 구조라고 생각했음. Stremio도 합법적인 앱이지만 불법 Torrentio 플러그인을 추가하면 미디어를 자동으로 불법 복제할 수 있어 핵심 개발은 공개적으로 진행 가능함  
    에뮬레이터 Azahar와 게임을 자동 복호화하는 불법 포크 Azahar Plus도 비슷하지만, 다시 살펴보니 이 프로젝트는 **불법 스트리밍 사이트를 내장**하고 있음
  - 인터페이스는 [https://www.themoviedb.org/](<https://www.themoviedb.org/>)의 **현재 인기 영화**를 보여주는 것임
  - 처음에는 이미 접근 가능한 웹사이트의 영상을 노트북에서 TV로 전송하는 도구처럼 보였음. 하지만 “무작위 웹사이트”라는 AI 생성물 같은 설명과 TVDB API 키 옵션 때문에 **실제 초점이 무엇인지 혼란스러움**
  - 실제 영화가 아니라 **예고편만 재생**하는 것일 수도 있음

- 15년도 넘은 평범한 Samsung TV에서 즉시 작동했음. [https://vsembed.ru/movies/latest/page-1.json](<https://vsembed.ru/movies/latest/page-1.json>) 같은 모든 JSON 페이지를 분석하도록 **직접 검색 기능을 작성**하는 게 최선인지 궁금함

- 설명에 맥락이 부족해 무엇에 쓰는 도구인지, **불법 복제용인지** 알기 어려움
  - 영화를 선택하면 스트리밍 사이트에서 일치하는 영상을 찾아 트랜스코딩하고, 자막을 실시간으로 입힌 뒤 TV에 재생을 지시하는 **명령줄 도구**임
  - 이미 접근할 수 있는 스트림만 재생하며 암호화를 깨는 것도 아니어서, 이것이 불법 복제에 어떻게 도움이 되는지는 확실하지 않음
  - 웹사이트나 서비스에서 스트리밍 영상을 추출해 TV로 보내는 **대체 전송 방식**임
  - 기존 대형 서비스는 이미 화면 전송을 지원하니, 실제 용도는 결국 **불법 스포츠 스트림** 같은 것인지 의문임

- 토렌트를 쓰는 것과 **수고가 비슷해** 굳이 사용할 이유를 모르겠음

- macOS의 Docker 버전에서는 **TV를 찾지 못할 수 있음**
  - macOS에서 Docker에 필요한 가상 머신을 거쳐 UPnP를 사용하려면 관련 네트워크를 **외부에 노출하도록 설정**해야 할 가능성이 큼

- “무작위 지문과 스텔스 스크립트로 자동화를 숨기는 헤드리스 Chrome을 실행한다”는 부분에서 **신뢰를 잃었음**
  - 브라우저 지문 분야에서 일해 저장소를 살펴보니 `navigator`, Audio API, Canvas API만 수정하는 듯함. 매우 기본적인 수준이라 **쉽게 탐지될 가능성**이 큼
