3.1 KiB
FreePassport-C Media Player
FreePassport-C Media Player is a low-dependency SDL2 + FFmpeg application inspired by the interactive program guides used on older Cisco and Scientific Atlanta Explorer cable boxes. It turns a local media library into a fullscreen-first virtual cable system with live-seeking channels, a retro guide, and broadcast-style on-screen overlays.
Features
- Live-TV epoch clock based on
time(NULL) - 200 ms black-screen channel tuning delay
- Fullscreen and guide modes
- 5-row Passport-style guide with a 90-minute timeline
- Background decoder thread with a bounded frame queue
- Automatic channel discovery from
./media - Randomized per-channel schedules on each launch
- Fullscreen channel banner, theme picker, and about panel
Layout
src/- application, UI, channel scan, and playback codemedia/- channel video filesguide-ui.jpg- visual reference used for proportions and palette
Controls
Up/Down- surf channelsTab- toggle guideEnter- tune selected channel from the guideLeft/Right- browse guide time0-9- direct channel number entryi- show current channel infoa- toggle about panelb- toggle theme pickerf- toggle fullscreenEsc- exit guide or quit the app
Build
Install development packages for SDL2, SDL2_ttf, SDL2_image, and FFmpeg headers before building.
Typical Debian or Ubuntu packages:
sudo apt install build-essential libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libavformat-dev libavcodec-dev libswscale-dev libswresample-dev libavutil-dev
Then build and run:
make
./passport-c-media-player
AppImage Build
To create a portable AppImage with the included packaging script:
make appimage
The AppImages for 0.1 are built on Debian 13 using linuxdeploy and the repository's included scripts. The build automatically detects your architecture and produces the appropriate AppImage:
- x86_64:
FreePassport-C-Media-Player-0.1-x86_64.AppImage - ARM64/aarch64:
FreePassport-C-Media-Player-0.1-aarch64.AppImage
Users can run it directly:
./FreePassport-C-Media-Player-0.1-x86_64.AppImage
# or on ARM devices:
./FreePassport-C-Media-Player-0.1-aarch64.AppImage
For a fully portable setup, create a media/ directory in the same folder as the AppImage and add your channel videos there. The AppImage will automatically detect and load channels from this directory.
Media
The player scans ./media for channel directories. Each subdirectory is treated as one channel, and the supported video files inside it are shuffled into a randomized schedule for that channel on each launch.
Optional metadata can be provided with description.txt inside each channel directory:
name=Reading
number=56
description=Books, documentaries, and reading-focused programming.
Example layout:
media/
reading/
description.txt
01-intro.mp4
02-feature.mp4
computers/
description.txt
01-chronicles.mp4
02-demo.mp4
Fonts
The UI tries BigBlueTermPlus Nerd Font first, then falls back to common Linux monospace fonts.