Operant: Motor de Medios Local para Chromium

Extensión Manifest V3 con companion nativo en Rust: captura HLS y DASH, pipelines con ffmpeg y yt-dlp, todo en tu máquina sin cuentas ni telemetría.

Chromium MV3 Rust ffmpeg yt-dlp Astro
Operant: Motor de Medios Local para Chromium

Tres capas, cada una en su sitio

Operant (planobinario/operant) nace de un límite concreto del sandbox del navegador: una extensión no puede ejecutar binarios ni tocar el disco con libertad. La respuesta son tres capas desacopladas donde cada una solo habla con su vecina. El panel lateral, JavaScript vanilla renderizado bajo demanda, lista los medios, gestiona la cola y expone la consola de ffmpeg y yt-dlp. El service worker con su motor de contenido se encarga de la interceptación: escanea el DOM (img, video, srcset, fondos CSS, lazy loading, shadow DOM) y observa la red para cazar manifiestos HLS (.m3u8) y DASH (.mpd) en el momento en que cruzan la pila. El trabajo pesado queda para el companion, operant-host.exe: un binario Rust autocontenido de 2-3 MB, sin Python ni runtime, que corre fuera del sandbox.

Captura y descarga sin fricción

La detección corre en dos planos para encontrar medios tanto si viven en el marcado como si solo cruzan la red. Cada hallazgo se reduce a lo mínimo (URL, tipo y dimensiones) y vive en memoria volátil más chrome.storage.session: muere con la sesión y nunca se escribe a disco. Las descargas usan peticiones paralelas por rangos con progreso en vivo. Los recursos protegidos contra hotlinking reciben el Referer real de la página mediante reglas efímeras de declarativeNetRequest que solo existen durante la transferencia. Varias selecciones se empaquetan en un ZIP en memoria, sin archivos temporales, y todo aterriza en ~/Downloads/Operant/.

ffmpeg a velocidad nativa

El companion se comunica por stdio con framing de 4 bytes en little-endian y mensajes JSON. El handshake sirve además de inventario: informa de qué herramientas hay instaladas y en qué versión, para que la interfaz degrade con elegancia si falta algo. El remux y la fusión de pistas nunca recodifican (-c copy con faststart): corren a velocidad de disco sin perder calidad. La compresión y el redimensionado recodifican con x264 a CRF 28, un intercambio consciente de tamaño por velocidad. Los segmentos fMP4 concatenados se validan (cajas ftyp, moov y moof) antes de escribir nada en disco, así que una captura interrumpida jamás deja un archivo corrupto.

Privacidad y verificación

Sin telemetría, sin analíticas y sin servidores intermedios. Los binarios de ffmpeg y yt-dlp se descargan bajo demanda desde sus repositorios oficiales a un directorio propio (~/Operant/bin), aislado del PATH: borrarlo y desregistrar el companion no deja rastro. En Windows el registro es un doble clic con diálogo nativo; en Linux y macOS, una orden --register. El companion solo acepta mensajes del ID de extensión registrado en el sistema.

La cobertura se verifica con Puppeteer sobre Chrome for Testing: diez casos locales deterministas que cubren galerías, lazy loading, HLS local y shadow DOM, cinco más contra sitios públicos reales, once tests unitarios del companion en Rust y una auditoría visual del panel. La web del proyecto (planobinario/operant-web, un Astro estático con CSS vanilla y fuentes auto-hospedadas, en dos idiomas) documenta el protocolo completo. Licencia GPL-3.0-or-later.