52 lines
1.8 KiB
Markdown
52 lines
1.8 KiB
Markdown
# dbus-soundrecorder
|
|
Records sound from Pulse Audio with ffmpeg while watching D-Bus to
|
|
determine tracks, song title, album, artist and other meta data
|
|
provided by the media player application via MPRIS D-Bus service.
|
|
|
|
When the next song starts, the recorder automatically starts recording
|
|
a new file and sets available meta data.
|
|
|
|
## Usage
|
|
```
|
|
dbus-soundrecorder record [options]
|
|
```
|
|
|
|
Here a simple example. First, get a list of your Pulse Audio sinks:
|
|
```
|
|
pactl list short sinks
|
|
```
|
|
|
|
You can also create a new virtual Pulse Audio sink:
|
|
```
|
|
pactl load-module module-null-sink sink_name=virtual1
|
|
```
|
|
In any case, you should ensure that the media player uses the sink (eg. using pavucontrol).
|
|
|
|
Then start the recorder. You need to specify the media player application and the sink:
|
|
```
|
|
dbus-soundrecorder record -a vlc -s virtual1.monitor -i "-sample_rate 44100" -o "-c:a libfdk_aac -vbr 4"
|
|
```
|
|
As you can see, it is also possible to specify options for ffmpeg. Input options can be specified
|
|
with *-i* and output options like audio codec and quality with *-o*.
|
|
|
|
However, input sink, output file and meta-data are provided by the recorder and shouldn't be specified.
|
|
|
|
For all available options, use the --help command.
|
|
|
|
After starting the recorder, start playing the songs you want to record. The recorder
|
|
should start ffmpeg automatically.
|
|
|
|
## Troubleshooting
|
|
* If you get *error, non monotone timestamps* and/or *This may result in incorrect timestamps in the output
|
|
file.*, try to add *-wallclock 0* to the ffmpeg input options.
|
|
|
|
## Build instructions
|
|
The application depends on the c++utilities library. It is built in the same way as c++utilities.
|
|
|
|
The following Qt modules are required (version 5.6 or higher): core dbus
|
|
|
|
## Copyright notice and license
|
|
Copyright © 2015-2022 Marius Kittler
|
|
|
|
All code is licensed under [GPL-2-or-later](LICENSE).
|