Skip to content

sonicFanTech/EveryPlay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

EveryPlay

EveryPlay is a Windows media player built with Python + PySide6 (Qt for Python) that uses VLC’s libVLC runtime (DLLs + plugins) for playback—meaning it can play almost any video/audio format that VLC supports.

It also ships with several custom-made companion tools (also written in Python) for converting, tagging, disc playback/ripping, and detailed media/codec inspection.


Highlights

  • Plays almost anything (VLC-powered)
    If VLC can play it, EveryPlay usually can too—because it uses the same libVLC engine.
  • Modern GUI (PySide6 / Qt for Python)
  • Playlist support
  • Fullscreen mode + auto-hide controls (like VLC)
  • Volume control
  • Drag & drop media files into the playlist
  • Extra Tools menu that launches bundled companion tools

Supported formats

EveryPlay relies on VLC’s codecs/demuxers, so supported formats depend on your bundled VLC runtime (bin/VLClibs) and its plugins.

That generally includes (not limited to):

  • Video containers: MP4, MKV, AVI, MOV, WEBM, MPEG/MPG, TS/M2TS, FLV, WMV, and more
  • Audio formats: MP3, WAV, FLAC, AAC, OGG, M4A, and more
  • Disc media: DVD Video and Audio CDs (via VLC)

If you’re unsure whether something is supported, test it in VLC—if VLC plays it, EveryPlay likely will too.


How EveryPlay works

EveryPlay is essentially:

  1. A PySide6 GUI application (Windows-only)
  2. Embedding libVLC (from bin/VLClibs) into a Qt video widget
  3. Controlling playback (play/pause/seek/volume/fullscreen) through python-vlc bindings
  4. Launching companion tools from the Tools menu (EXEs in bin/)

Because VLC does the heavy lifting, EveryPlay doesn’t need separate codec packs.


Folder layout (required)

EveryPlay expects this folder structure next to the main EXE:

EveryPlay/
  EveryPlay.exe
  bin/
    VLClibs/
      libvlc.dll
      libvlccore.dll
      plugins/
        ...VLC plugin folders...

    ToolResources/
      ffmpeg/
        ffmpeg.exe
        ffprobe.exe
      cdda2wav/
        cdda2wav.exe

    DiscTool.exe
    MediaInfoTool.exe
    MetadataTagEditorTool.exe
    VideoConverterTool.exe

Important notes

  • Bitness must match:
    Your EveryPlay build (Python/EXE) must match the VLC runtime bitness (64-bit with 64-bit, or 32-bit with 32-bit).
  • The Tools menu only shows the tool EXEs in the root of bin/.
    It ignores resource folders like VLClibs/ and ToolResources/.

Included custom tools

All tools are made for Windows and are designed to be dropped into the root of bin/.

1) VideoConverterTool

Purpose: Convert one file or a whole folder using FFmpeg—no command line needed.

How it works:

  • Scans a file/folder and builds a conversion queue
  • Runs ffmpeg.exe to convert (or remux) each item
  • Supports common output profiles (examples):
    • MP4 (H.264 + AAC)
    • MKV (H.265 + AAC)
    • WEBM (VP9 + Opus)
    • MP3 / WAV (audio-only)
    • Copy streams (fast remux)

Uses:

  • ToolResources/ffmpeg/ffmpeg.exe
  • ToolResources/ffmpeg/ffprobe.exe (duration/progress help)

2) MetadataTagEditorTool

Purpose: View & edit tags (title/artist/album/year/genre/comment) and optionally embed cover art for supported audio formats.

How it works:

  • Reads tags using ffprobe
  • Writes tags by doing a fast remux with ffmpeg (-c copy) and metadata fields
  • Can embed cover art for common audio formats (depends on container support)

Uses:

  • ToolResources/ffmpeg/ffmpeg.exe
  • ToolResources/ffmpeg/ffprobe.exe

3) DiscTool

Purpose: One tool with two modes:

Mode 1: Playback

  • Plays DVD Video and Audio CDs using VLC’s libVLC runtime.
  • Includes volume control (0–200% like VLC) and keyboard volume adjustment.

Uses:

  • bin/VLClibs/ (libVLC DLLs + plugins)

Mode 2: Ripping

  • Audio CD ripping using cdda2wav.exe
    • Produces WAV tracks, then (optionally) converts via ffmpeg to MP3/FLAC
  • DVD mode (best-effort)
    • Copies VIDEO_TS if the disc is readable/unprotected
    • Optional “best-effort” conversion of a VOB file to MP4

Uses:

  • ToolResources/cdda2wav/cdda2wav.exe
  • ToolResources/ffmpeg/ffmpeg.exe
  • bin/VLClibs/ (for playback mode)

Note: DVD ripping can be limited by disc encryption/protection. This tool only performs basic copy/convert workflows.


4) MediaInfoTool

Purpose: Show detailed information about a loaded media file, including container details, stream list, and codecs.

How it works:

  • Runs ffprobe on the selected file
  • Displays:
    • Container + duration + bitrate
    • Per-stream codec name/long name
    • Video resolution/FPS/pixel format
    • Audio sample rate/channels/bitrate
    • Subtitle language (if present)
  • Also shows raw JSON output for deep inspection

Uses:

  • ToolResources/ffmpeg/ffprobe.exe

Tools / libraries used (everything)

EveryPlay (main player)

  • Python 3.x (Windows)
  • PySide6 (Qt for Python GUI)
  • python-vlc (libVLC bindings)
  • VLC libVLC runtime (DLLs + plugins in bin/VLClibs/)

VideoConverterTool

  • PySide6 (GUI)
  • FFmpeg (ffmpeg.exe + ffprobe.exe)

MetadataTagEditorTool

  • PySide6 (GUI)
  • FFmpeg (ffmpeg.exe + ffprobe.exe)

DiscTool

  • PySide6 (GUI)
  • VLC libVLC runtime (playback)
  • cdda2wav.exe (Audio CD ripping)
  • FFmpeg (ffmpeg.exe) (format conversion)
  • (optional) ffprobe if you expand features later

MediaInfoTool

  • PySide6 (GUI)
  • FFmpeg (ffprobe.exe)

Build from source

Requirements

  • Windows 10/11
  • Python 3.x
  • pip packages:
    pip install PySide6 python-vlc

Runtime files you must provide

  • Copy VLC runtime files into:
    • bin/VLClibs/libvlc.dll
    • bin/VLClibs/libvlccore.dll
    • bin/VLClibs/plugins/ (entire plugins folder)
  • Copy tool resources into:
    • bin/ToolResources/ffmpeg/ffmpeg.exe
    • bin/ToolResources/ffmpeg/ffprobe.exe
    • bin/ToolResources/cdda2wav/cdda2wav.exe

Running from source

From your project folder:

python EveryPlay.py

(Or whatever your main script is named.)

Compiling (example: PyInstaller)

You can compile each tool and the main player with PyInstaller. A basic example:

pyinstaller --noconsole --onefile EveryPlay.py
pyinstaller --noconsole --onefile bin/VideoConverterTool.py
pyinstaller --noconsole --onefile bin/MetadataTagEditorTool.py
pyinstaller --noconsole --onefile bin/DiscTool.py
pyinstaller --noconsole --onefile bin/MediaInfoTool.py

After compiling, ensure your release folder still contains:

  • bin/VLClibs/ (VLC runtime + plugins)
  • bin/ToolResources/ (ffmpeg/ffprobe/cdda2wav)
  • the tool EXEs in bin/

Tip: If you don’t want “onefile” mode, remove --onefile and ship the generated folder instead.


Troubleshooting

  • Black screen / no playback
    • Your VLC plugins folder may be missing or in the wrong place.
    • Make sure bin/VLClibs/plugins/ exists and contains VLC plugin subfolders.
  • Tool doesn’t start
    • Make sure tool EXEs are directly in bin/ (not inside subfolders).
  • FFmpeg features not working
    • Confirm ffmpeg.exe and ffprobe.exe are in bin/ToolResources/ffmpeg/
  • Audio CD ripping fails
    • Some cdda2wav builds require different device arguments depending on hardware.
    • Try another cdda2wav build if your drive isn’t detected correctly.
  • 32-bit / 64-bit mismatch
    • Everything must match (EveryPlay EXE + VLC runtime + tools).

Credits / licenses (important)

EveryPlay is built on top of several third-party projects:

  • VLC / libVLC (VideoLAN) — required for playback
  • FFmpeg — required for convert + tag + media info tools
  • cdda2wav — required for Audio CD ripping

Each of these has its own license/terms. When redistributing EveryPlay with these components, make sure you include the required license texts and comply with their redistribution rules.


Name

EveryPlay = because it can play almost every video/audio format (thanks to VLC).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published