Git Product home page Git Product logo

fmedia's Introduction

Next Major Version

fmedia project is no longer supported.

The next major version is available under a new name - phiola. It has better command-line interface, easier to use software interface, slightly improved architecture and core code, unified Windows/Linux GUI, final support for Android.

OVERVIEW

fmedia is a fast audio player/recorder/converter for Windows, macOS, Linux, FreeBSD, Android*. 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).

* fmedia/Android is currently far behind on features compared to the full-functional desktop-version.

Contents:

FEATURES

  • Audio I/O:

    • ALSA (capture/playback)
    • CoreAudio (capture/playback)
    • DirectSound (capture/playback)
    • JACK (capture)
    • OSS (capture/playback)
    • PulseAudio (capture/playback)
    • WASAPI (capture/playback)
  • I/O:

    • File (read/write)
    • ICY-stream (read)
    • HLS (read)
  • Containers:

    • .aac (read, write: --stream-copy only)
    • .ape (read)
    • .avi (read)
    • .caf (read)
    • .flac (read/write)
    • .mkv/.mka (read)
    • .mp3 (read/write)
    • .mp4/.m4a (read/write)
    • .mpc (read)
    • .ogg/.opus (read/write)
    • .wav (read/write)
    • .wv (read)
  • Lossy codecs:

    • AAC (decode/encode)
    • MPEG (decode/encode)
    • Musepack (decode)
    • Opus (decode/encode)
    • Vorbis (decode/encode)
  • Lossless codecs:

    • ALAC (decode)
    • APE (decode)
    • FLAC (decode/encode)
    • WavPack (decode)
  • Playlists:

    • .m3u/.m3u8, .pls (read)
    • .cue (read)
    • Directory
  • Other:

    • PCM converter
    • PCM peaks analyzer
    • Mixer
    • Dynamic Audio Normalizer
    • Terminal UI
    • Graphical UI (Windows, Linux/GTK)

fmedia uses modified versions of these 3rd party libraries: libALAC, libfdk-aac, libFLAC, libMAC, libmp3lame, libmpg123, libmpc, libogg, libopus, libsoxr, libvorbisenc, libvorbis, libwavpack, libDynamicAudioNormalizer, libzstd. See contents of alib3/ for more info.

fmedia/Android features

Currently implemented features:

  • Playback: .m4a, .mp3, .flac, .ogg, .opus (depends on OS)
  • Recording: .m4a(AAC), .flac
  • Convert (decode): .mp3, .mp4/.m4a(AAC-LC,ALAC), .flac
  • Convert (encode): .m4a(AAC-LC), .flac
  • Convert (stream copy): .mp3, .m4a
  • GUI: list of meta tags
  • GUI: file explorer
  • GUI: 2 playlists

INSTALL

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. Optionally, create a symbolic link:

     ln -s ~/bin/fmedia-1/fmedia ~/bin/fmedia
    
  3. Optionally, add fmedia GUI icon to KDE Applications:

     cp ~/bin/fmedia-1/fmedia.desktop ~/.local/share/applications
    

    Then edit Exec= and Icon= rows in ~/.local/share/applications/fmedia.desktop if necessary.

  4. Run fmedia --gui to open graphical interface; or execute commands via fmedia from console.

BUILD

Read fmedia Build Instructions.

CONFIG

The global configuration file fmedia.conf is located within the fmedia directory itself. It contains all supported settings and their default values. You must restart fmedia after you make changes to this file.

Additional settings may be stored in file fmedia-ext.conf. This makes it easier to upgrade fmedia without the need to edit fmedia.conf.

Per-user configuration settings are also supported, they must be stored in fmedia-user.conf file in home directory:

Windows: %APPDATA%/fmedia/fmedia-user.conf
Linux:   $HOME/.config/fmedia/fmedia-user.conf

Settings for a module must be in format "so.module.key value", e.g. to overwrite the global setting for OGG Vorbis encoding quality you should write:

vorbis.encode.quality "7.0"

Core configuration settings start with "core.", e.g. set codepage for non-Unicode text:

core.codepage win1252

TERMINAL UI

By default fmedia runs with a terminal UI, which shows information about the currently playing audio track and the currently playing audio position. Hot keys are also supported, the most commonly used are:

  • Space for "Play/Pause"
  • Right Arrow/Alt+Right Arrow/Ctrl+Right Arrow to seek forward
  • n to play the next track
  • s to stop playback
  • q to quit fmedia
  • h to show all supported commands

GRAPHICAL UI

To run fmedia in GUI mode (Windows and Linux) you may execute the console binary like this:

fmedia --gui

Or use this special executable file (Windows only):

fmedia-gui.exe

You should use this binary file for opening files via Explorer's "Open With..." feature. Note: command-line options are not supported.

fmedia GUI is highly customizable, thanks to FF library that is used under the hood. FF UI technology allows you to modify properties of every UI control: windows, buttons, menus, tray icons and more. You may resize controls, set different styling, change any text, hotkeys, etc. All this information is stored within fmedia.gui which is a plain text file. After you make some changes in fmedia.gui, save it and then restart fmedia.

By default fmedia GUI saves its state in file %APPDATA%\fmedia\fmedia.gui.conf. You can change this by setting portable_conf to true in fmedia.conf. After that, fmedia.gui.conf will be stored in program directory (e.g. C:\Program Files\fmedia\fmedia.gui.conf), thus making fmedia completely portable.

EXTRACT TRACKS FROM flac.cue

While extracting a track from the album in FLAC using CUE sheet, the audio is first decoded to PCM and then re-encoded with FLAC. This behaviour won't result in any audio quality loss since FLAC is a lossless codec.

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
fmedia ./file.wav --split=01:00 -o 'file-$counter.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 from playback or "record what you hear" (Windows/WASAPI only)

fmedia --dev-loopback=1 --record --out=./rec.wav

Record from playback AND record from microphone in parallel into 2 different files (Windows/WASAPI only)

fmedia --dev-loopback=1 --dev-capture=1 --record --out='./rec-$counter.wav'

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

EDIT TAGS

Modify file's meta tags in-place

fmedia --edit-tags --meta='artist=ARTIST;title=TITLE' ./file.mp3

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'

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

FOR DEVELOPERS

YOUR APPLICATION BASED ON FMEDIA

fmedia can be used as a sound library: you can freely use its abilities in your own software. And you don't have to build fmedia by yourself to use its features. All you need to do is link your binary file with core.so (or core.dll) and you'll be able to do everything that fmedia can: playback, record and convert audio from your application.

SUPPORT NEW FORMAT

You may add support for a new audio format into fmedia. To do that you have to add your module into "fmedia.conf" and add an appropriate file extension into "input_ext" or "output_ext" section.

For example, after you have built your module (e.g. xyz.so), add it into "fmedia.conf":

mod "xyz.decode"

Then associate it with ".xyz" file extension:

input_ext {
	...
	"xyz.decode" xyz
}

fmedia will call module "xyz.decode" each time user orders fmedia to play "*.xyz" files.

See fmedia source code for more details. For example, main.c::main() will show you how fmedia command line binary initializes core module. See src/format/wav.c for an example on how to write a simple filter for fmedia.

LOW-LEVEL INTERFACE

If you'd like to use low level interfaces, take a look at the source code of FF libraries. Together they provide you with an easy interface that you can use to work with a large set of file formats, decode or encode audio and much more. fmedia itself is built upon FF library - it's completely free and open-source.

PARTICIPATE

You are welcome to participate in fmedia's development. Send suggestions, improvements, bug reports, patches - anything that can help the project!

Understanding the top-level source code hierarchy can help you to get involved into fmedia quicker. The source code consists of these separate repositories:

------------------------
    fmedia
------------------------
 ffos, avpack, ffaudio
------------------------
    ffbase
------------------------

Each of them plays its own part:

  • ffbase provides base containers and algorithms
  • ffaudio provides audio I/O
  • ffos provides cross-platform abilities. Code based on ffos can run on Windows, Linux and FreeBSD.
  • avpack provides API for reading/writing audio-video container formats, e.g. ".mp4".
  • fmedia contains application code, it's largely based on all FF libraries.

BUG REPORT

If you encounter a bug, please report it: the more issues will be reported by users, the more stable fmedia will become. When filing a bug report try to provide information that can help us to fix the problem. Try to execute the same command once again, only this time add --debug switch, e.g.:

fmedia --debug OPTIONS INPUT_FILES...

It will print a lot of information about what fmedia is doing. This info or a screenshot would be very helpful.

HOMEPAGE

https://stsaz.github.io/fmedia/

fmedia's People

Contributors

alexqwesa avatar bovirus avatar brm-ryd avatar coruna avatar gustavofernando avatar ildarkamalov avatar itcmd avatar stsaz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fmedia's Issues

Minimal windows build?

Hi! and thanks for making this code available. I would like to build it on windows, and i only need the functionality to read audio from a line-in port. (o convert to LTC timecode, using third party code).

no UI needed, no playback needed, literally just connect to sound card and read the audio into buffer.

Would it be possible to manually build on windows for just this subset of features?

Thanks!

Cannot record both from playback and microphone

I can't understand how to both record speakers output and microphone input at the same time (e.g. a conversation on MS-Teams or Zoom).

These are my devices:

C:\Users\name.surname\Downloads>fmedia --record --dev-loopback=0 --dev-capture=0 -o rec.wav
fmedia v1.22 (win-x64)
Recording...  Source: float32 48000Hz stereo.  Press "s" to stop.
0:05  [..........] -40dB / -26.44dB  ^C
C:\Users\name.surname\Downloads>fmedia --list-dev
fmedia v1.22 (win-x64)
Playback/Loopback:
device #1: Altoparlanti (Realtek(R) Audio)
 Default Format: 2 channel, 48000 Hz
device #2: BenQ EW2480 (Intel(R) Display Audio)
 Default Format: 2 channel, 48000 Hz
device #3: Realtek HD Audio 2nd output (Realtek(R) Audio) - Default
 Default Format: 2 channel, 48000 Hz
Capture:
`device #1: External Mic (Realtek(R) Audio) - Default`
 Default Format: 2 channel, 48000 Hz
device #2: Microphone Array (Realtek(R) Audio)
 Default Format: 2 channel, 48000 Hz

Running fmedia as following does not record both sound sources (speakers and mic), but only speakers output:

C:\Users\name.surname\Downloads>fmedia --record --dev-loopback=0 --dev-capture=1 -o rec.wav

0 (default) loopback arg selects actually "device #1: Altoparlanti (Realtek(R) Audio)". I tried both 0 and 1 to capture mic but it keeps recording only my speakers output.
I'm on Windows 10 Enterprise (version 1909).

No hotkey for Mouse Whell for Vol Up/Down

First of all I would like to congrats with you for this amazing program.
I spent a lot of time to find the hotkeys table to set Mouse Whell as Vol Up/down command, but no way. I know this is not an issue, but it is the only way I could tell you, if there was a discord channel I used that.
Thanks man!

Let's translate help.txt!

Hello everyone!

In fmedia v1.9 I've added the support for localized text in help.txt, so when you execute fmedia or fmedia --help the help information can be displayed in your system language. Of course, currently there's only English. I hope that with your help we can translate it into other languages.

If you want to help fmedia - you can do it by translating help.txt file, even starting with a few lines.
Send me your translations by making a Pull Request (preferred way), post it here as a comment or directly by email.

Peaks in sound file after combining two .wav files

Hi again,

I was trying to use fmedia to attach one .wav file to another .wav file but when playing back the merged file I get a nasty short screech at the point where the first file ends and the new one begins. My assumption is that it´s the wav header that causes this behaviour but I am not sure how to effectively cut out the header.
I am currently feeding the 2 .wav files into the stdin as byte arrays and generate the new wav file with --out. Apart from the short screech its working fine.

Is there a more elegant way to use fmedia to attach one wav file to another that I am missing or do I have to figure out how to remove the header (if that is the problem here)

Code Snippet:
fun merge(sourceA: Snippet, sourceB: Snippet, sink: File): CompletableFuture {

    if (sourceA.isEmpty()) return CompletableFuture.completedFuture(sourceB)
    if (sourceB.isEmpty()) return CompletableFuture.completedFuture(sourceA)

    return CompletableFuture<Snippet>().also { done ->
        thread {
            val encoder = startFmedia("@stdin.wav", "--out=${sink.absolutePath}", "--overwrite")
            encoder.outputStream.use { output ->
                fun feedFile(file: File) {
                    val decoder = startFmedia(file.absolutePath, "[email protected]", "--notui")
                    decoder.inputStream.use { inputStream ->
                        val fedBytes = inputStream.copyTo(output)
                        output.flush()
                        Log.info("fed $fedBytes bytes to fmedia")
                    }
                }

                feedFile(sourceA.file)
                feedFile(sourceB.file)
            }
            encoder.waitFor()
            done.complete(Snippet.parse(sink))
        }
    }
}

Any suggestions would be appreciated.

Best Regards,
Simon

Ошибка при запуске fmedia-0.10-linux-amd64

При запуске выдает ошибку

$ fmedia --gui
/usr/local/bin/fmedia: 1: /usr/local/bin/fmedia: realpath: not found
dirname: пропущен операнд
По команде «dirname --help» можно получить дополнительную информацию.
/usr/local/bin/fmedia: 7: /usr/local/bin/fmedia: /fmedia-bin: not found

49e6 [error] core: unknown file format: when splitting a .flac file

marc@PET310S: sudo /usr/local/fmedia-1/fmedia '/data4/Media2/Renamed/Led Zeppelin/1 Studio/1982 Coda/1982 Led Zeppelin - Coda (2012 Japan Swan Song WPCR-14852)/Led Zeppelin - Coda' --cue-gaps=0 --out='/data4/Media2/Renamed/Led Zeppelin/1 Studio/1982 Coda/1982 Led Zeppelin - Coda (2012 Japan Swan Song WPCR-14852)/$tracknumber $artist - $title.flac'
[sudo] password for marc:
fmedia v1.3 (linux-amd64)
00:27:26.079 :49e6 [error] core: unknown file format:
00:27:26.079 :49e6 [error] core: module not found:
�������marc@PET310S:

The .cue file is attached as a .txt file.

Led Zeppelin - Coda.txt

Docker container

Would be great to have this in a docker container so that other containers can use it to convert audio files.

Unexpected list-dev results

getting unexpected results. Tried first as non-root, then as root:

$ fmedia --list-dev
fmedia v1.13 (linux-amd64)
10:38:08.736 :773 [error] (null): ffpulse_init(): Connection refused
[johny@myegg ~]$ su
Password: 
[root@myegg johny]# fmedia --list-dev
fmedia v1.13 (linux-amd64)
XDG_RUNTIME_DIR (/run/user/1000) is not owned by us (uid 0), but by uid 1000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
10:38:18.269 :778 [error] (null): ffpulse_init(): Connection refused

help_fr

Hello stsaz,
Thanks for fmedia, I use it everyday :)
Find attached a help_fr translation. Not perfect, but pretty accurate.
Use it or trash it, I don't care :)

help_fr.txt

Recording is destroyed if stop when paused

If you --globcmd=pause and then --globcmd=stop, the recording gets destroyed.

Steps to reproduce:

  1. C:\Portable\fmedia\fmedia.exe --record -o D:\Capture\REC\audiofile.wav --dev-loopback=0 --format=int16 --channels=stereo --rate=44100 --globcmd=listen
  2. C:\Portable\fmedia\fmedia.exe --globcmd=pause
  3. C:\Portable\fmedia\fmedia.exe --globcmd=stop

Crossing my fingers this is not impossible to fix ...

Is -i supposed to write to the errorStream?

Hi there,

recently started to use fmedia and was trying to read out the output of -i via the outputStream but only received empty strings... Eventually got the output by reading the errorStream. Is there a particular reason that -i sends data over the errorStream or would it be possible to output the data via the outputSteam?

Code that worked for me:
val process = startFmedia(source.absolutePath, "-i")
process.waitFor()
val infos = process.errorStream.bufferedReader().readText().split(", ")

Best Regards,
Simon

Need help with compilation for Fedora 18 i386

Hello,

the precompiled binary doesn't work for me, because it looks like it has been compiled on a system with newer version of the C library. System update is not an option for, because I intend to use fmedia on an OLPC, for which the last OS version is Fedora 18.

I am trying to compile the supporting libraries from here

https://github.com/stsaz/ff-3pt

but I get "No rule to make target"

What parameters should I use with the "make" command exactly?

Space in names in .cue file contents causes odd behaviour

If files are renamed, they play normally.

Command:
marc@PET310S:~$ sudo /usr/local/fmedia-1/fmedia '/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).cue' --cue-gaps=0 --out='/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/$tracknumber $artist - $title.flac'

Flies produced (all files in directory listed):
.
├── [ 9222645] 01 The Beatles - Can't Buy Me Love
├── [ 6396727] 02 The Beatles - Do You Want To Know A Secret\177.flac
├── [ 7655226] 03 The Beatles - Thank You Girl
├── [ 6477906] 04 The Beatles - A Taste Of Honey\001.flac
├── [ 8904241] 05 The Beatles - It Won't Be Long\002.flac
├── [ 7906696] 06 The Beatles - I Wanna Be Your Man
├── [ 6426261] 07 The Beatles - There's A Place\010.flac
├── [ 11113128] 08 The Beatles - Roll Over Beethoven\12423442515\11416641475\10422257503\11125047105\10120644506\11623644524䌽
├── [ 6556186] 09 The Beatles - Misery
├── [ 8525433] 10 The Beatles - Boys
├── [ 9991433] 11 The Beatles - Devil In Her Heart).flac
├── [ 8646589] 12 The Beatles - Not A Second Time\002.flac
├── [ 11037221] 13 The Beatles - Money
├── [ 7329459] 14 The Beatles - Till There Was You
├── [ 1642821] booklet01.jpg
├── [ 1705512] booklet02.jpg
├── [ 899139] CD.jpg
├── [ 3389623] front.jpg
├── [ 0] list.txt
├── [ 275190] obi.jpg
├── [ 1607585] rear.jpg
├── [ 1633] The Beatles - The Beatles Second Album (UICY-76430).cue
├── [ 115983517] The Beatles - The Beatles Second Album (UICY-76430).flac
└── [ 400] Tracks.txt

241694597 bytes used in 0 directories, 24 files

Cue file contents:
REM GENRE Rock
REM DATE 2014
REM DISCID AD076C0E
REM COMMENT "ExactAudioCopy v1.0b3"
PERFORMER "The Beatles"
TITLE "The Beatles Second Album (UICY-76430)"
FILE "The Beatles - The Beatles Second Album (UICY-76430).flac" WAVE
TRACK 01 AUDIO
TITLE "Can't Buy Me Love "
PERFORMER "The Beatles"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "Do You Want To Know A Secret "
PERFORMER "The Beatles"
INDEX 01 02:17:60
TRACK 03 AUDIO
TITLE "Thank You Girl "
PERFORMER "The Beatles"
INDEX 01 04:19:02
TRACK 04 AUDIO
TITLE "A Taste Of Honey "
PERFORMER "The Beatles"
INDEX 01 06:22:56
TRACK 05 AUDIO
TITLE "It Won't Be Long "
PERFORMER "The Beatles"
INDEX 01 08:29:08
TRACK 06 AUDIO
TITLE "I Wanna Be Your Man "
PERFORMER "The Beatles"
INDEX 01 10:44:01
TRACK 07 AUDIO
TITLE "There's A Place "
PERFORMER "The Beatles"
INDEX 01 12:44:41
TRACK 08 AUDIO
TITLE "Roll Over Beethoven "
PERFORMER "The Beatles"
INDEX 01 14:38:44
TRACK 09 AUDIO
TITLE "Misery "
PERFORMER "The Beatles"
INDEX 01 17:27:53
TRACK 10 AUDIO
TITLE "Boys "
PERFORMER "The Beatles"
INDEX 01 19:20:32
TRACK 11 AUDIO
TITLE "Devil In Her Heart "
PERFORMER "The Beatles"
INDEX 01 21:49:62
TRACK 12 AUDIO
TITLE "Not A Second Time "
PERFORMER "The Beatles"
INDEX 01 24:19:58
TRACK 13 AUDIO
TITLE "Money "
PERFORMER "The Beatles"
INDEX 01 26:32:10
TRACK 14 AUDIO
TITLE "Till There Was You "
PERFORMER "The Beatles"
INDEX 01 29:19:08

support .ts format

Добрый день.
Хотел сказать спасибо за плеер.. Хотел спросить

  1. Как использовать через прокси ваш плеер?
  2. Как прописать юзер агент чтобы слушать онлайн радио?
    можете проверить эту ссылку радио вещает aac+ формате aacplus
    Пример с сайта fmplay.ru
    http://109.239.129.43:8000/eldoradio-48.aac я не смог на вашем плеер проиграть эту ссылку..

AIMP читает этот формат там надо прописать юзерагент FMPLAYRU оно читает без проблем..

Было бы здорово если ваш плеер тоже поддерживал этот формат и прокси а юзерагент я несмог настроит

Заранее благодарен

Creating an Arch Linux PKGBUILD

Following on from stsaz/ff-3pt#1 in the correct project;

Might you have a programmatic method of reproducing the build?

I was looking to create an Arch Linux PKGBUILD for fmedia. From a general perspective, a vcs (rather than bin) PKGBUILD is easier because the package version can be taken automatically from the git repo (on install), where as bin PKGBUILDs need to be manually updated by the maintainer (or edited by the user) for each new release.

But if you're not building for the latest versions of libraries (targeted by rolling release distros), might you be using distro source packages? Arch might have source or bin versions (mostly in the AUR) available that sometimes relate to other distros or such.

Might the use of git submodules to retrieving library code be something you would be interested in? It could be done recursively from the fmedia repo.

Here's my initial PKGBUILD without moving/patching, just went through with the specific versions, I'll come back to that over the next few days. Already I noticed flac dep. matches the Arch Extra repos version so the source could be copied. I might make a binary version too, for kicks/experience.

Несколько моментов по оформлению

  1. При выходе не сохраняются настройки выбора темы и ширина колонок. После рестарта эти параметры становятся по-умолчанию. Выбор темы пофиксил, вручную отредактировав fmedia.conf - поставил 1 вместо 0 рядом с параметром theme в разделе # Set theme index on startup. Параметры ширины колонок не нашел.
  2. При выборе темы Dark цвет курсора в плэйлисте почти совпадал с цветом текста названия трека, из-за чего текст под курсором был невиден. Пофиксил, отредактировав параметры цветов фона и шрифта в theme.conf. Но пришлось ставить вынужденный цвет текста, а не тот, который хотелось бы. Было бы неплохо добавить и редактирование цвета курсора.

    Это всё было под Windows 7 x64.

Linux GUI?

Might this be a possibility some day?

Won't run on RHEL 7.5 and won't compile

Hi,
I'm trying to get this going on a RHEL 7.5 system I have and it won't run, It appears that you've dynamically compiled the binary releases (specifically the amd64 release) which is linking against a newer glibc.

vis@kenny:~/fmedia/fmedia-1$ ./fmedia test.flac --out test.mp3 fmedia v1.0 (linux-amd64) 15:41:34.113 [error] core: module /home/vis/fmedia/fmedia-1/mod/mpeg.so: library open: libmvec.so.1: cannot open shared object file: No such file or directory 15:41:34.113 [error] core: parse config: /nfs/hal/home/vis/fmedia/fmedia-1/fmedia.conf: 221:25: near "": "mod_conf": Success
libmvec arrived in glibc 2.2 and RHEL 7.5 runs with 2.1

Request: --globcmd=pause|resume

I hope I'm not mistaken, but this is currently not possible, right? If not, I'd find it really useful (I use fmedia to sample my system, toggling it on/off via AutoHotkey and instead of recording multiple files, I'd rather have the option for pausing current rec).

Long, high sample rate recording crashing after ~1h35min

Hi!

I'm using fmedia to programatically record from an ultrasound microphone for long periods at a time, and twice in a row the program crashed and deleted the output file after ~1h35min. Slightly shorter recordings (like 1h29min) saved properly without any issue.

I'm recording in .wav format, 384 kHz sampling rate, 16 bit, mono.

Please find attached the output of the --debug option from around the time of the crash to the end of the output. Could it be some kind of integer or long overflow? I'm particularly suspicious of the file write offset position since it seems to crash when the offset becomes larger than +2147483647 (INT_MAX).

Thank you!
Luciano
error-debug.txt

Fmedia v1.3 won't split large .flac files when there's an apostrophe in the path

Apostrophe in folder name or/and file name makes split command hang. Path was enclosed in single quotes.
Example:
marc@PET310S:~$ sudo /usr/local/fmedia-1/fmedia '/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles' Second Album/The Beatles - The Beatles' Second Album (UICY-76430).cue' --cue-gaps=0 --out='/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles' Second Album/$tracknumber $artist - $title.flac'

Renamed to remove apostrophe from folder name:
marc@PET310S:~$ sudo /usr/local/fmedia-1/fmedia '/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles' Second Album (UICY-76430).cue' --cue-gaps=0 --out='/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/$tracknumber $artist - $title.flac'
bash: syntax error near unexpected token `('

Renamed to remove apostrophe from folder name and .cue and .flac file names:
marc@PET310S:~$ sudo /usr/local/fmedia-1/fmedia '/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).cue' --cue-gaps=0 --out='/data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/$tracknumber $artist - $title.flac'
[sudo] password for marc:
fmedia v1.3 (linux-amd64)

#1 "The Beatles - Can't Buy Me Love " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:17.800 (6,076,980 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:17 / 2:17
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/01 The Beatles - Can't Buy Me Love.flac, 9006 kbytes

#2 "The Beatles - Do You Want To Know A Secret " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:01.226 (5,346,096 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:01 / 2:01
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/02 The Beatles - Do You Want To Know A Secret.flac, 6246 kbytes

#3 "The Beatles - Thank You Girl " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:03.720 (5,456,052 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:03 / 2:03
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/03 The Beatles - Thank You Girl.flac, 7475 kbytes

#4 "The Beatles - A Taste Of Honey " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:06.360 (5,572,476 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:06 / 2:06
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/04 The Beatles - A Taste Of Honey�.flac, 6326 kbytes

#5 "The Beatles - It Won't Be Long " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:14.906 (5,949,384 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:14 / 2:14
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/05 The Beatles - It Won't Be Long�.flac, 8695 kbytes

#6 "The Beatles - I Wanna Be Your Man " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:00.533 (5,315,520 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:00 / 2:00
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/06 The Beatles - I Wanna Be Your Man.flac, 7721 kbytes

#7 "The Beatles - There's A Place " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 1:54.040 (5,029,164 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 1:54 / 1:54
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/07 The Beatles - There's A Plac.flac, 6275 kbytes

#8 "The Beatles - Roll Over Beethoven " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:49.120 (7,458,192 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:49 / 2:49
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/08 The Beatles - Roll Over Beethoven�.flac, 10852 kbytes

#9 "The Beatles - Misery " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 1:52.720 (4,970,952 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 1:52 / 1:52
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/09 The Beatles - Misery.flac, 6402 kbytes

#10 "The Beatles - Boys " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:29.400 (6,588,540 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:29 / 2:29
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/10 The Beatles - Boys.flac, 8325 kbytes

#11 "The Beatles - Devil In Her Heart " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:29.946 (6,612,648 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:29 / 2:29
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/11 The Beatles - Devil In Her Heart).flac, 9757 kbytes

#12 "The Beatles - Not A Second Time " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:12.360 (5,837,076 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:12 / 2:12
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/12 The Beatles - Not A Second Time�.flac, 8443 kbytes

#13 "The Beatles - Money " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:46.973 (7,363,524 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:46 / 2:46
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/13 The Beatles - Money.flac, 10778 kbytes

#14 "The Beatles - Till There Was You " /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/The Beatles - The Beatles Second Album (UICY-76430).flac 110.61 MB, 2:21.293 (6,231,036 samples), 488 kbps, FLAC, 44100 Hz, int16, stereo

[=====================================================================.] 2:21 / 2:21
saved file /data4/The Beatles (split single file) backup/4 Box Sets/2014 Meet The Beatles! - Japan Box/02 The Beatles Second Album/14 The Beatles - Till There Was You.flac, 7157 kbytes
�������marc@PET310S:~$

Падение при попытке воспроизведения файла в Windows

OS: Windows 10

D:\fmedia>fmedia --debug --dev=5 ../Sounds/Hello.wav
fmedia v0.29
00:00:27.105 debug core: received signal: 1
00:00:27.105 debug core: reading config file D:\fmedia\fmedia.conf
00:00:27.105 debug core: loading module net.dll
00:00:27.112 debug core: loading module mixer.dll
00:00:27.117 debug core: loading module soxr.dll
00:00:27.128 debug core: loading module plist.dll
00:00:27.134 debug core: loading module tui.dll
00:00:27.139 debug core: loading module mp4.dll
00:00:27.145 debug core: loading module avi.dll
00:00:27.151 debug core: loading module mkv.dll
00:00:27.156 debug core: loading module ogg.dll
00:00:27.162 debug core: loading module wav.dll
00:00:27.167 debug core: loading module mpeg.dll
00:00:27.179 debug core: loading module mpc.dll
00:00:27.190 debug core: loading module vorbis.dll
00:00:27.206 debug core: loading module opus.dll
00:00:27.218 debug core: loading module flac.dll
00:00:27.229 debug core: loading module alac.dll
00:00:27.241 debug core: loading module aac.dll
00:00:27.252 debug core: loading module wavpack.dll
00:00:27.263 debug core: loading module ape.dll
00:00:27.276 debug core: loading module wasapi.dll
00:00:27.282 debug core: received signal: 2
00:00:27.282 debug que: received command:que-new, param:00000000
00:00:27.282 debug que: received command:que-sel, param:00000000
00:00:27.282 debug core: task:0078ff68, cmd:1, active:0, handler:00402e70, param:00000000
00:00:27.283 debug core: received signal: 3
00:00:27.283 debug que: received command:add, param:0062f530
00:00:27.283 debug que: added: (0: 0-0) ../Sounds/Hello.wav
00:00:27.283 debug que: received command:meta-set, param:007b28c0
00:00:27.283 debug que: received command:play, param:007b28c0
00:00:27.283 debug track: *1:   setval: input = ../Sounds/Hello.wav
00:00:27.284 debug track: *1:   setval: playdev_name = 5
00:00:27.284 debug track: *1:   setval: queue_item = 8071360
00:00:27.284 debug track: received command:4, trk:007b3a90
00:00:27.284 debug track: *1:   chain: #queue.track -> #file.in -> wav.in -> #soundmod.until -> tui.tui -> #soundmod.gain -> #soundmod.conv -> wasapi.out
00:00:27.284 debug track: *1:   properties: e0de8e610000000080c08d6100000000903a7b0000000000000000000000000000cf8e61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000cf8e6100000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000
00:00:27.284 debug track: *1:   creating context for #queue.track...
00:00:27.284 debug track: *1:   context for #queue.track created
00:00:27.285 debug track: *1:   creating context for #file.in...
00:00:27.326 debug file: *1:    opened ../Sounds/Hello.wav (37 kbytes)
00:00:27.326 debug track: *1:   context for #file.in created
00:00:27.326 debug file: *1:    buf#0: async read, offset:0
00:00:27.326 debug file: *1:    buf#0: read 38766 bytes at offset 0
00:00:27.327 debug file: *1:    reading's done
00:00:27.327 debug file: *1:    returning buf#0  offset:0  seek:0
00:00:27.327 debug track: *1:   creating context for wav.in...
00:00:27.327 debug track: *1:   context for wav.in created
00:00:27.327 debug track: *1:   creating context for #soundmod.until...
00:00:27.327 debug track: *1:   #soundmod.until is skipped
00:00:27.327 debug track: *1:   creating context for tui.tui...
00:00:27.328 debug track: *1:   context for tui.tui created

" - " ../Sounds/Hello.wav 0.04 MB, 0:00.878 (19,360 samples), 353 kbps, WAVE, 22050 Hz, int16, mono

[......................................................................] 0:00 / 0:0000:00:27.328 debug tui.tui: *1:
samples: +19360 [19360] at 0
00:00:27.328 debug track: *1:   creating context for #soundmod.gain...
00:00:27.328 debug track: *1:   context for #soundmod.gain created
00:00:27.328 debug track: *1:   creating context for #soundmod.conv...
00:00:27.329 debug track: *1:   context for #soundmod.conv created
00:00:27.329 debug track: *1:   creating context for wasapi.out...
00:00:27.329 debug track: *1:   context for wasapi.out created
00:00:27.331 debug wasapi.out: *1:      opening device #5, fmt:int16/22050/1, excl:0
00:00:27.336 debug track: *1:   added module soxr.conv to chain
00:00:27.336 debug conv: *1:    PCM conversion: int16/1/22050/i -> float32/2/22050/ni
00:00:27.336 debug track: *1:   creating context for soxr.conv...
00:00:27.336 debug track: *1:   context for soxr.conv created
00:00:27.337 debug soxr: *1:    PCM conversion: float32/2/22050/ni -> int16/2/96000/i
00:00:27.339 debug wasapi.out: *1:      opening device #5, fmt:int16/96000/2, excl:0
00:00:27.348 debug core: timer:0078bff0  interval:125  handler:6abc14c0  param:007a8110
00:00:27.348 debug core: started kernel timer  interval:125
00:00:27.348 debug wasapi: *1:  opened buffer 500ms, 96000Hz, excl:0
00:00:27.348 debug wasapi: *1:  written 177408 bytes (92% filled)
00:00:27.349 debug wasapi: *1:  written 14592 bytes (100% filled)
00:00:27.473 debug wasapi: *1:  written 57600 bytes (100% filled)
00:00:27.598 debug wasapi: *1:  written 46080 bytes (100% filled)
00:00:27.723 debug wasapi: *1:  written 27456 bytes (88% filled)
00:00:27.723 debug tui.tui: *1: samples: +0 [19360] at 0

00:00:27.724 debug wasapi: *1:  written 14016 bytes (95% filled)
00:00:28.225 debug track: *1:   closing...
00:00:28.225 debug core: timer:0078bff0  interval:0  handler:6abc14c0  param:007a8110
00:00:28.225 debug core: stopped kernel timer
00:00:28.226 debug core: task:007a8140, cmd:0, active:0, handler:618dc080, param:007b3a90
00:00:28.226 debug que: no next file in playlist
00:00:28.226 debug track: received command:10, trk:00000000
00:00:28.226 debug core: received signal: 4
00:00:28.227 debug track: *1:   time: 0.066669.  #queue.track: 0.000316 (0%), #file.in: 0.041493 (62%), wav.in: 0.000337 (0%), #soundmod.until: 0.000000 (0%), tui.tui: 0.001274 (1%), #soundmod.gain: 0.000321 (0%), #soundmod.conv: 0.000672 (1%), wasapi.out: 0.018755 (28%), soxr.conv: 0.003501 (5%)
00:00:28.227 debug track: *1:   closed
00:00:28.227 debug track: received command:8, trk:00000000
00:00:28.227 debug core: task:007b19b0, cmd:0, active:0, handler:618ca0d0, param:00000000

Звук воспроизводится, приложение зависает, и через примерно 5 секунд ошибка Windows:

Имя сбойного приложения: fmedia.exe, версия: 0.29.0.0, метка времени: 0x011cbd40
Имя сбойного модуля: ntdll.dll, версия: 10.0.15063.447, метка времени: 0xa329d3a8
Код исключения: 0xc0000374
Смещение ошибки: 0x00000000000f775f
Идентификатор сбойного процесса: 0x6bc
Время запуска сбойного приложения: 0x01d32a73a09976a4
Путь сбойного приложения: D:\fmedia\fmedia.exe
Путь сбойного модуля: C:\Windows\SYSTEM32\ntdll.dll
Идентификатор отчета: 98845f19-6a3e-42f0-ae76-1bf0820552d8
Полное имя сбойного пакета: 
Код приложения, связанного со сбойным пакетом: 

Возможно мне не хватает какого-то фреймворка/библиотеки?

latency when directiong audio to stdout

Hi folks,

First of all, great thanks to all who are involved in the development of fmedia. It really reduces the pain of having to deal with different kinds of audio sources across multiple platforms.

I am currently trying to capture audio from mic using the option "[email protected]". It works good, except that the latency is a bit high. It seems the output is only dumped every 2 sec or so. Is there a way to set this small (like 100ms) ?

Best Regards
.

Using --channels results in high pitched jittering recording

Hi again,

when recording I was trying to use the --channels:mono command, unfortunately resulting in a jittery and high pitched recording.
Code that works fine:
val process = startFmedia( "--record", "--dev-capture=${index}", "--out=${sink.absolutePath}", "--overwrite", "--mpeg-quality=256" )

As soon as I use --channels though (all 3 options have the same problem) the sound becomes weird.
val process = startFmedia( "--record", "--dev-capture=${index}", "--out=${sink.absolutePath}", "--overwrite", "--mpeg-quality=256", "--channels=mono" )

Maybe I don´t understand how to use it properly, any help would be appreciated.

Best Regards,
Simon

Исчезает плейлист

Заметил один неприятный баг. Настругал штук сорок композиций в плейлист. И постоянно его слушаю. И очень часто этот плейлист исчезает. Я даже не знаю, при каких именно обстоятельствах он исчезает. Вот раз... открываешь плеер, а там, в плейлисте, пусто. Благо, что я сохраняю плейлист и вставляю его в пустое поле. Система Win 7 x64.

Make record buffer adjustable from the command line

It seems to me that, when recording using fmedia, the recorded data is written to the output file or stream once an internal buffer of 2^16 bytes is full. It would be nice if one is able to speficy this buffer size from the command line.

Using arecord one can specify a buffer time or a buffer size.

Possibility to start audio file at specific time

Hi again,

for my project it would be very helpful to be able to read out at which point in the file fmedia currently is while playing an AudioFile, timestamp in ms or sample count etc.
I managed to get the current samples count using --debug and looking for the tui.tui:
13:02:07.917 [debug] tui.tui: *1: samples: +1152 [483840] at 482688
I think there is a more convenient way since you are able in your tui to display the current timestamp, unfortunately I didn´t figure out how to read that out of fmedia.

Any help would be appreciated. Thanks a lot.

Best Regards,
Simon

How to use Core.dll directly?

Hi,
I want to use Core.dll directly via Delphi and I expected to see a group of functions available from the dll, but I see only

core_free
core_init

I am opening an "issue" here as a last resort........

I tried in vain to find an example of any usage via any language using Google,.....can someone point me to at least a basic tutorial?

Thanks,
Mark

Stop All instruction?

Hi. First, hats off for a great project!

I'd like to be able to use fmedia as a faceless player for audio files in my filesystem (Windows 10). I'm using Directory Opus as my file manager, and there I can create buttons and keyboard shortcuts that can operate and run commands on selected files.

Is it already possible to tell the running process to just stop all audio playback and exit? Also, maybe there's a need to add a flag for -single-instance mode so that such a command would know which PID to terminate? (I'm not a coder, so that's just a speculation.)

Digital Output Yamaha Mixer MG16XU

Hello Stsaz,

I have tested fmedia in our Church computer, it is working well with analog output, but didn't work with digital usb output from Yamaha Mixer MG16XU, can not capture the sound.

At the moment, we are using Reaper to do sermon recording, but we'd love if we could do it using fmedia, which is very light but same target result.

Could you please kindly help to add capability to record from Yamaha Mixer MG series?

Thank you in advance.

How do I specify specific audio device (capture) from commandline?

Since you can specify audio device (capture) in the GUI app, I assume it's also possible in the commandline version, right?

Here's what I got so far (does this use the 'default' sound device?) :
fmedia --record -o rec.wav --format=int16 --channels=stereo --rate=44100

If possible, how do I include a specific audio device in this command? Mine's called "SPDIF (RME HDSPe AIO)". The documentation didn't describe this, or maybe I'm blind.

USB Mic?

Any special command required to accept input from a USB microphone?
thx

fmedia CLI - Show Buffer Progress in CLI

Please consider showing the buffer point on CLI progress bars (playback).

Maybe an opt-in setting (isShowBufferInProgress):
= for played
. for unplayed
_ for buffer

e.g

[=============______........................]

How do I terminate the process correctly to prevent invalid wav header?

I've made a working script in AutoHotkey to toggle recording sound via fmedia.exe. After killing fmedia.exe and opening my recording in WaveLab, it says the wav header is invalid. This won't happen if I run fmedia in a console and exit with CTRL-C. (The same broken wav header occurs in ffmpeg, if I kill the process. However, if ffmpeg is quit by CTRL-C it says "Exiting normally, received signal 2", which seems like a good clue to my issue. Basically, I want my command to be run hidden (no console) and preferably I want to programmatically send fmedia a signal to stop what it's doing and exit, with a good interrupt signal like SIGINT.

Here's my draft AutoHotkey script that toggles recording to a date-formated file:

F1::
t_SoundRec := !t_SoundRec
if (t_SoundRec = 1)
{
    ; Start recording
    FormatTime, CurrentDateTime,, yyyyMMddHHmmss
    Run, C:\Portable\fmedia\fmedia.exe --record -o D:\Dropbox\Audio\REC\%CurrentDateTime%.wav --format=int16 --channels=stereo --rate=44100, , Hide
    return
}
else
{
    ; Stop recording
    Process, Close, fmedia.exe
    return
}
return

Ошибка компиляции git версии

При попытке скомпилировать:

maksim@animal ~ $ mkdir firmdev && cd firmdev
maksim@animal ~/firmdev $ git clone https://github.com/stsaz/ffos
Cloning into 'ffos'...
remote: Counting objects: 635, done.
remote: Total 635 (delta 0), reused 0 (delta 0), pack-reused 635
Receiving objects: 100% (635/635), 125.18 KiB | 0 bytes/s, done.
Resolving deltas: 100% (486/486), done.
Checking connectivity... готово.
maksim@animal ~/firmdev $ git clone https://github.com/stsaz/ff
Cloning into 'ff'...
remote: Counting objects: 1579, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 1579 (delta 2), reused 1 (delta 1), pack-reused 1576
Receiving objects: 100% (1579/1579), 424.01 KiB | 299.00 KiB/s, done.
Resolving deltas: 100% (1203/1203), done.
Checking connectivity... готово.
maksim@animal ~/firmdev $ wget http://firmdev.com/ff-3pt.tar.xz
--2016-03-27 02:37:29--  http://firmdev.com/ff-3pt.tar.xz
Распознаётся firmdev.com (firmdev.com)… 209.99.16.94
Подключение к firmdev.com (firmdev.com)|209.99.16.94|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 3972508 (3,8M) [application/x-xz]
Сохранение в: «ff-3pt.tar.xz»

100%[======================================>] 3.972.508    685KB/s   за 6,2s   

2016-03-27 02:37:37 (630 KB/s) - «ff-3pt.tar.xz» сохранён [3972508/3972508]

maksim@animal ~/firmdev $ tar Jxf ff-3pt.tar.xz
maksim@animal ~/firmdev $ git clone https://github.com/stsaz/fmedia
Cloning into 'fmedia'...
remote: Counting objects: 1262, done.
remote: Total 1262 (delta 0), reused 0 (delta 0), pack-reused 1262
Receiving objects: 100% (1262/1262), 281.91 KiB | 241.00 KiB/s, done.
Resolving deltas: 100% (973/973), done.
Checking connectivity... готово.
maksim@animal ~/firmdev $ cd fmedia
maksim@animal ~/firmdev/fmedia $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../ff-3pt/linux-amd64
maksim@animal ~/firmdev/fmedia $ make install
mkdir -p ./ff-obj
gcc -fpic -DFF_OLDLIBC -O2 -g -ffunction-sections -fdata-sections  -fvisibility=hidden -c -Werror -Wall -Wextra -Wno-unused-parameter -pthread -I../ff -I../ff-3pt -I../ffos  ../ffos/FFOS/ffos.c -off-obj/ffos.o
In file included from ../ffos/FFOS/types.h:24:0,
                 from ../ffos/FFOS/file.h:8,
                 from ../ffos/FFOS/ffos.c:5:
../ffos/FFOS/unix/types.h:12:22: fatal error: byteswap.h: Нет такого файла или каталога
 #include <byteswap.h>
                      ^
compilation terminated.
make: *** [ff-obj/ffos.o] Ошибка 1

Notification icon for recording?

Hi, I'm not sure if you're willing to implement an option to show a simple icon (eg. mic) when recording audio with fmedia? That would be very handy.

If not, I'm trying to figure out how to code the simplest solution for this as ever possible: just an app that shows an icon when active, and when quit, the icon disappears. Shouldn't be too difficult, I guess. Problem is I know nothing about desktop development for Windows. Do you have any suggestion where to start? (I've downloaded latest Visual Studio.)

WASAPI samplerate by track

Hi I test your sw on windows and seems play only same files as setup in control panel.
Please add switching samplerate to code to same as file played. Now show err

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.