BCK Player
A cross-platform CLI media player interface for VLC with a clean, minimalistic TUI (Text User Interface).
Features
- Cross-platform support: Works on Windows, Linux, and macOS
- VLC integration: Uses VLC media player for reliable media playback with full runtime control
- YouTube support: Direct YouTube URL playback with caching (requires yt-dlp)
- Multiple media sources: Supports local files, URLs, and YouTube videos
- Intelligent caching: YouTube videos are cached locally for faster subsequent playback
- Clean TUI interface: Minimalistic terminal interface with essential controls
- Full playback control: Real-time volume, speed, seeking, and fullscreen control
- Media loading: Simple media file and URL loading
- Keyboard shortcuts: Intuitive keyboard controls for all media functions
Prerequisites
Before using BCK Player, you need to install:
-
VLC Media Player (including development libraries) - The media player engine
- Windows:
- Download VLC from videolan.org
- For development: Download "VLC media player" installer that includes development files
- Or install via Chocolatey:
choco install vlc - Ensure VLC is in your system PATH
- Linux:
- Ubuntu/Debian:
sudo apt install vlc libvlc-dev - Arch:
sudo pacman -S vlc - Fedora:
sudo dnf install vlc vlc-devel
- Ubuntu/Debian:
- macOS:
brew install --cask vlc
- Windows:
-
yt-dlp (optional, for YouTube support)
- Windows: Download from yt-dlp releases or
pip install yt-dlp - Linux:
sudo apt install yt-dlporpip install yt-dlp - macOS:
brew install yt-dlporpip install yt-dlp
- Windows: Download from yt-dlp releases or
-
Rust (for building from source)
- Install from rustup.rs
Installation
From Source
The binary will be available at target/release/bckplayer (or bckplayer.exe on Windows).
Add to PATH
Copy the binary to a directory in your PATH or add the target/release directory to your PATH.
Usage
Basic Usage
# Launch BCK Player
# Play a local file
# Play a URL
# Play a YouTube video (requires yt-dlp)
# Start with specific volume and speed
# Start in windowed mode
Command Line Options
Usage: bckplayer [OPTIONS] [MEDIA]
Arguments:
[MEDIA] Media source to play (file path or URL)
Options:
-w, --windowed Start in windowed mode instead of fullscreen
-v, --volume <VOLUME> Set initial volume (0-100)
-m, --muted Start muted
-s, --speed <SPEED> Set playback speed [default: 1.0]
-d, --debug Enable debug logging
-h, --help Print help
-V, --version Print version
Controls
Playback Controls
- Space: Play/Pause
- S: Stop
- ←/→: Seek backward/forward
- +/-: Increase/decrease playback speed
- R: Reset speed to 1.0x
Audio Controls
- ↑/↓: Volume up/down
- M: Mute/unmute
Video Controls
- F: Toggle fullscreen
Interface Controls
- I: Input new media source (file path, URL, or YouTube URL)
- : (colon)**: Enter command mode for advanced operations
ytcache: Show YouTube cache statisticsytclear: Clear YouTube cacheytdownload <url>: Download YouTube video without playing
- H: Show/hide help
- C: Show/hide configuration
- Q: Quit application
YouTube Support
BCK Player supports direct YouTube URL playback with intelligent caching. See YOUTUBE.md for detailed information.
Quick YouTube Usage
# Play a YouTube video directly
# Configure YouTube settings
Interface
The TUI consists of several sections:
- Title Bar: Application name and version
- Media Info: Current file, title, and playback state
- Controls: Quick reference for keyboard shortcuts
- Volume: Volume level gauge with mute indicator
- Progress: Playback position, duration, and speed
- Status: Current status and input area
VLC Integration
BCK Player uses the VLC media player engine through the vlc-rs crate, providing full runtime control over media playback. Unlike FFplay-based solutions, VLC offers:
- Real-time control: All playback functions work during media playback
- Comprehensive format support: Extensive codec and format compatibility
- Advanced features: Hardware acceleration, subtitle support, and audio effects
- Stable API: Mature and well-documented media player framework
Configuration
BCK Player creates a configuration file at:
- Windows:
%APPDATA%\bckplayer\config.json - Linux:
~/.config/bckplayer/config.json - macOS:
~/Library/Application Support/bckplayer/config.json
Configuration Options
Supported Media Formats
BCK Player supports all media formats that VLC can handle, including:
- Video: MP4, MKV, AVI, MOV, WebM, FLV, WMV, MPEG, and many more
- Audio: MP3, FLAC, OGG, WAV, AAC, WMA, and many more
- Streaming: HTTP/HTTPS URLs, M3U8 playlists, RTSP, and more
- Subtitles: SRT, ASS, VTT, and embedded subtitles
Troubleshooting
Common Issues
-
"ffplay not found"
- Ensure FFmpeg is installed and ffplay is available in PATH
- Use
--ffplay-pathto specify custom ffplay location
-
Audio/Video playback issues
- Check FFmpeg installation and codec support
- Try playing the file directly with ffplay to isolate issues
-
TUI display issues
- Ensure terminal supports Unicode and colors
- Try resizing the terminal window
- Use a different terminal emulator if issues persist
Debug Mode
Enable debug logging with the -d flag:
Platform-Specific Notes
Windows
- Use PowerShell or Command Prompt
- Windows Terminal recommended for best TUI experience
Linux
- Most terminal emulators supported
- X11 and Wayland compatibility
macOS
- Terminal.app and iTerm2 supported
- Requires macOS 10.14+ for best experience
Contributing
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
Development
# Clone and build
# Run tests
# Run with debug logging
RUST_LOG=debug
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- FFmpeg - The excellent multimedia framework including ffplay
- ratatui - Terminal UI framework
- tokio - Async runtime
- rust_ffplay - Rust wrapper for FFplay