fmedia Changelog

What's new in fmedia 1.31

May 22, 2023
  • --http-ctl="<IP>": Enable HTTP server for handling remote commands
  • This option allows fmedia to be remotely controlled using web browser.
  • Server address is "http://<IP>:7314/".
  • Supported commands:
  • "POST /api/pause": Pause
  • "POST /api/unpause": Unpause
  • "POST /api/next": Play next track
  • --playlist-heal="": Auto-correct the paths to files inside a .m3u playlist
  • TUI: colored output
  • GUI: compress auto-loaded playlists with zstd ("listN.m3uz")
  • Recording: support --dev=... together with --record
  • Restore support for old AMD64 CPU (without SSE4.2 support)
  • Recording: finalize the output file while recording after --globcmd=stop
  • .mp4(AAC) write: don't write incorrect VBR bitrate & sample rate values
  • .ogg write: fix (v1.30 bug)

New in fmedia 1.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

New in fmedia 1.29.1 (Sep 26, 2022)

  • GUI: "Analyze & Show PCM Info" supports .cue tracks
  • + GUI/Windows: Record dialog: "Enable Dynamic Audio Normalizer" setting
  • GUI/Windows: Record dialog: audio format settings didn't work
  • GUI/Windows: save/restore the settings for Record & Convert dialogs
  • GUI/Windows: couldn't set an empty setting value in Record & Convert dialogs
  • GUI/Windows: Convert: seeking on .mp3 didn't work (v1.28 bug)
  • core: user config settings from fmedia-user.conf didn't work (v1.25.3beta bug)
  • "--until" now works with radio stream sources
  • .aac read: fix crash

New in fmedia 1.29 (Sep 5, 2022)

  • new "fmedia.conf" settings
  • "remove_if_unknown_format"
  • Auto-remove playlist item if the file format is not supported
  • "remove_if_no_source"
  • Auto-remove playlist item if source doesn't exist
  • random: logically split playlist into 2 chunks for better UXP
  • now the next song is likely further from the current one in playlist)
  • HTTP: couldn't play some radio streams
  • previously we relied at least on "Connection:close")
  • "--mix" didn't work
  • flac read: couldn't complete seek request in some cases
  • ogg --stream-copy: fix incorrect positioning
  • ogg/.opus write: corrupted data (v1.28 bug)
  • some packets were being skipped)
  • GUI: fix Next/Prev on inactive playlist

New in fmedia 1.28 (Jun 20, 2022)

  • TUI: new commands:
  • E: Remove "dead" items from playlist
  • L: Save current playlist to the system's temporary directory
  • r: "Choose random track" setting: on/off
  • x: Remove the track from playlist and play next track
  • UI: react faster to seek requests
  • GUI: use separate language files
  • + GUI: Italian language
  • GUI: "List->Read Meta Tags" didn't work
  • Windows: minimum required version is now Vista
  • .mp3 --stream-copy: improve seeking accuracy
  • .cue: support for all containers (except .avi and .caf)

New in fmedia 1.27.4 (Jun 5, 2022)

  • support "--include/--exclude" when creating playlist from directory
  • avi(AAC, PCM), mkv(MP3) read didn't work
  • ogg read: some packets could be skipped
  • ogg(Opus, Vorbis) write: correct output data and granule position for the first packets
  • ogg(FLAC): support seeking
  • caf(PCM) read: faster processing
  • FLAC decode: fix crash after seek on bad flac files

New in fmedia 1.27.3 (May 16, 2022)

  • Playback: faster audio device open (reuse) on track switch with Next/Previous commands for ALSA, PulseAudio, WASAPI
  • Support playback with '--dynanorm'
  • ALSA playback: some data could be skipped when seeking or starting next track
  • PulseAudio: don't hang after broken connection with server
  • PulseAudio playback: fix crash after Stop/Next/Previous commands
  • Mp3 seek didn't work sometimes
  • Mp3 with --stream-copy: fix; enable ".mp3 --stream-copy --meta=..."
  • Vorbis playback: skipped some data for network stream input
  • Playback with --random: playback could be incorrectly stopped by "too many consecutive errors" protection
  • Recording: try to open audio device with the user-specified format (--format/--rate/--channels options) and apply audio conversion only if it fails
  • GUI/GTK: Explorer tab: add and play only 1 selected file on double-click

New in fmedia 1.27.2 (Apr 20, 2022)

  • Fix crash on file conversion

New in fmedia 1.27.1 (Apr 2, 2022)

  • Fix crash on file conversion

New in fmedia 1.27 (Apr 1, 2022)

  • '--edit-tags': Add/Modify file's meta tags in-place
  • Supported formats and tags: .mp3(ID3v2+ID3v1)
  • Example:
  • fmedia --edit-tags --meta='artist=ARTIST;title=TITLE' ./file.mp3
  • '--meta-from-filename=TEMPLATE': Specify template for auto-tagging from input file name
  • Example how to set artist, track number and title meta tags from file name:
  • fmedia --edit-tags --meta-from-filename='$artist - $tracknumber. $title' './Cool Artist - 04. Best Song.mp3'
  • GUI/Linux: edit .mp3 tags via "File"->"Edit Meta Data"
  • GUI/Linux: "List"->"Scroll To Current"
  • TUI: "delete file": move to Trash by default
  • New configuration setting: "tui.file_delete_method"
  • Windows: fix wildcard input
  • fix .mp3 format detection in files without ID3v2 tag
  • MPEG/Layer3: fix audio glitches on seek

New in fmedia 1.26.1 (Mar 14, 2022)

  • Fix complex filter chain use-cases such as "--start-dblevel/--stop-dblevel" and possibly some other cases.

New in fmedia 1.26 (Mar 6, 2022)

  • Includes all changes from v1.25beta

New in fmedia 1.25.3 Beta (Jan 29, 2022)

  • "-o @stdout.wav"
  • core: "codepage" config option
  • core: pcm channels conversion
  • .mp3 encode: mono/interleaved source

New in fmedia 1.25.2 Beta (Dec 20, 2021)

  • Rename --out-copy=cmd -> --out-copy-cmd. A command-line switch with an optional value was a design mistake.

New in fmedia 1.25.1 Beta (Nov 28, 2021)

  • Audio capture: don't delete the recorded file after audio device failure
  • WASAPI playback: switch to new default device after the current device goes offline
  • Playlist: don't activate next track after audio device error
  • Audio playback: "--dev=N" didn't work when format conversion is necessary
  • WASAPI capture: exclusive mode didn't work
  • Windows: finalize the file being recorded after Ctrl+C

New in fmedia 1.25 Beta (Nov 16, 2021)

  • GUI: on exit, don't rewrite m3u playlist files unless necessary ogg(FLAC): couldn't read some files
  • aac read: "--stream-copy -o .mp4" produced unreadable mp4 file

New in fmedia 1.24.1 (May 17, 2021)

  • capture stream didn't work with "--dev-capture=0 --dev-loopback=N"

New in fmedia 1.24 (Apr 12, 2021)

  • mkv: support Opus; support .webm; support seeking (slightly inaccurate)
  • mkv(Opus) -> .ogg copy: "fmedia f.mkv -o f.ogg --stream-copy"
  • cue: support .mp4/.mkv/.mp3
  • avi: support "pcm" codec
  • GUI(Linux): "File->Delete From Disk": move to Trash by default
  • mkv: crash when reading tags
  • Opus decode: fix "clicks" on tracks changing; accurate positioning

New in fmedia 1.23.1 (Mar 4, 2021)

  • .ogg read: fix (v1.23 bug)
  • GUI (Linux): youtube downloader: save/restore settings for format and output directory

New in fmedia 1.23 (Feb 26, 2021)

  • Windows: record from capture and loopback device in parallel into separate files:
  • "--record --dev-capture=N --dev-loopback=N -o rec$counter.wav"
  • GUI (Linux): Help->QuickCommand: dialog with all menu commands in one list
  • GUI (Linux): File->RenameFile: rename/move a file on disk
  • .caf read: support pcm-le data
  • .mkv read: couldn't read some files
  • .mp4 read/write: fix (v1.22 bug)
  • GUI (Linux): Convert: didn't copy meta data from source
  • Core:
  • --mix didn't work
  • Didn't work on old Windows (v1.19 bug)

New in fmedia 1.22 (Jan 31, 2021)

  • GUI (Linux): "Convert" dialog with editable conversion properties and hotkeys for marking Start/Stop position
  • GUI (Linux): window for log messages
  • .mp4 read: support .mov
  • detect input file format from file data

New in fmedia 1.21 (Dec 31, 2020)

  • GUI (Linux): File->"Download from YouTube" (via /usr/bin/youtube-dl)
  • - core: --gain didn't work (v1.20 bug)

New in fmedia 1.20 (Oct 11, 2020)

  • Auto-attenuate: Automatically reduce the volume of loud tracks
  • New --globcmd commands: next, pause, unpause
  • Tui: ability to pause/unpause recording with 'Space' key
  • GUI: "Repeat: None/Track/All"
  • Help.txt: Indonesian translation
  • GUI-GTK: fix incorrect behaviour on Play/Pause event

New in fmedia 1.19 (Aug 30, 2020)

  • Pulse: support recording
  • OSS: support recording
  • --capture-buffer argument: all audio modules now support it
  • "-o .ogg" command line didn't work (v1.13 bug)
  • .m4a write: couldn't create file from source file with an invalid frame

New in fmedia 1.18 (Jul 5, 2020)

  • Pulse: support 8-bit playback
  • Help.txt: Spanish translation
  • Core: skip unknown modules in fmedia-user.conf
  • File.in, file.out: can use thread pool for asynchronous I/O
  • --split: .mp3 output: corrupted first frame
  • .raw: reading didn't work
  • ID3v2 read: fix parsing frame data with 'unsync' flag
  • .flac read: couldn't skip corrupted meta block
  • Use BSD 2-Clause License

New in fmedia 1.17 (Apr 30, 2020)

  • GUI: remember the current active track and playlist scroll position
  • GUI (Linux): mark the currently playing track
  • capture-buffer argument - Length (in msec) of the capture buffer (WASAPI, ALSA)
  • Linux: core.so: don't use glibc 2.29

New in fmedia 1.16 (Mar 11, 2020)

  • GUI: new command: List -> Read Meta Tags
  • GUI (Windows): "file_delete_method" configuration setting
  • queue: stop playback after many consecutive errors
  • cue: support INDEX value with 'minutes' value 100 and higher
  • GUI (Windows): invalid filename was added to playlist after recording (v1.11 bug)

New in fmedia 1.15 (Feb 4, 2020)

  • Linux: support JACK capture
  • Linux: disable system sleep timer while playing
  • Linux: automatically use ALSA output when Pulse isn't installed
  • e.g. "libpulse.so.0" is not found
  • --listdev is more reliable
  • Show capture devices list even if playback devices list couldn't be shown
  • .m4a write: .m4a(AAC) files created by fmedia couldn't be opened
  • by other players, e.g. VLC (v1.10 bug)
  • fmedia can read those files with no problems.
  • ! config: don't override "output" if it's already initialized
  • e.g. for this configuration:
  • output "pulse.out"
  • output "alsa.out"
  • Pulse (the first one) will be used.

New in fmedia 1.14 (Jan 7, 2020)

  • .caf reader (AAC, ALAC) (no seeking)
  • @stdin: support seeking forward, which is required by several file formats
  • GUI: Windows: "Sort: Random" didn't work

New in fmedia 1.13 (Nov 10, 2019)

  • Create a playlist file (.m3u8) from directory
  • GUI: "Sort: Random"
  • GUI-GTK: support multiple tabs
  • GUI-GTK: drag'n'drop didn't work in Ubuntu

New in fmedia 1.12.1 (Oct 13, 2019)

  • help.txt: French translation

New in fmedia 1.12 (Sep 16, 2019)

  • GUI: "Show Media Info": add file size, file date, audio info
  • GUI: redraw items after tab switch for a large playlist
  • GUI: "Show File in Explorer" didn't work if the entry was selected by "Selection Follows Cursor"
  • GUI: crash on closing playlist (v1.2 bug)
  • ID3v1 read: skip spaces at the end of tag fields
  • Dynanorm: crash or error on stop command during playback
  • Core: fix crash or mono->stereo channel conversion (v1.11 bug)
  • Queue: play next track after read/decode error
  • File.stdout: add "buffer_size" config setting
  • File input: random seek error (v1.9 bug)
  • Log: print input file name for error/info messages

New in fmedia 1.11 (Sep 13, 2019)

  • support multi-channel (5.1, 7.1) conversion
  • FLAC-OGG: read FLAC in OGG container (radio streams are also supported)
  • --split=TIME: Split audio by equal time intervals (.wav input only)
  • file output: new "$counter" variable for file name
  • queue: playlist save: write to a file safely
  • Windows: opening wildcard file names didn't work (v1.10 bug)

New in fmedia 1.10.1 (Jul 19, 2019)

  • GUI: windows: convert: empty text in 'output' combobox (v1.10 bug)
  • GUI: windows: convert: couldn't add files for conversion (v1.10 bug)
  • GUI: linux: auto-apply volume for the next track
  • queue: crash on parallel conversion (v1.3 bug)
  • file: random crash (v1.9 bug)
  • "--channels=left" didn't work (v0.34 bug)

New in fmedia 1.10 (Jul 9, 2019)

  • GUI: restore list's column width on startup
  • GUI: convert.output is a dropdown list; restore on startup
  • Help: Added German translation
  • Queue: shrink memory usage of playback items by 70%
  • Pulse, DirectSound: some audio data could be lost after playback is paused
  • Pulse: playback could hang after track has finished

New in fmedia 1.9 (Jun 9, 2019)

  • GUI-GTK: show meta info in playlist properly
  • GUI-GTK: "Show File in Explorer"; more commands in Help menu
  • help: translated some text into Russian
  • net: support "audio/ogg" Content-Type
  • TUI: Windows: determine terminal window width and adjust playbar
  • direct-sound: fix --dev= and --dev-capture= arguments
  • core: crash after decoder has failed to parse audio info
  • Pulse: crash on --list-dev

New in fmedia 1.8 (May 1, 2019)

  • .aac read: Don't decode audio while seeking (almost instant seeking)
  • .aac write with --stream-copy from .aac source
  • GUI: Windows: "Show Favorites", "Add to Favorites", "Selection Follows Cursor" commands
  • GUI: Windows: Save/restore "Random" and "Selection Follows Cursor" checked state

New in fmedia 1.6 (Mar 17, 2019)

  • + set process exit code after a track is finished with an error
  • - crash on opening directory from disk (v1.5 bug)
  • - AAC decode: incorrect audio position of the first block (v0.30 bug)
  • - --dynanorm: crash on trying to use empty configuration (v1.1 bug)
  • - TUI: 'mute' setting was reset on track change

New in fmedia 1.5 (Feb 12, 2019)

  • HLS client
  • .mp4: support --stream-copy
  • WASAPI: --list-dev: Mark default device
  • WASAPI: --list-dev: Print default format for shared mode
  • ICY: support UTF-8 meta
  • Recording with --until produced a file with less audio length than expected

New in fmedia 1.4 (Jan 9, 2019)

  • net.http: config: "proxy" - Connect via HTTP proxy server
  • GUI: Restore user-selected theme on startup
  • GUI: Playback -> "Select Audio Device" - Select playback audio device
  • GUI: Help -> "Edit GUI Themes..."
  • GUI: Help -> "Edit User Settings": Set the correct path for portable mode
  • Set the path to application directory for this command if fmedia is
  • configured in portable mode.
  • Load "fmedia-user.conf" in portable mode
  • Moved "gui.gui.portable_conf" -> "core.portable_conf"
  • ICY: Couldn't play radio streams with "Content-Type: audio/aac"
  • file.out: Invalid characters in filename when using auto-naming (v0.22 bug)
  • If the value of $-variable ends with a space, then it might result in
  • corrupted output filename.

New in fmedia 1.3 (Dec 10, 2018)

  • GUI: Parallel conversion (fmedia.conf::workers).
  • Parallel conversion from command line ('--parallel' switch)
  • .m4a write: Couldn't convert from broken .mp3
  • GUI: Conversion progress didn't update (v1.2 bug)
  • .flac read: Unsynchronized output from .cue files (v1.0 bug)
  • Audio positioning could be incorrect for the tracks in .cue file.

New in fmedia 1.2 (Nov 17, 2018)

  • GUI: support custom themes (theme.conf file)
  • GUI: 'File'->'Theme: Dark' - a simple dark theme
  • GUI: instant playlist switching
  • GUI: button text could be empty if no icon is set (FF v18.10 bug)

New in fmedia 1.1 (Oct 16, 2018)

  • GUI: use icons on playback control buttons
  • GUI: load multiple playlists from previous session on startup
  • GUI: faster playlists (show 1000 items 5x faster)
  • GUI: 'Add URL' command didn't work for radio stream URLs (v0.23 bug)
  • GUI: 'List' -> 'Random' - Choose the next track randomly
  • random - Choose the next track randomly
  • TUI: show track number
  • core: on-demand modules loading (all except UI)
  • Now the modules don't affect fmedia startup time.
  • core: "prevent_sleep" config setting - Don't allow the system to put
  • itself to sleep after some time of inactivity

New in fmedia 1.0.1 (Sep 18, 2018)

  • .m4a write: fix segfault (v1.0 bug)
  • gui: tray icon disappeared (v1.0 bug)

New in fmedia 1.0 (Sep 11, 2018)

  • MacOS:
  • CoreAudio playback & capture
  • Delay modules loading (alac ape avi mkv mp4 mpc soxr wav wavpack)
  • --stop-dblevel=DB[;TIME][;MINTIME] - If MINTIME is specified, stop only after MINTIME time has passed
  • Windows:
  • Reading from EOF position doesn't result in an error

New in fmedia 0.37 (Aug 5, 2018)

  • Include='WILDCARD[;WILDCARD]' - Only include files matching a wildcard (case-insensitive)
  • Exclude='WILDCARD[;WILDCARD]' - Exclude files & directories matching a wildcard (case-insensitive)
  • Until=playback-end - Stop recording when the last playback track is finished
  • Net.http: connect_timeout config setting
  • Net.icy: support OGG stream
  • Queue: start the next track in list after an error has occurred with the current track
  • Queue: next_if_error config setting
  • Mixer: --mix didn't work
  • .m4a write: support conversion from .mp3 (inaccurate audio length)

New in fmedia 0.36 (May 5, 2018)

  • + "--start-dblevel=DB" - Skip initial audio until input signal level goes above DB
  • + "--stop-dblevel=DB[;TIME]" - Stop processing if input signal level goes below DB for TIME time
  • + "--meta": support "@file:FILENAME" - Read meta from file
  • + "--flist=FILE" - Read filenames from FILE
  • - "--flac-compression": named as "--flac-level" in help info (v0.16 bug)
  • + GUI: File->"Analyze & Show PCM Info" command
  • - GUI: queue: the next track is played in the same playlist (v0.35 bug)
  • - GUI: List->Filter: segfault on use (v0.34 bug)
  • - TUI: recording: "max dB" value could be incorrect
  • + .flac: write picture block (via --meta="picture=@file:FILENAME")
  • + .cue: support REM in TRACK context
  • - PulseAudio: fix hanging

New in fmedia 0.35 (Apr 10, 2018)

  • --prebuffer: Start recording by a command from user ('T' key), saving the previously bufferred seconds of audio
  • gui convert: aac_bandwidth conf option
  • gui convert: create/use just 1 playlist
  • flac: support variable-length frame stream
  • --seek, --until: time greater than 24h couldn't be used
  • core: segfault on using channel + sample rate conversion on an ICY stream (v0.34 bug)

New in fmedia 0.34.1 (Mar 15, 2018)

  • --dynanorm: couldn't be used with --record for short length recordings
  • --dynanorm: couldn't be used with --format/--channels/--sample-rate

New in fmedia 0.34 (Mar 9, 2018)

  • Dynamic Audio Normalizer filter (--dynanorm switch)
  • Gui: don't stop playback when starting conversion
  • Windows: --aac-profile didn't work
  • .flac write: segfault on recording to FLAC (v0.32 bug)

New in fmedia 0.33 (Feb 14, 2018)

  • core: add --globcmd.pipe-name command line argument (can easily start and control many instances in parallel)
  • wasapi: recording audio in loopback mode is now continuous (record silence if nothing else is playing)
  • gui: new command: Help -> "Check for Updates"
  • icy: --out-copy: segfault on exit

New in fmedia 0.32 (Feb 14, 2018)

  • winXP: fix startup (unsupported imported function in core.dll and unsupported GUI behaviour)
  • print-time: show more detailed info

New in fmedia 0.31 (Feb 14, 2018)

  • ICY: save tracks from AAC radio stream into .m4a (with --stream-copy)
  • aac reader: support --stream-copy to .mp4
  • mpc decode: an "AP" block could be skipped
  • ICY: reset HTTP response headers on reconnect
  • net: don't reconnect if server closed connection gracefully
  • WASAPI: exclusive mode: hanging after starting the next track (v0.29 bug)
  • TUI: apply volume on track change
  • TUI: linux: remove separate thread for reading from stdin
  • core.so is loaded dynamically from mod/all modules were moved to mod/