Compare commits

..

No commits in common. "main" and "0.1" have entirely different histories.

View file

@ -1,6 +1,6 @@
# FreePassport-C Media Player # 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. FreePassport-C Media Player is a low-dependency SDL2 + FFmpeg application that is based on the look of interactive programming guide software used on older Cisco/Scientific Atlanta Explorer cable boxes, it allows you to organize your media into a virtual cable guide with live-seeking channels.
## Features ## Features
@ -10,8 +10,6 @@ FreePassport-C Media Player is a low-dependency SDL2 + FFmpeg application inspir
- 5-row Passport-style guide with a 90-minute timeline - 5-row Passport-style guide with a 90-minute timeline
- Background decoder thread with a bounded frame queue - Background decoder thread with a bounded frame queue
- Automatic channel discovery from `./media` - Automatic channel discovery from `./media`
- Randomized per-channel schedules on each launch
- Fullscreen channel banner, theme picker, and about panel
## Layout ## Layout
@ -23,23 +21,17 @@ FreePassport-C Media Player is a low-dependency SDL2 + FFmpeg application inspir
- `Up` / `Down` - surf channels - `Up` / `Down` - surf channels
- `Tab` - toggle guide - `Tab` - toggle guide
- `Enter` - tune selected channel from the guide
- `Left` / `Right` - browse guide time
- `0-9` - direct channel number entry
- `i` - show current channel info - `i` - show current channel info
- `a` - toggle about panel
- `b` - toggle theme picker
- `f` - toggle fullscreen
- `Esc` - exit guide or quit the app - `Esc` - exit guide or quit the app
## Build ## Build
Install development packages for SDL2, SDL2_ttf, SDL2_image, and FFmpeg headers before building. Install development packages for SDL2, SDL2_ttf, and FFmpeg headers before building.
Typical Debian or Ubuntu packages: Typical Debian or Ubuntu packages:
```bash ```bash
sudo apt install build-essential libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libavformat-dev libavcodec-dev libswscale-dev libswresample-dev libavutil-dev sudo apt install build-essential libsdl2-dev libsdl2-ttf-dev libavformat-dev libavcodec-dev libswscale-dev libswresample-dev libavutil-dev
``` ```
Then build and run: Then build and run:
@ -51,30 +43,30 @@ make
## AppImage Build ## AppImage Build
To create a portable AppImage with the included packaging script: To create a portable AppImage that can run on any Linux distribution:
```bash ```bash
make appimage 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: This creates a self-contained executable that includes all dependencies. The script automatically detects your architecture and produces the appropriate AppImage:
- **x86_64**: `FreePassport-C-Media-Player-0.1-x86_64.AppImage` - **x86_64**: `Passport-C-Media-Player-0.1-x86_64.AppImage`
- **ARM64/aarch64**: `FreePassport-C-Media-Player-0.1-aarch64.AppImage` - **ARM64/aarch64**: `Passport-C-Media-Player-0.1-aarch64.AppImage`
Users can run it directly: Users can run it directly:
```bash ```bash
./FreePassport-C-Media-Player-0.1-x86_64.AppImage ./Passport-C-Media-Player-0.1-x86_64.AppImage
# or on ARM devices: # or on ARM devices:
./FreePassport-C-Media-Player-0.1-aarch64.AppImage ./Passport-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. 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 ## 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. The player scans `./media` for channel directories. Each subdirectory is treated as one channel, and the supported video files inside it are played in alphabetical order as that channel's schedule.
Optional metadata can be provided with `description.txt` inside each channel directory: Optional metadata can be provided with `description.txt` inside each channel directory: