8 puntos por GN⁺ 1 일 전 | 2 comentarios | Compartir por WhatsApp
  • Castor es una herramienta de terminal que encuentra el flujo de video real desde una página web o una URL directa de stream, lo convierte para la TV y lo transmite en tiempo real con la calidad original, sin duplicación de pantalla
  • Observa el tráfico de red con Chrome en modo headless y Chrome DevTools Protocol, y extrae el stream pasando por clic en la página, entrada al iframe más grande y un nuevo clic, pero puede no funcionar en páginas que no permiten reproducción automática
  • Puede usarse con Smart TVs compatibles con DLNA/UPnP y con Kodi, VLC y Plex; el soporte para Chromecast está implementado, pero sigue siendo experimental y no ha sido probado
  • Los videos H.264 reproducibles se envían sin recodificación y, si hace falta, se convierten con un codificador por hardware o libx264; también puede insertar en el video subtítulos generados con whisper
  • No ofrece videos, catálogos ni fuentes ni evade DRM; está diseñado para transmitir solo páginas y streams que el usuario indique directamente y para los que tenga autorización de uso

Transmitir video web como stream real

  • Castor transmite el stream de video real con calidad completa, como alternativa a las Smart TVs que no pueden enviar video web directamente y al screen mirroring con latencia y pérdida de resolución
  • Si ingresas una página web o una URL directa de stream, busca el video, extrae el stream y lo transcodifica para la TV para transmitirlo en tiempo real
  • Puede consultar IDs de IMDB/TMDB desde fuentes configuradas por el usuario o insertar en el video subtítulos generados automáticamente
  • Al ejecutar castor cast, puedes explorar títulos y transmitirlos desde un navegador interactivo basado en terminal

Cómo extrae el stream y sus límites

  • Ejecuta Chrome en modo headless y observa el tráfico de red con Chrome DevTools Protocol para encontrar el stream
  • Realiza un pequeño pipeline de acciones para iniciar la reproducción
    • Clic en la página
    • Ir al iframe más grande
    • Volver a hacer clic como acción alternativa
  • Funciona en páginas que permiten reproducción automática, pero no es compatible con todos los sitios

Requisitos de instalación y ejecución

  • La forma recomendada es usar un binario nativo que se ejecute en la misma red que la TV
  • En el PATH del entorno de ejecución se necesitan estas herramientas
    • Chrome o Chromium: extracción de stream en modo headless
    • ffmpeg: transcodificación
    • ffprobe: detección del formato multimedia
  • En macOS puede instalarse con Homebrew
brew install --cask stupside/tap/castor
  • Para compilar desde el código fuente se necesitan Go 1.26+ y CMake
    • El binding de whisper.cpp usa cgo y se enlaza con libwhisper.a compilado localmente
    • Como requiere replace local y bibliotecas estáticas precompiladas, go install no funciona
git clone --recurse-submodules https://github.com/stupside/castor.git
cd castor
make

Flujo básico de uso

  • Usa castor scan para encontrar el nombre de la TV y especifica en config.yaml el nombre exacto y el tipo de dispositivo en device
device:
  name: "Living Room TV"
  type: dlna
  • Una página web o una URL directa de stream se transmite con cast player
castor cast player https://example.com/watch/some-video
  • La búsqueda interactiva de títulos requiere una clave API de TMDB y fuentes configuradas por el usuario; los comandos completos y las flags pueden consultarse con castor --help

Configuración y fuentes aportadas por el usuario

  • config.yaml se lee desde el directorio actual o desde la ruta indicada con --config, y el único elemento obligatorio es la configuración del dispositivo de destino
  • Hay valores predeterminados para tiempos límite, navegación, captura, transcodificación, interfaz de red y navegación de Chrome
  • Los valores secretos pueden sobrescribirse con config.local.yaml, excluido de Git, o definirse como variables de entorno con el formato CASTOR_SECTION__FIELD
  • cast movie, cast episode y el navegador interactivo insertan el ID del título en las fuentes configuradas por el usuario
    • Castor no incluye por sí mismo fuentes, catálogos ni funciones de consulta
    • Inserta el ID en templates escritos por el usuario, abre la página anteponiendo cada uno de los proxies y luego extrae el stream del mismo modo que cast player
    • Si hay varios proxies, se prueban en el orden especificado
sources:
  - proxies: ["https://your-source.example";]
    templates:
      movie: "/embed/movie/{itemID}"
      episode: "/embed/tv/{itemID}/{season}-{episode}"

Búsqueda en TMDB y subtítulos automáticos

  • El navegador interactivo usa una clave API de TMDB para buscar títulos
    • La clave puede obtenerse en themoviedb.org
    • Los comandos directos como cast movie <id> no requieren clave de TMDB
  • Los subtítulos automáticos transcriben el audio con whisper y los insertan en el video; están desactivados por defecto
    • El idioma predeterminado es inglés
    • El modelo predeterminado es ggml-tiny.en, de unos 75 MB, y se descarga automáticamente

Dispositivos compatibles

  • Es compatible con TVs que implementan el perfil DLNA/UPnP MediaRenderer:1
    • Samsung ha sido probado, y LG, Sony Bravia, Panasonic Viera, Philips, Hisense, TCL, VIZIO y Sharp figuran entre los equipos compatibles
    • También pueden usarse reproductores de red como Kodi, VLC y Plex
  • Usa castor scan para consultar dispositivos en la misma red
  • El soporte para Chromecast está implementado, pero es experimental y no ha sido probado

Restricciones de Docker y configuración de red

  • La imagen Docker solo para Linux incluye Chrome, ffmpeg y ffprobe
  • En Docker se necesita un host Linux en la misma LAN que la TV, y debe usarse --network host para el descubrimiento multicast SSDP y la conexión con el servidor de reproducción de Castor
  • En Docker Desktop para macOS y Windows, --network host no se conecta a la LAN
    • El contenedor queda ubicado en la subred de la VM interna de Docker Desktop, por lo que scan no encuentra dispositivos y la transmisión también falla
    • En macOS y Windows debe usarse el binario nativo o hacer bridge de una VM Linux hacia la LAN
  • Puedes montar /config.yaml para proporcionar la configuración y conservar en un volumen el modelo de whisper descargado automáticamente
  • Si usas una etiqueta de release en vez de latest, puedes fijar la versión

Passthrough multimedia y codificación

  • Si la TV ya puede reproducir video H.264 con el perfil y nivel permitidos, usa copiado de stream para reducir el uso de CPU casi a cero
  • Si la TV rechaza el códec o hay que incrustar subtítulos, vuelve a codificar
    • Da prioridad a codificadores H.264 por hardware que realmente funcionen, como VA-API en Linux o VideoToolbox en binarios nativos de macOS
    • Si no hay uno disponible, usa libx264 por software
  • Para usar VA-API de una GPU Intel dentro de un contenedor Docker se necesita --device /dev/dri; --network host por sí solo no expone la GPU

Uso y limitaciones

  • Castor no es un servicio vinculado a un sitio específico, sino una herramienta de transmisión de propósito general
  • No aloja ni incluye videos, catálogos ni fuentes; solo procesa páginas, streams y fuentes que el usuario indique y para los que tenga autorización de uso
  • No descifra ni evade DRM, y no puede transmitir servicios protegidos con DRM
  • La responsabilidad de cumplir los términos de uso del sitio y las leyes locales recae en el usuario, y se ofrece tal cual para usos personales y educativos legítimos

2 comentarios

 
xguru 1 일 전

Vaya, y el enlace de abajo en los comentarios, https://tvexplorer.live/channel/EBS1TV.kr.SD/country/KR, está súper práctico. jaja
Parece que en Corea está bloqueado, ¿pero en el extranjero se podrá ver de inmediato?

 
GN⁺ 1 일 전
Comentarios de Hacker News
  • Hicieron TV Explorer, que reproduce directamente en el navegador los streams HLS publicados por los propios canales, sin rodeos adicionales. Usa una lista pública de GitHub con más de 10 mil canales gratuitos
    https://tvexplorer.live

    • Es sorprendentemente fluido y liviano, responde casi al instante y el botón de volver también funciona bien. El popup de subtítulos se superpone con algunos elementos de la pantalla, pero incluso en una desktop común el cambio de canal es tan rápido como cambiar canales en la época de la TV analógica NTSC
      Me pregunto qué hacen otros servicios de TV que aquí no hacen
    • Sobre todo en canales japoneses, parece que https://tv.garden/ tiene más canales
    • Carga muy rápido también en móvil y permite ver canales de todo el mundo, así que merece una publicación aparte
    • Ojalá saliera como plugin de Jellyfin
    • Parece el sitio de IPTV más pulido que he visto hasta ahora
  • Es absurdo que un bot tenga que lanzar un navegador headless con un perfil nuevo cada vez. Cloudflare no logra bloquear bots y solo hace que ambos lados desperdicien recursos, además de prácticamente entregarle a la NSA los registros de acceso y las contraseñas; dan ganas de volver al viejo internet

  • Dicen que “lo hicieron porque no tenían Chromecast ni AirPlay para enviar video web de la laptop a la TV”, pero parece hecho por Claude

    • Sí recibieron ayuda de Claude y no son expertos en DLNA ni FFMPEG, pero lo importante es que resolvieron un problema que tenían. Mejor aún si también resuelve el de otros
    • También se podría decir que un compilador está hecho con librerías de Google y otras empresas. Hasta que Claude produzca directamente código máquina listo para distribuir, no es más que otra capa intermedia entre la intención humana y el resultado final
  • Entendía que la clave de Turnstile era detectar navegadores headless para que fuera difícil evadirlo, así que me cuesta creer que de verdad se pueda pasar solo imitando el clic en la marca de verificación

    • Turnstile se parece más a una herramienta que vende una vaga sensación de seguridad a los operadores de sitios, bloquea a usuarios de Tor con JavaScript desactivado y los lleva a entregar una copia de todo su tráfico a Cloudflare
      Parece importar más esa falsa seguridad, que Cloudflare usa en marketing con la cantidad de usuarios bloqueados sin distinguir entre personas y bots, que la seguridad real
    • Si se imitan los eventos correctos, sin detección a nivel de plataforma es difícil distinguir entre un navegador headless y uno real. Aun así, no es difícil detectar el renderizador por software de Linux, así que si estas evasiones continúan, podrían terminar forzando una o más verificaciones extra a los usuarios de Linux
      La casilla es solo una parte; antes de eso observan todo el comportamiento del navegador y su respuesta a los eventos para decidir si exigir verificación adicional según la probabilidad de que sea un bot
    • No solo imita el clic en la casilla; también falsifica varias propiedades del navegador. Con un navegador headless común sería muy probable que lo detecten
    • Aunque exista una defensa de millones de dólares, la gente ha automatizado WoW durante años pegando periféricos con cinta a un ventilador vibrando. La automatización con navegadores headless es como las trampas en FPS: el atacante lleva la iniciativa, y si tiene suficiente tiempo y dinero, al final puede ganar
    • Si puedes hacer un navegador que pase todas las demás comprobaciones en segundo plano, lo único que queda al final es hacer clic en la marca de verificación
  • Normalmente las herramientas de piratería al menos dejan cierta negación plausible, pero aquí presumen que te ayudan a streamear hasta un blockbuster de 250 millones de dólares que se estrena este fin de semana

    • Pensé que la estructura era buscar una película en las fuentes configuradas y devolver “no encontrada” si no estaba. Stremio también es una app legal, pero si le agregas el plugin ilegal Torrentio puedes piratear medios automáticamente, así que el desarrollo principal puede hacerse públicamente
      Azahar, el emulador, y Azahar Plus, su fork ilegal que descifra juegos automáticamente, son parecidos; pero al revisarlo de nuevo, este proyecto lleva sitios de streaming ilegal integrados
    • La interfaz muestra las películas populares del momento de https://www.themoviedb.org/
    • Al principio parecía una herramienta para enviar a la TV videos de sitios web a los que ya puedes acceder desde la laptop. Pero la explicación tipo texto generado por IA sobre “sitios web aleatorios” y la opción de una API key de TVDB hacen que no quede claro cuál es el enfoque real
    • Puede que no reproduzca la película real, sino solo el tráiler
  • Funcionó al instante en una TV Samsung común de hace más de 15 años. Me pregunto si lo mejor es escribir una función de búsqueda propia que analice todas las páginas JSON como https://vsembed.ru/movies/latest/page-1.json

  • A la explicación le falta contexto, así que cuesta saber para qué sirve la herramienta o si es para piratería

    • Es una herramienta de línea de comandos que, al elegir una película, busca un video coincidente en sitios de streaming, lo transcodifica, le pone subtítulos en tiempo real y luego le indica a la TV que lo reproduzca
    • Solo reproduce streams a los que ya se puede acceder y no rompe cifrados, así que no está claro cómo ayudaría eso a la piratería
    • Es un método alternativo de casting que extrae video en streaming de sitios web o servicios y lo envía a la TV
    • Los grandes servicios existentes ya soportan casting, así que uno se pregunta si el uso real al final será para cosas como streams ilegales de deportes
  • Requiere casi el mismo esfuerzo que usar torrents, así que no veo por qué usarlo

  • En la versión de Docker para macOS, puede que no encuentre la TV

    • Para usar UPnP en macOS pasando por la máquina virtual que necesita Docker, probablemente haya que configurar esa red relacionada para exponerla hacia afuera
  • La parte de “ejecuta Chrome headless ocultando la automatización con huellas aleatorias y scripts stealth” me hizo perder la confianza

    • Trabajo en el área de browser fingerprinting y, al revisar el repositorio, parece que solo modifica navigator, la API de Audio y la API de Canvas. Es un nivel muy básico, así que es muy probable que se detecte fácilmente