rtpengine-recording(8) | NGCP rtpengine-recording | rtpengine-recording(8) |
NAME¶
rtpengine-recording - media recording daemon for Sipwise rtpengine
SYNOPSIS¶
rtpengine-recording [option...]
DESCRIPTION¶
The Sipwise rtpengine media proxy has support for exporting media (RTP) packets that it forwards. The rtpengine-recording daemon collects these exported packets and decodes them into an audio format that can be listened to.
OPTIONS¶
All options can (and should) be provided in a config file instead of at the command line. See the --config-file option below for details.
If no options are given, then default values are assumed, which should be sufficient for a standard installation of rtpengine.
- •
- --help
Print the usage information.
- •
- -v, --version
If called with this option, the rtpengine-recording daemon will simply print its version number and exit.
- •
- --config-file=FILE
Specifies the location of a config file to be used. The config file is an .ini style config file, with all command-line options listed here also being valid options in the config file. For all command-line options, the long name version instead of the single-character version (e.g. table instead of just t) must be used in the config file. For boolean options that are either present or not (e.g. output-mixed), a boolean value (either true or false) must be used in the config file. If an option is given in both the config file and at the command line, the command-line value overrides the value from the config file.
As a special value, none can be passed here to suppress loading of the default config file.
- •
- --config-section=STRING
Specifies the .ini style section to be used in the config file. Multiple sections can be present in the config file, but only one can be used at a time. The default value is rtpengine-recording. A config file section is started in the config file using square brackets (e.g. [rtpengine-recording]).
- •
- -L, --log-level=INT
Takes an integer as argument and controls the highest log level which will be sent to syslog. The log levels correspond to the ones found in the syslog(3) man page. The default value is 6, equivalent to LOG_INFO. The highest possible value is 7 (LOG_DEBUG) which will log everything.
- •
- --log-facilty=daemon|local0|...|local7|...
The syslog facilty to use when sending log messages to the syslog daemon. Defaults to daemon.
- •
- -E, --log-stderr
Log to stderr instead of syslog. Only useful in combination with --foreground.
- •
- --split-logs
Split multi-line log messages into individual log messages so that each line receives its own log line prefix.
- •
- --no-log-timestamps
Don’t add timestamps to log lines written to stderr. Only useful in combination with --log-stderr.
- •
- --log-mark-prefix=STRING
Prefix to be added to particular data fields in log files that are deemed sensitive and/or private information. Defaults to an empty string.
- •
- --log-mark-suffix=STRING
Suffix to be added to particular data fields in log files that are deemed sensitive and/or private information. Defaults to an empty string.
- •
- -p, --pidfile=FILE
Specifies a path and file name to write the daemon’s PID number to.
- •
- -f, --foreground
If given, prevents the daemon from daemonizing, meaning it will stay in the foreground. Useful for debugging.
- •
- -t, --table=INT
Takes an integer argument. The value must match the table option given to the rtpengine media proxy to use for in-kernel packet forwarding. Defaults to 0 if not specified.
- •
- --spool-dir=PATH
The path given here must match the recording-dir path given to the rtpengine media proxy. Defaults to /var/spool/rtpengine. The path must reside on a file system that supports the inotify mechanism.
- •
- --num-threads=INT
How many worker threads to launch. Defaults to the number of CPU cores available, or 8 if there are fewer than that or if the number is not known.
- •
- --thread-stack=INT
Set the stack size of each thread to the value given in kB. Defaults to 2048 kB. Can be set to -1 to leave the default provided by the OS unchanged.
- •
- --evs-lib-path=FILE
Points to the shared object file (.so) containing the reference implementation for the EVS codec. See the README for more details.
- •
- --output-storage=file|db|both
Where to store media files. By default, media files are written directly to the file system (see output-dir). They can also be stored as a BLOB in a MySQL database, either instead of, or in addition to, being written to the file system.
- •
- --output-dir=PATH
Path for media files to be written to if file output is enabled. Defaults to /var/lib/rtpengine-recording. The path must not be the same as used for the spool-dir.
- •
- --output-pattern=STRING
File name pattern to be used for recording files. The pattern can reference sub-directories. Parent directories will be created on demand. The default setting is %c-%r-%t.
The pattern must include printf-style format sequences. Supported format sequences are:
- •
- %%
A literal percent sign.
- •
- %c
The call ID. It is mandatory for the output pattern to include this format sequence.
- •
- %r
A random tag generated by rtpengine to distinguish possibly repeated or duplicated call IDs.
- •
- %t
The stream type. For single streams this is the SSRC written as hexadecimal; for mix stream this is the string mix. It is mandatory for the output pattern to include this format sequence.
- •
- %l
The label for the participating party as communicated from the controlling daemon.
- •
- %Y
- •
- %m
- •
- %d
- •
- %H
- •
- %M
- •
- %S
These format sequence reference the current system time (when the output file was created) and are the same as the format sequences supported by date(1) or strftime(3) (year, month, day, hours, minutes, and seconds, respectively).
- •
- %u
Microseconds, expanded to 6 digits (000000 through 999999).
- •
- %INT
References a prefix from the call ID of the given length. If this format sequence is present more than once, then the prefixes are cumulative. For example, if the call ID is abcdefgh and the output pattern is configured as %2/%3/%c, then the resulting output file name would be ab/cde/abcdefgh.
- •
- %{
Take the string between the enclosing opening and closing brace (between this { and the next }) and use it as a key to look up a corresponding value in the metadata string provided by rtpengine. The metadata string must be given as a pipe (|) separated list of key:value pairs, as described in the rtpengine documentation.
Example: If the metadata string is given as foo:bar|blah:baz and the pattern includes the format %{foo} then bar will be inserted into the file name at that position.
- •
- --output-format=wav|mp3|none
File format to be used for media files that are produced. Defaults to PCM WAV (RIFF) files. Applicable for both files stored on the file system and in a database. If none is selected then file output is disabled.
- •
- --resample-to=INT
Resample all audio to the given sample rate (e.g. 48000). Resampling is disabled by default, meaning that files will be written with the same sample rate as the source media.
- •
- --mp3-bitrate=INT
If MP3 output is selected, use the given bitrate for the MP3 encoder (e.g. 64000). There is no default value, so this option must be given if MP3 output is selected. Note that not all bitrates are valid in combinations with all sample rates. For MP3 output it’s therefore recommended to also set resample-to.
- •
- --output-mixed
- •
- --output-single
Whether to produce mixed audio files, or single audio files, or both. If neither option is given, then by default both are enabled. If no file output is desired, set output-format to none.
A single audio file contains the audio for a single RTP SSRC, which usually means an unidirectional audio stream. These are decoded directly from an RTP stream and do not take timestamping into account, meaning that gaps or pauses in the RTP stream are not reflected in the output audio file.
A mixed audio file consists of the first four RTP SSRC seen, mixed together into a single output file, which usually means that a bidirectional audio stream is produced. Audio mixing takes RTP timestamping into account, so gaps and pauses in the RTP media are reflected in the output audio to keep the multiple audio sources in sync.
- •
- --mix-method=direct|channels
Selects a method to mix multiple audio inputs into a single output file for mixed output. The default is direct which directly mixes all audio inputs together, producing a mixed output file with the same format as an audio file from a single input (output-single) would be.
The channels mixing method puts each audio input into its own audio channel in the output file, therefore producing a multi-channel output file. Up to four separate RTP SSRCs are supported for a mixed output, which means that if each input is mono audio, then the mixed output file would contain 4 audio channels. This mixing method requires an output file format which supports these kinds of multi-channel audio formats (e.g. wav).
- •
- --mix-num-inputs=INT
Change the number of recording channel in the output file. The value is between 1 to 4 (e.g. 4, which is also the default value).
- •
- --output-chmod=INT
Change the file permissions of recording files to the given mode. Must be given as an octal integer, for example 0660.
- •
- --output-chmod-dir=INT
Change the file permissions of recording files to the given mode. Must be given as an octal integer, for example 0700 (which is also the default value).
- •
- --output-chown=USER|UID
- •
- --output-chgrp=GROUP|GID
Change the ownership of recording files. Either user/group names or numeric IDs are supported. If the value is blank or given as -1 then the user/group is left unchanged.
- •
- --mysql-host=HOST|IP
- •
- --mysql-port=INT
- •
- --mysql-user=USERNAME
- •
- --mysql-pass=PASSWORD
- •
- --mysql-db=STRING
Configuration for a MySQL storage backend. Details about calls and media files that are produced are stored into the database. Optionally the media files themselves can be stored as well (see output-storage).
- •
- --forward-to=PATH
Forward raw RTP packets to a Unix socket. Disabled by default.
- •
- --tcp-send-to=IP:PORT
- •
- --tcp-resample=INT
- •
- --tls-send-to=IP:PORT
- •
- --tls-resample=INT
Send decoded audio over a TCP or TLS connection to the specified destination. Audio is sent as raw mono 16-bit PCM in the given sample rate.
Only one of these option combinations (TCP or TLS) can be active at the same time.
- •
- --notify-uri=URI
Enable HTTP notification about finished recordings to the specified URI, which must be an HTTP or HTTPS URI. Information about the finished recording is provided via custom HTTP headers, all of which use a prefix of X-Recording-.
- •
- --notify-post
Use HTTP POST instead of GET for the HTTP notification requests. The request body is empty even if POST is used.
- •
- --notify-no-verify
Disable TLS peer certificate verification for HTTPS requests.
- •
- --notify-concurrency=INT
The maximum number of HTTP requests to perform simultaneously.
- •
- --notify-retries=INT
How many times to retry a failed HTTP notification before giving up. An exponential falloff time is used for each subsequent attempt, starting with 5 seconds.
- •
- --notify-record
Attach recorded file to HTTP notification request. If enabled, notification request behaves as HTTP POST (ignoring --notify-post). Note that this option is incompatible with DB-only storage as no recording file exists on storage (see output-storage).
- •
- --notify-purge
Remove the local file if the HTTP request was successful. Note that this option is only useful if --notify-record is also enabled.
- •
- --output-mixed-per-media
Forces one channel per media instead of SSRC. Note that this option is only useful if --output-mixed is also enabled. # EXIT STATUS
- •
- 0
Successful termination.
- •
- 1
An error occurred.
FILES¶
- •
- /etc/rtpengine/rtpengine-recording.conf
Configuration file.
SEE ALSO¶
2025-01-22 | 12.5.1.22-1 |