← Engineering log
RobOS Movie Player Cinema & Subtitles AI Watchlists & Host RobOS Smart TVs

RobOS Movie Player: A 100,000-Film Cinema Stage Sharing the Exact Warm Theme, AI Host, and RobOS Smart TV Casting

RobOS Movie Player (packages/movie-player) brings the exact warm dark theater theme (#15120f, #1c1814, #26211b, #e8a33d, #f1e9dc) and multi-pane architecture of RobOS Audio Player to movies, TV series, and video collections. Every audio player feature has a direct cinema counterpart: a 16:9 HTML5 <video> stage with synchronized transport controls, live on-screen .srt / .vtt closed captions and click-to-seek dialogue transcripts, a 100,000-movie virtualized library with scene-release filename cleaning, ✦ AI Watchlists, a spoken Virtual Cinema Host powered by RobOS Voice, an open-source ffprobe / ffmpeg metadata & video-frame poster fixer, metadata-only SFTP/cloud indexing with HTTP 206 Partial Content streaming, and a dedicated Smart TVs tab & Display Output selector that casts directly to paired RobOS Smart TVs (Roku OS, Google TV / Cast, LG webOS, Samsung Tizen).

RobOS Movie Player Now Playing Cinema Stage screening Dune (2021) with Display Output selector and Cast to Smart TV button
RobOS Movie Player on the Now Playing tab: the 16:9 Cinema Stage with the header Display Output selector (Desktop (Local Cinema) or any paired RobOS Smart TV), one-click Cast to Smart TV stage button, synchronized .robos-rhap-theme transport deck, and the collapsible Now Playing dock on the right.

One warm theater design language across audio and cinema, plus native RobOS Smart TV casting. Rather than building a disconnected video player, RobOS Movie Player reuses the exact CSS custom properties, resizable split panes, virtualized table/grid primitives, and IPC bridge contract as RobOS Audio Player. Instead of audio speakers, Movie Player integrates directly with your paired RobOS Smart TVs from ~/.config/robos/tv-studio.json and LAN discovery: pick any TV in the header Display Output selector or open the Smart TVs tab to display movies on Roku OS, Google TV / Android TV, LG webOS, or Samsung Tizen displays.

RobOS Movie Player Movies (107) Library Poster Grid with real TMDB theatrical posters, ratings, and Spotlight Hero Banner
The virtualized Movies (107) theater browser with real TMDB posters, Feature Film Spotlight banner, genre filter chips, and franchise collections.
RobOS Movie Player TV Shows (48 Series, 2,641 Episodes) Show and Season Navigator with TVmaze artwork and episode synopses
The dedicated TV Shows (48 · 2641 Eps) Show & Season Navigator with official TVmaze series posters, network badges, star ratings, and per-episode synopses.
Live hardware screenshot from a 65-inch TCL Roku TV showing RobOS Cinema+ 3-row visual image-card Movies browser
RobOS Cinema+ on Roku OS (Movies Tab): live hardware capture from a 65" TCL Roku TV showing the 3-row image-card UX (Row 1 Movies/TV Shows image tabs, Hero Spotlight, Row 2 Category image cards, Row 3 theatrical poster cards).
Live hardware screenshot from a 65-inch TCL Roku TV showing RobOS Cinema+ TV Shows (48 Series) browser with official series posters
RobOS Cinema+ on Roku OS (TV Shows Tab): one D-Pad press up from Categories switches to TV Shows (48 Series) with TVmaze series posters, season/episode counts, and instant season drill-down.
RobOS Movie Player Smart TVs tab showing paired Roku OS, Google TV, LG webOS, and Samsung Tizen Smart TVs
The Smart TVs (4) tab: loads paired RobOS Smart TVs from tv-studio.json (Roku OS, Google TV / Android TV, LG webOS, Samsung Tizen) with one-click Display on TV and Open TV Library (Remote UI) casting.
AI Watchlist and Virtual Cinema Host modal in RobOS Movie Player
✦ AI Watchlist & Virtual Cinema Host: describe your movie marathon, choose a Cinema Host persona, and screen immediately.

Scene-release filename cleaning, AI Watchlists, a Virtual Cinema Host, and open-source poster extraction. Movie folders often arrive with noisy scene filenames like Blade.Runner.2049.(2017).2160p.UHD.BluRay.x265.10bit.HDR-GROUP.mkv. During background worker-thread scanning (lib/track-metadata.js), cleanMovieFilename() strips release tags while preserving the clean film title, 4-digit release year, SxxExx episode numbers, resolution badge (4K, 1080p, 720p), and video codec (HEVC, AV1, H.264). Clicking ✦ AI Watchlist (src/AiPlaylist.jsx) lets you describe a marathon or mood and optionally enable the Virtual Cinema Host (src/useVirtualDj.js), which pre-generates short spoken cinema introductions between films using RobOS Voice. Clicking ✦ AI Fix Metadata (lib/ai-metadata.js) inspects .nfo sidecars, probes video/audio streams with ffprobe, extracts a real video frame thumbnail at 10% runtime via ffmpeg (or fetches public TMDB/TVmaze artwork), and optionally runs your RobOS agent with @skill(robos:fix-media-metadata).

Fix Movie Metadata and Poster Art modal in RobOS Movie Player
✦ AI Fix Metadata & Artwork: scene filename cleaning, .nfo sidecar parsing, ffprobe stream inspection, public poster lookup, and ffmpeg frame extraction.
# Build the renderer bundle and run the 10-test Movie Player verification suite cd packages/movie-player && npm run build && npm test # Launch RobOS Movie Player and inspect via DOM Snapshot server (port 19214) npx electron packages/movie-player --no-sandbox node packages/robos-lib/snapshot-cli.js movie-player --text node packages/robos-lib/snapshot-cli.js movie-player --screenshot /tmp/movie-player.png