A Windows audio player built with Python + PySide6, using portable VLC playback, a custom VPTheme engine, multi-language UI support, subtitle / lyrics support, custom UI sounds, custom .ico-based icons, a built-in File Info window, Discord Rich Presence, and an external updater with rollback support.
- Releases: https://github.com/sonicFanTech/vidplayer/releases
- Developer: https://github.com/sonicFanTech
- Update package source: https://github.com/sonicFanTech/customSetupInstallersPackageDownloads/releases
- Main feature / build log: CHANGELOG.md
- UPDATE IDEAS: UPDATE IDEAS
Current main public branch status: v2.0.9.3.1.1 Beta X64
This Beta build is the first public step forward from the unreleased Experimental branch.
Main Beta focus:
- Multi-language support
- VPTheme engine support in VidPlayer
- UI sound support
- Appearance / theme workflow improvements
- Packaged theme asset support
- Playlist / settings / updater polish
- Portable VLC-based playback engine
- Updated portable VLC runtime DLLs to VLC 3.0.23
- Custom .ico-based button and menu icon system
- Built-in File Info window with expanded media / codec details
- Full Screen Artwork mode
- Subtitle / lyrics support
- Dockable playlist mode
- Mini Mode
- External updater with rollback snapshots
- Multi-language UI support
- VPTheme custom theme support
- Custom theme fonts / icons / sounds
- UI sound support
- Appearance tab / theme workflow improvements
- Portable VLC playback path for the main player
- Double-click to play supported files
- Command-line file opening support
- Resume last file / position support
- Auto-play next track option
- Always-on-top option
- Add, remove, reorder, save, load, unload, and clear playlists
- Search / filter playlist entries
- Dockable playlist mode
- Drag-and-drop support in the main window and playlist UI
- Batch loading dialog for large imports
- Better large-playlist loading workflow
- Full Screen Artwork mode
- Embedded artwork support
- External artwork fallback support
- VPLogo placeholder support when no artwork is available
- File Info dialog with expanded media, container, codec, and artwork details
- Multi-file File Info list support when more than one track is loaded
- Auto-load sidecar subtitle / lyrics files
- Manual subtitle file loading
- Font size, bold, color, background, opacity, and position controls
- Timing offset setting
- Mini Mode-safe subtitle handling
- Multiple visualizer styles
- Adjustable FPS and size
- Custom color presets / HEX colors
- Experimental live VLC callback visualizer mode
- Built-in Light / Dark / System Default theme handling
- Custom
.vpthemesupport - Theme reload support in Settings
- Open VPThemes folder button in Settings
- Theme gradients, colors, tabs, inputs, playlist styling, progress bar styling
- Theme font support with file-based loading
- Theme icon override support
- Theme UI sound support
- Appearance settings for UI sounds and volume
- UI language files loaded from
bin\\Langu\\UI\\ - Localized docs loaded from
bin\\Langu\\Docs\\ .languJSON-based language files- Language selector in Settings
- Reload language files button in Settings
- Fallback handling when language docs or UI files are missing
- Audio CD tracks can flow through the main playlist/player path
- External Audio CD ripper tool support
- Preferred ripper executable name:
VPACDRipper.exe - Support for local helper tools in
bin\\
- External updater workflow
- Python-based updater
- Shared updater settings file in
update\\updater_settings.json - Hash-based partial update logic
- Preserve rules for local files
- Rollback snapshots with manifests
- Auto-launch support back into VidPlayer after update / rollback
- Build-channel support
- Build-type-aware update logic
.mp3.wav.ogg.flac.m4a.aac.wma
Some playback behavior can vary depending on codec support inside VLC.
A typical portable layout looks like this:
VidPlayer\\
├─ vidplayer.exe
├─ config.json
├─ recents.json
├─ artmap.json
├─ visualizer_presets.json
├─ bin\\
│ ├─ VLCLibs\\
│ │ ├─ libvlc.dll
│ │ ├─ libvlccore.dll
│ │ └─ plugins\\
│ ├─ icons\\
│ │ ├─ VPLogo.ico
│ │ ├─ buttons\\
│ │ └─ menubar\\
│ ├─ Langu\\
│ │ ├─ UI\\
│ │ └─ Docs\\
│ ├─ VPThemes\\
│ │ ├─ Default\\
│ │ │ ├─ Dark.vptheme
│ │ │ ├─ Light.vptheme
│ │ │ ├─ SystemDefault.vptheme
│ │ │ └─ Sounds\\
│ │ └─ ThemeName\\
│ │ ├─ Theme.vptheme
│ │ ├─ Sounds\\
│ │ ├─ Icons\\
│ │ └─ Fonts\\
│ ├─ ffprobe.exe
│ ├─ ffmpeg.exe
│ └─ VPACDRipper.exe
├─ update\\
│ ├─ VidPlayerUpdater.exe
│ ├─ updater_settings.json
│ ├─ CheckSum.dat
│ └─ rollbacks\\
└─ Ripped CDA\\
This section is only for running the Python source directly. If you are using a prebuilt release, you do not need Python installed.
If you want a more guided way to work with the VidPlayer source, you can use SFT pyIDE, a custom Python IDE.
Links:
- pyIDE Website: SFT pyIDE
- GitHub Repository: sonicFanTech/pyIDE
- Releases: pyIDE v1.2.0
VidPlayer is currently targeted at Python 3.13.9 x64.
pip install PySide6 pygame mutagen Pillow requests pypresence python-vlc numpy py7zrpython vidplayer.pyYou can also pass a file directly:
python vidplayer.py "D:\\Music\\song.mp3"pyinstaller --noconfirm --onefile --windowed vidplayer.pyUpdater example:
pyinstaller --noconfirm --onefile --windowed VidPlayerUpdater.py --name VidPlayerUpdaterUse the same package list and run/build steps above if you prefer plain Python + Command Prompt instead of pyIDE.
VidPlayer currently supports:
- Light theme
- Dark theme
- System default theme
- Custom VPThemes
- Mini Mode
- Dockable playlist mode
- Full Screen Artwork mode
- UI: PySide6 / Qt
- Playback: VLC via portable runtime DLLs
- Metadata: mutagen
- Artwork: Pillow
- Requests / updater: requests
- Discord integration: pypresence
- Visualizer math: numpy
- Updater extraction: py7zr with external 7-Zip fallback support
Developed by sonic Fan Tech / sonic Fan Games







