Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IRPFFmpeg

Russian version

IRPFFmpeg is a desktop internet radio player for Windows. It plays network audio streams through FFmpeg, shows the current track, loads cover art, keeps playback history and can record broadcasts to MP3 320 kbit/sec or FLAC.

The project is a lightweight C++17 Win32 application: no Electron, no browser shell, with a separate launcher that prepares the FFmpeg/SDL2 DLL environment.

Watch a short IRPFFmpeg demo on YouTube.

IRPFFmpeg normal mode

Main window: playlist management, playback controls, stream status, cover art, history and spectrum visualization in the normal layout.

IRPFFmpeg parametric equalizer

Parametric equalizer: six bands with independent Gain/Q controls and a live graph of the resulting frequency response.

IRPFFmpeg compact mode

Compact mode: a small spectrum window with the current track line, previous-station button and restore-to-normal button.

IRPFFmpeg compact mode without spectrum

Spectrum-free compact mode: elapsed playback time, current track and controls in a single narrow row.

IRPFFmpeg settings window

Settings window: language selection, audio processing modules, tray behavior, cover popup and compact-mode options.

Features

  • play internet radio streams by URL;
  • work with M3U playlists;
  • add, delete, rename, save and switch stations from the interface;
  • show ICY/stream metadata and technical stream status;
  • keep user-defined station names unchanged when stream metadata is updated;
  • handle problematic streams with corrupted or unstable audio more robustly;
  • search, download and cache cover art;
  • record the current broadcast to Rec;
  • export recordings to MP3 320 kbit/sec or FLAC;
  • write metadata and cover art to recordings when available;
  • adjust volume from the dedicated arc control and tune a six-band parametric equalizer with a live summed frequency-response graph;
  • Stereo Width, Exciter, DeepBass, Speech Intelligibility Compressor, Station LUFS Normalizer, GainRider and final limiter;
  • minimize to the system tray;
  • compact mode with spectrum visualization, elapsed playback time, current track text, previous-station button and restore-to-normal button;
  • optional always-on-top behavior for the compact window;
  • optional spectrum-free compact mode that keeps only the current-track bar and controls;
  • persistent compact-window position across mode changes and application restarts;
  • show a cover/title popup on track change while the app is in the tray or compact mode;
  • choose the interface language: Russian or English;
  • launch through Start_IRPFFmpeg.exe, which checks runtime DLLs and starts the main app.

Quick Start

Run:

Start_IRPFFmpeg.exe

It is better not to run IRPFFmpeg.exe directly: the main application needs libraries from the heap_dll folder. The launcher checks for DLLs, temporarily adds heap_dll to the child process PATH and starts the player.

Recommended download flow from GitHub Releases:

  1. Download the DLL support archive IRPFFmpeg-support-win-x64.zip once if you do not already have a heap_dll folder with third-party DLLs.
  2. Download the project archive for the current version, for example IRPFFmpeg-v1.2.3-project-win-x64.zip.
  3. Extract both archives into the same folder.
  4. Run Start_IRPFFmpeg.exe.

IRPFFmpeg-support-win-x64.zip contains only third-party runtime DLLs inside heap_dll and is not tied to the application version. It only needs to change when the third-party DLL set changes.

Versioned project archives contain only IRPFFmpeg project files: IRPFFmpeg.exe, Start_IRPFFmpeg.exe, language files, documentation and project support files. Starting with v1.1.0, new versions are published without third-party DLLs; extract the new project archive over a working folder that already has heap_dll.

Minimal working folder layout after extracting the DLL support archive and the project archive:

Start_IRPFFmpeg.exe
IRPFFmpeg.exe
heap_dll/
  avcodec-62.dll
  avfilter-11.dll
  avformat-62.dll
  avutil-60.dll
  jpeg62.dll
  libpng16.dll
  SDL2.dll
  SDL2_image.dll
  swresample-6.dll
  swscale-9.dll
  turbojpeg.dll
  zlib1.dll
Language/
  english.lng
  russian.lng
LICENSE
THIRD_PARTY_NOTICES.md

If you already have a working folder with heap_dll, update by downloading the new project archive and extracting it over the current folder.

If you assemble the package manually, use x64 DLLs only and do not mix files from different builds.

Where to get DLLs manually:

  • FFmpeg DLLs (avcodec, avfilter, avformat, avutil, swresample, swscale) - from the official FFmpeg download page: https://ffmpeg.org/download.html. FFmpeg publishes source code and links to Windows builds such as gyan.dev and BtbN. You need a shared/dev x64 build and DLLs from its bin folder.
  • SDL2.dll - from official SDL2 Visual C++ archives: https://www.libsdl.org/release/. Usually this is an archive like SDL2-devel-...-VC.zip; the DLL is inside lib\x64.
  • SDL2_image.dll - from SDL2_image releases: https://github.com/libsdl-org/SDL_image/releases. Use a Windows x64/VC package compatible with your SDL2 version.
  • libpng16.dll, jpeg62.dll, turbojpeg.dll, zlib1.dll - image/compression libraries. They are usually included with SDL2_image/your dependency bundle or can be obtained through vcpkg (x64-windows). For releases, use the exact DLLs that were built and tested with the app.

If the launcher reports missing DLLs, restore the missing files to heap_dll or download the full release archive again.

During runtime, the application may create:

app.dat         - settings and state
Rec/            - recorded tracks
cover_cache/    - cover cache
debug_log.txt   - diagnostic log, if logging is enabled

When a stream sends invalid audio data, the app skips those frames, temporarily shows Skipping corrupted data from server... and keeps waiting for a stable audio profile without noisy FFmpeg messages in the status line.

Building From Source

Requirements:

  • Windows 10/11;
  • Visual Studio 2022;
  • MSVC toolset v143;
  • Windows SDK 10;
  • C++17;
  • FFmpeg development package with include, lib and bin;
  • SDL2 and SDL2_image.

Open IRPFFmpeg.sln in Visual Studio and build Release|x64.

The current project paths are configured in IRPFFmpeg.vcxproj:

D:\Code\ffmpeg-dev\include
D:\Code\ffmpeg-dev\lib
D:\Code\ffmpeg-dev\bin
C:\dev\vcpkg\installed\x64-windows\include\SDL2
C:\dev\vcpkg\installed\x64-windows\lib

If your dependencies are in a different location, update the project properties or .vcxproj.

Detailed build instructions: docs/BUILD.md.

Project Structure

IRPFFmpeg.sln              - Visual Studio solution
IRPFFmpeg.vcxproj          - main application
Start_IRPFFmpeg.vcxproj    - launcher application
IRPFFmpeg.cpp/.h           - Win32 UI, state management, playback
audio_dsp.cpp/.h           - audio processing
file_recording.cpp/.h      - MP3/FLAC recording and metadata
cover_art.cpp/.h           - cover search, download and caching
metadata_decode.cpp/.h     - text metadata decoding
language_manager.cpp/.h    - interface localization
compact_mode.cpp/.h        - compact window mode
util.cpp/.h                - shared utilities
Language/                  - interface localization files
docs/                      - user and developer documentation

Architecture details: docs/ARCHITECTURE.md.

Documentation

GitHub Publishing

The repository is prepared as source code. Build outputs, x64/, .vs/, temporary settings, cover cache and recordings are excluded through .gitignore.

Ready EXE/DLL packages should be published through GitHub Releases, not stored in git history. See docs/RELEASE.md.

License

IRPFFmpeg source code is distributed under the MIT License. See LICENSE.

MIT License allows using, modifying and distributing the code, but requires preserving the copyright notice and license text in copies or substantial portions of the software.

If you use IRPFFmpeg code in another project, attribution is appreciated where practical:

Uses code from IRPFFmpeg by AsSergjo: https://github.com/AsSergjo

This attribution request is not an additional restriction beyond the MIT License.

Third-party components are distributed under their own terms:

  • FFmpeg DLLs - LGPL/GPL according to the exact FFmpeg build;
  • SDL2 and SDL2_image - zlib license;
  • other runtime libraries - according to their own licenses.

Details and release requirements: THIRD_PARTY_NOTICES.md.

About

Windows internet radio player built with C++17, Win32 and FFmpeg, with cover art, M3U playlists, audio DSP and MP3/FLAC recording.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages