OVERVIEW
fmedia is a fast media 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 decode: .mp3, .ogg (Vorbis, Opus), .opus, .m4a/.mp4 (AAC, ALAC, MPEG), .mka/.mkv (AAC, ALAC, MPEG, Vorbis), .caf (AAC, ALAC), .avi (AAC, MPEG), .aac, .mpc, .flac, .ape, .wv, .wav. fmedia can encode into: .mp3, .ogg, .opus, .m4a (AAC), .flac, .wav. You'll find more detailed information about fmedia in README file inside the package. Help wanted! If you want to help fmedia - you can do it by translating help.txt file, even starting with a few lines. More info on github.
ARTICLES
- Architecture of fmedia (Apr 14, 2018)
- Audio Formats Comparison (upd. Mar 27, 2017)
- How To Easily Record Sound On Windows And Linux (upd. Feb 13, 2018)
- How To Convert Audio Files (upd. Dec 11, 2016)
DOWNLOAD
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
CHANGES
Follow updates on Twitter.fmedia v1.21 - Dec 31, 2020 + GUI (Linux): File->"Download from YouTube" (via /usr/bin/youtube-dl) - core: --gain didn't work (v1.20 bug)
fmedia (Android) v0.3 - Mar 15, 2020 + Record audio button + setting: Show 'Record' Button + setting: Directory for Recordings + save/restore playlist scroll positionSee full history
INSTALL ON WINDOWS
-
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
- Right click on fmedia package file (e.g.
-
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
-
Run
fmedia-gui.exe
to open graphical interface; or execute commands viafmedia.exe
from console (cmd.exe).
INSTALL ON LINUX
-
Unpack archive to the directory of your choice, e.g. to
/usr/local/fmedia-1
:tar Jxf ./fmedia-1.0-linux-amd64.tar.xz -C /usr/local
-
Optionally, create a symbolic link:
ln -s /usr/local/fmedia-1/fmedia /usr/local/bin/fmedia
INSTALL ON ANDROID
- Enable "Allow installation from unknown sources" option in your phone's settings (you can disable it again after installation)
- Download .apk file to your phone's storage and execute it
- Click Install button and wait a couple seconds
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.
Here's the diagram that describes 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
USE-CASES
Note the difference between UNIX and Windows terminals when you use special characters and spaces:
-
Use single quotes ('') on Linux (sh, bash), e.g.:
fmedia './my file.ogg' fmedia file.wav -o '$filename.ogg'
-
Use double quotes ("") on Windows (cmd.exe), e.g.:
fmedia "./my file.ogg"
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