fast audio
player recorder converter
fast audio player, recorder, converter

OVERVIEW

fmedia is a fast audio player/recorder/converter for Windows, macOS, Linux and FreeBSD. It provides smooth playback and recording even if devices are very slow. It's highly customizable and can be easily extended with additional plugins. Its low CPU & memory consumption saves energy when running on a notebook's battery. Play or convert audio files, record new audio tracks from microphone, save songs from Internet radio, and much more! fmedia is free and open-source project, and you can use it as a standalone application or as a library for your own software. fmedia can read: .mp3, .ogg (Vorbis/Opus), .opus, .mp4/.m4a/.mov (AAC/ALAC/MPEG), .mka/.mkv/.webm (AAC/ALAC/MPEG/Vorbis/Opus/PCM), .caf (AAC/ALAC/PCM), .avi (AAC/MPEG/PCM), .aac, .mpc, .flac, .ape, .wv, .wav; .m3u, .pls, .cue. fmedia can write: .mp3, .ogg, .opus, .m4a (AAC), .flac, .wav, .aac (--stream-copy only). You'll find more detailed information about fmedia in README file inside the package.

ARTICLES

DOWNLOAD

Choose fmedia package for your OS and CPU:

Self-contained. fmedia uses modified versions of 3rd party libraries: libALAC, libfdk-aac, libFLAC, libMAC, libmp3lame, libmpg123, libmpc, libogg, libopus, libsoxr, libvorbisenc, libvorbis, libwavpack, libDynamicAudioNormalizer. Everything is inside the package, so no additional dependencies are required to be installed on your system.

Portable. No installation, just uncompress the package anywhere you want!

Open-source. You can download the sourcecode from here: https://github.com/stsaz/fmedia

* fmedia/Android is experimental and still needs much more work. There's only a small portion of source-code shared between Android app and the full-featured fmedia app for desktops. It relies on the default audio decoding/playback capabilities Android OS provides (just like any other ordinary audio player). Use it if you want the audio player for Android with minimum features and minimum system resources consumption.

CHANGES

fmedia v1.30 - Feb 20, 2023

 + --playback-buffer=INT: Length (in msec) of the playback buffer
 *! move mod/core.so -> core.so (Core isn't really a module)
 * core: optimize fmedia.conf so that it's easier to embed fmedia into other projects
   (it's no longer required to declare a module in fmedia.conf)
 * --print-time: don't require '--debug' to get per-filter timings
 * .mp3, .ape, .wv read: id3v1 codepage
 * Linux: use libgio directly to trash files
 * Vorbis write: skip 'picture' tag
 * update to libFLAC-1.4.2
 - PulseAudio: playback could hang if there's a problem with device
 - .mp3 copy: copy id3v1 tag (v1.27.2 bug)
 - .ogg write: fix hanging on trying to write a large packet (v1.29 bug)
 - .ogg read: inaccurate seeking (v1.29 bug)
 - GUI/Linux: incorrect audio-conversion settings were written into fmedia-user.conf
fmedia/Android v0.11 - Mar 19, 2023

 + Convert: ALAC decoder
 + Convert: "Sample Rate" setting
 * Convert: Auto-Trash: remove item from list
 + Recording: new setting "Encoder (AAC-LC | AAC-HE | AAC-HEv2 | FLAC)"
 + UI: Playlist Save: choose output directory
 * UI: Show Tags: copy tag's value to clipboard on click
See full history

INSTALL ON WINDOWS

  1. Unpack archive to the directory of your choice, e.g. to "C:\Program Files\fmedia"

    • Right click on fmedia package file (e.g. fmedia-1.0-win-x64.zip) in Explorer
    • Choose "Extract All..." in the popup menu
    • Follow the Wizard steps
  2. Optionally, run the following command from console (cmd.exe):

    "C:\Program Files\fmedia\fmedia.exe" --install

    This command will:

    • add fmedia directory into user's environment
    • create a desktop shortcut to fmedia-gui.exe
  3. Run fmedia-gui.exe to open graphical interface; or execute commands via fmedia.exe from console (cmd.exe).

INSTALL ON LINUX

  1. Unpack archive to the directory of your choice, e.g. to your home directory (~/bin/fmedia-1):

    mkdir -p ~/bin
    tar Jxf ./fmedia-1.0-linux-amd64.tar.xz -C ~/bin
  2. Run ~/bin/fmedia-1/fmedia --gui to open graphical interface; or execute commands via ~/bin/fmedia-1/fmedia from console.

  3. Optionally, create a symbolic link:

    ln -s ~/bin/fmedia-1/fmedia ~/bin/fmedia
  4. Now you can run fmedia --gui to open graphical interface; or execute commands via fmedia from console.

INSTALL ON ANDROID

  1. To be able to install .apk you need to enable "Allow installation from unknown sources" option in your phone's settings (you can disable it again after installation).
  2. Download .apk file to your phone's storage and install it.
  3. Click Install button and wait a couple seconds.
  4. You can also install .apk file from PC with adb install.

FEATURES

fmedia consists of many different modules that are joined together in a chain (or conveyer) to get things done. After the user issues a command to fmedia, the core module builds the chain of modules needed to perform the task and then starts the conveyer. The processing moves back and forth between the modules until the job is done. Graphical representation of fmedia's architecture.

Here's the text-only diagram that shows fmedia's abilities:

INPUT

  • File
  • Directory
  • ICY
  • HLS
  • WASAPI
  • Windows Direct Sound
  • ALSA
  • CoreAudio
  • JACK

FORMATS

Multimedia:

  • .mp4/.m4a
  • .mkv/.mka
  • .avi

Audio:

  • .ogg/.opus
  • .caf
  • .mp3
  • .aac
  • .mpc
  • .flac
  • .ape
  • .wv
  • .wav

Playlists:

  • .m3u/.m3u8
  • .pls
  • .cue

DECODERS

Lossy:

  • MPEG
  • Vorbis
  • Opus
  • AAC LC/HE/HEv2
  • Musepack

Lossless:

  • FLAC
  • ALAC
  • WavPack
  • APE

PROCESSING

  • Converter
  • Analyzer
  • Mixer
  • Silence generator
  • Length cutter
  • Signal gain modifier
  • Signal gain chain controller
  • Dynamic Audio Normalizer
  • Terminal UI bridge
  • Graphical UI bridge

ENCODERS

Lossy:

  • MPEG
  • Vorbis
  • Opus
  • AAC LC/HE/HEv2

Lossless:

  • FLAC

FORMATS

  • .m4a
  • .ogg/.opus
  • .mp3
  • .flac
  • .wav

OUTPUT

  • File
  • WASAPI
  • Windows Direct Sound
  • ALSA
  • Pulse Audio
  • CoreAudio
  • OSS

fmedia/Android features:

USE-CASES

Note the difference between UNIX and Windows terminals when you use special characters and spaces:

PLAY

Play files, directories, Internet-radio streams

fmedia ./file.ogg ./*.mp3
fmedia ./Music
fmedia http://radio-stream:80/

Play (mix) multiple streams simultaneously

fmedia --mix ./file1.ogg ./file2.ogg

Play wav file with a corrupted header

fmedia ./file.raw --fseek=44

CONVERT

Convert with parameters

fmedia ./file.ogg --out=./file.wav --format=int16
fmedia ./file.wav --out=./file.ogg --vorbis.quality=7.0
fmedia ./file.wav --out=./file.mp3 --mpeg-quality=0 --rate=48000

Convert all .wav files from the current directory to .ogg

fmedia ./*.wav --out=.ogg

Convert file and override meta info

fmedia ./file.flac --out=.ogg --meta='artist=Artist Name;comment=My Comment'

Extract several tracks from .cue file

fmedia ./album.flac.cue --track=3,7,13 --out='$tracknumber. $artist - $title.flac'

Split audio file

fmedia ./file.wav --seek=00:35 --until=01:35 --out=./file-1.wav

Cut compressed audio without re-encoding

fmedia ./file.ogg --out=./out.ogg --seek=1:00 --until=2:00 --stream-copy

Copy left channel's audio from a stereo source

fmedia ./stereo.ogg -o left.wav --channels=left

Change sound volume in an audio file

fmedia --gain=5.0 ./file.wav --out=./file-loud.wav

RECORD

Capture audio from the default audio input device until stopped

fmedia --record --out=rec.flac

Record with the specific audio format

fmedia --record -o rec.wav --format=int24 --channels=mono --rate=48000

Record for 60 seconds then stop

fmedia --record --out=rec.flac --until=60

Record while playing

fmedia ./file.ogg --record --out=./rec.wav

Live output

fmedia --record

Record audio from Internet radio (without re-encoding)

fmedia http://radio-stream:80/ -o ./radio.mp3 --stream-copy

Play AND record audio from Internet radio into separate files (without re-encoding)

fmedia http://radio-stream:80/ --out-copy -o './$time. $artist - $title.mp3' --stream-copy

OTHER FUNCTIONS

Print audio meta info

fmedia --info ./file.mp3

Print audio meta info and all tags

fmedia --info --tags ./file.mp3

Show PCM information

fmedia input.ogg --pcm-peaks

Create a playlist file from directory:

fmedia ./Music -o music.m3u8

FEEDBACK

Please report bugs to stsaz at pm dot me or create an issue on GitHub. Your suggestions and source code patches are also greatly appreciated.

MORE APPS FROM SIMON