fmedia

fmedia - fast media player/recorder/converter

OVERVIEW

fmedia is a fast asynchronous media player/recorder/converter for Windows and Linux. Its goal is to provide smooth playback even if input device is very slow and unresponsive. The architecure allows to extend the functionality of the application in any way: adding a new audio input/output format, a new DSP filter or even a new GUI. fmedia is very small and fast: it has low CPU & memory consumption making it ideal to listen to music or process audio files while running on a notebook's battery. fmedia can decode: .mp3, .ogg, .m4a/.mp4 (AAC, ALAC), .flac, .ape, .wv, .wav. fmedia can encode into: .mp3, .ogg, .m4a (AAC), .flac, .wav. You'll find more detailed information about fmedia in README.txt file inside the package.

DOWNLOAD

Note: it's beta version - not tested well enough, not all functions will work as expected. See section "USE-CASES" to have an idea of which features should work.

Self-contained. fmedia uses modified versions of 3rd party libraries: libALAC, libfdk-aac, libFLAC, libMAC, libmp3lame, libmpg123, libogg, libsoxr, libvorbisenc, libvorbis, libwavpack. 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

SCREENSHOTS



See all screenshots.

ARTICLES

CHANGES

fmedia v0.16 - Aug 24, 2016

 + TUI: "pause" command
 + GUI: new window with recording settings
 + GUI: store recording settings in config
 * GUI: preserve artist/title info on tab switching
 * GUI: convert: add tracks into a new tab
 * GUI: config: add convert.output setting
 - GUI: fix potential segfault while initializing controls with invalid names

 + WAV input: support meta tags
 + MP4 output: support meta tags
 * MP4 AAC output: support more input audio formats (not just int16) and non-interleaved input
 * MP4 AAC: support AAC encoder delay and padding
 - MP4 AAC: default setting for --aac-quality switch didn't work
 + MPEG: support stream copy without re-encoding
 * MPEG decode: support VBRI tag
 * FLAC output: support other input audio formats with dynamic conversion
 * OGG decode: sample-accurate seek
 - OGG decode: fix invalid audio position of the target page after seeking
 - OGG encode: flush OGG page with 255 segments

 +  net.icy: write audio data to a file while playing
 -  mixer: setting output format in config didn't work
 +  fmedia: command line switches --format, --rate and --channels are used for both audio input and output
 *! fmedia: rename --silent to --notui
 +  fmedia: add --stream-copy, --out-copy command line switch
 *! fmedia, WAV: --mono, --wav-format are removed.  Use --channels and --format instead.
 *! core: conf: "input module" directive doesn't accept audio format settings
    Add "record_format" directive for this purpose
 *! core: conf: audio format string has changed: e.g. 16le -> int16
 *  soundmod.conv: support immediate format conversion
 *  soundmod.conv: left/right mono conversion doesn't require additional processing
 -  soundmod.conv: conversion mono->stereo produced too quiet output
 *  WASAPI input: support format/channels conversion
 +  file: support "$date" and "$time" variables
See full history

INSTALL ON WINDOWS

1. Unpack archive to the directory of your choice, e.g. to "C:\Program Files\fmedia" 2. Optionally, add the path into the system environment:

set PATH=%PATH%;C:\Program Files\fmedia

INSTALL ON LINUX

1. Unpack archive to the directory of your choice, e.g. to "/usr/local/fmedia-0":

tar Jxf ./fmedia-0.8-linux-amd64.tar.xz -C /usr/local
2. Optionally, create a symbolic link:
ln -s /usr/local/fmedia-0/fmedia /usr/local/bin/fmedia
Note: the file "fmedia-0/fmedia" is just a script that executes binary file "fmedia-0/fmedia-bin" with proper environment. If the script doesn't work for some reason, call fmedia-bin directly:
env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/fmedia-0 /usr/local/fmedia-0/fmedia-bin

MODULES

All features are provided by fmedia modules divided into 3 groups:

INPUT
	. File
	. ICY
	. WASAPI Capture
	. Windows Direct Sound Capture
	. ALSA Capture

FILTERS
	Lossy Codecs:
	. MPEG input/output
	. OGG Vorbis input/output
	. AAC input/output

	Lossless Codecs:
	. FLAC input/output
	. ALAC input
	. WavPack input
	. APE input
	. WAV input/output
	. RAW input

	Playlists:
	. M3U input
	. CUE input
	. Directory input

	Other:
	. PCM converter
	. PCM peaks
	. Mixer
	. Terminal UI
	. Graphical UI

OUTPUT
	. File
	. Windows Direct Sound Playback
	. WASAPI Playback
	. ALSA Playback

USE-CASES

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
	fmedia ./file.ogg --out=./file.wav
	fmedia ./file.wav --out=./file.ogg --ogg-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 --outdir=.

Convert file and override meta info (Use single quotes on Linux, double quotes on Windows)
	fmedia ./file.flac --out=.ogg --meta='artist=Artist Name;comment=My Comment'

Extract several tracks from .cue file (Use single quotes on Linux, double quotes on Windows)
	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

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

FEEDBACK

Please report bugs to stsaz [at] yandex.ru. Your suggestions and source code patches are also greatly appreciated.

Copyright © 2015 Simon Zolin