MinimStreamer

Home

Installing

Release notes

User guide

Support

Forum

MinimServer

License

Contact

Latest news

(2021/09/02) Transcoding to 32-bit WAV is now supported.

Latest change

(2024/07/16) MinimStreamer 2.0.13 has been released

User guide

Table of contents

Starting MinimStreamer
Playing network streams with MinimStreamer
Technical details for playing network streams
Transcoding
Input type filters
Stream converter program
Flow control
Making recordings
Streaming options
Convolution filtering

Starting MinimStreamer

MinimStreamer is packaged as an optional extension to MinimServer. If you haven't already installed MinimServer and MinimStreamer, see the Installing MinimStreamer page for information about how to do this.

If you have installed MinimStreamer succesfully, MinimStreamer will be started automatically when you start MinimServer. You can check that MinimStreamer is running by looking at the System tab of the MinimServer properties dialog. If MinimStreamer is running, the properties stream.converter, stream.options, stream.record and stream.transcode will appear in the System tab.

Playing network streams with MinimStreamer

MinimServer supports network streams as http:// entries in .m3u playlist files. By default, the music player makes a direct connection to the network stream, which means the network stream isn't processed by MinimStreamer. To route a network stream via MinimStreamer so that the features provided by MinimStreamer can be used with the stream, the name of the stream must be specified in the .m3u playlist file using the special format

[id] name

where id is the stream ID and name is the stream name.

The stream ID can be any identifier of your choice or it can be specified as an asterisk (*). Including a stream ID in the playlist entry tells MinimServer to route the stream via MinimStreamer instead of having it go directly to the music player. The stream ID is also used to identify the stream for recording operations (see the Making recordings section). If the stream ID in the .m3u file is an asterisk or is the same as the stream ID of another stream, MinimServer will create a unique stream ID for the stream and will display this unique ID when you browse your library.

As an example, to route the Linn Radio Classical stream via MinimStreamer, you could use a .m3u playlist with the following contents:

#EXTM3U
#EXTINF:-1,[Linn] Linn Radio Classical
http://radio.linnrecords.com/cast/tunein.php/linnclassical/playlist.pls

When you view this stream in your control point, you will see an entry named [Linn] Linn Radio Classical that will route the network stream to your music player via MinimStreamer.

If you also want to be able to play the network stream directly to your music player without using MinimStreamer, you can specify a plus sign (+) before the stream ID. For example, if you specify the stream ID as [+Linn] instead of [Linn], this will display a second playlist entry named Linn Radio Classical that will route the network stream directly to your music player without using MinimStreamer.

Some UPnP control points and renderers are unable to play streams unless additional stream audio information is provided in the playlist entry. If you need to provide this audio information for your control point or renderer, you can use one of the following formats for the stream name:

[id;type] name
[id;type,samplerate] name
[id;type,samplerate,channels] name

where type is the stream type (mp3, aac, etc.), samplerate is the sample rate (default 44100 if omitted) and channels is the number of channels (default 2 if omitted).

Technical details for playing network streams

You can use MinimStreamer to play a network stream (such as an internet radio station) on a music player (UPnP renderer) that doesn't have native support for playing the stream.

If the network stream URL points to an M3U or PLS playlist file containing an audio stream URL or multiple alternative audio stream URLs (to provide redundancy in case one of the streams isn't working), MinimStreamer reads the playlist format, connects to the first working stream in the playlist and sends the audio data from this stream to the music player.

If the network stream uses the icecast protocol for embedding metadata (such as track title and artist information for the currently playing song), MinimStreamer removes this metadata and sends the audio data to the music player. This makes the stream playable on music players that don't support the icecast protocol.

If the network stream URL points to an MPEG-DASH .mpd file, MinimStreamer reads this file and uses the MPEG-DASH protocol to read the stream audio data and send it to the music player as a conventional HTTP stream. This makes the stream playable on music players that don't support the MPEG-DASH protocol. The audio data in the stream can be encoded in either AAC or FLAC format.

If the network stream URL points to an HLS .m3u8 master playlist or media playlist file, MinimStreamer reads this file and uses the HLS protocol to read the stream audio data and send it to the music player as a conventional HTTP stream. This makes the stream playable on music players that don't support the HLS protocol. The audio data in the stream must be encoded in AAC format.

The stream processing described in this section doesn't change the format of the audio data (for example, MP3, AAC or FLAC) in the stream. In addition to this processing, MinimStreamer can optionally transcode the audio data in the stream to a different audio format (for example, WAV) before sending it to the music player. See the Transcoding section for details of how to to do this.

To activate processing of a network stream by MinimStreamer with the features described in this section, the stream must be routed via MinimStreamer. See the previous section for details of how to do this.

Transcoding

To enable transcoding, you need to specify one or more transcoding combinations in the stream.transcode property. The format of each transcoding combination is the input type followed by a colon followed by the output type. The input type is the format of the file or network stream you are playing, and the output type is the audio format that MinimStreamer will send to your music player. For example, to transcode FLAC files to WAV output, you would use the transcoding setting flac:wav.

Note: Transcoding settings are encoded in resource URLs for files and network streams at the time that details of these files and streams are sent to the UPnP control point by MinimServer. This means that changing the stream.transcode property doesn't affect transcoding settings for any files or network streams whose details were sent to the control point before the stream.transcode property was changed. You can ensure that the current transcoding settings are applied to these files and streams by reloading the control point's playing queue and refreshing the library container currently being browsed.

You can specify multiple transcoding settings separated by commas. For example, to transcode Apple Lossless (ALAC) files to 24-bit WAV output and also transcode ADTS network streams to MP3 output, you would use the transcoding settings alac:wav24, aac:mp3.

For many transcoding combinations (noted in the list below), a stream converter program is required. See the Stream converter program section below for more information.

The following input types are currently supported:

aac AAC (Advanced Audio Coding) files and streams in ADTS format. Valid for local files served by MinimServer (.aac) and for network streams. For local files, the output type must be L16, L24, wav, wav16, wav24 or wav32. For network streams, all output types except for dopwav can be used. A stream converter program is required.
aiff Audio Interchange File Format (AIFF) files. Valid for local files served by MinimServer (.aif, .aiff) only. The output type must be L16, L24, wav, wav16, wav24 or wav32. A stream converter program is required.
alac Apple Lossless (ALAC) files. Valid for local files served by MinimServer (.mp4, .m4a and .m4b) only. The output type must be L16, L24, wav, wav16, wav24 or wav32. A stream converter program is required.
dff DSD audio files in DFF format. Valid for local files served by MinimServer (.dff) only. The output type must be dopwav. A stream converter program is not required.
dsf DSD audio files in DSF format. Valid for local files served by MinimServer (.dsf) only. The output type must be dopwav, wav, wav16, wav24, wav32, L16 or L24.

For output types other than dopwav, the ffmpeg stream converter program is required and this must be version 2.3 or later (version 2.0.2 or later in Synology DSM). The default output sample rate is 352800 and the default output sample bit depth is 32. You can override these default values by specifying an explicit sample rate and/or sample bit depth in the output type.

flac   FLAC files. Valid for local files served by MinimServer (.flac) only. The output type must be L16, L24, wav, wav16, wav24 or wav32. By default, a stream converter program is not required. If you want MinimStreamer to perform transcoding using a stream converter program, you can specify this by adding a semicolon after the output type.
mp3 MPEG-1, MPEG-2 and MPEG-2.5 files and streams (Layers I, II and III). Valid for local files served by MinimServer (.mp3) and for network streams. For local files, the output type must be L16, L24, wav, wav16, wav24 or wav32. For network streams, all output types except for dopwav can be used. A stream converter program is required.
mp4 MPEG-formatted files containing AAC audio data. Valid for local files served by MinimServer (.mp4, .m4a and .m4b) only. The output type must be L16, L24, wav, wav16, wav24 or wav32. A stream converter program is required.
ogg Ogg-formatted files containing Vorbis audio data. Valid for local files served by MinimServer (.ogg) only. The output type must be L16, L24, wav, wav16, wav24 or wav32. A stream converter program is required.
wav PCM audio encoded in WAV format. Valid for local files served by MinimServer (.wav) only. The output type must be L16, L24, wav, wav16, wav24 or wav32>. A stream converter program is required.
* Network streams of unspecified type. All output types except for dopwav can be used. A stream converter program is required. In addition to performing transcoding, this setting informs the UPnP control point and renderer about the transcoding output type for a network stream whose original type is unspecified (i.e., when the stream is an HTTP URL in a .m3u playlist and the playlist entry doesn't contain a stream type). This setting isn't used if the stream is played by an internet radio using the instructions on the MinimRadio page

The following output types are currently supported:

aac PCM audio encoded in AAC/ADTS format. Valid for network streams only. A stream converter program is required.
dopwav   WAV stream containing DoP (DSD over PCM) audio data (see this page). Valid for local files only. A stream converter program is not required.
L16 PCM audio encoded in 16-bit signed LPCM format. Valid for local files and network streams. If the input type isn't flac or if the output type is followed by a semicolon, a stream converter program is required.
L24 PCM audio encoded in 24-bit signed LPCM format. Valid for local files and network streams. If the input type isn't flac or if the output type is followed by a semicolon, a stream converter program is required.
mp3 PCM audio encoded in MP3 format. Valid for network streams only. A stream converter program is required.
wav PCM audio encoded in WAV format, preserving the original sample bit depth. Valid for local files and network streams. If the input type isn't flac or if the output type is followed by a semicolon, a stream converter program is required.

If the input type is dsf, the output sample bit depth is 32 by default. You can override this default value by specifying wav16 or wav24 for the output type.

wav16 PCM audio encoded in 16-bit WAV format. Valid for local files and network streams. For lossless 24-bit input streams (FLAC and ALAC), the audio samples are truncated to 16 bits by removing the low-order bits from each sample, which doesn't fully preserve the original lossless audio data. For lossy input streams (AAC and MP3), a floating-point conversion is performed with 16-bit precision. If the input type isn't flac or if the output type is followed by a semicolon, a stream converter program is required.
wav24 PCM audio encoded in 24-bit WAV format. Valid for local files and network streams. For lossless 16-bit input streams (FLAC and ALAC), the audio samples are extended to 24 bits by padding each sample with zeros. For lossy input streams (AAC and MP3), a floating-point conversion is performed with full 24-bit precision. If the input type isn't flac or if the output type is followed by a semicolon, a stream converter program is required.
wav32 PCM audio encoded in 32-bit WAV format. Valid for local files and network streams. For lossless 16-bit or 24-bit input streams (FLAC and ALAC), the audio samples are extended to 32 bits by padding each sample with zeros. For lossy input streams (AAC and MP3), a floating-point conversion is performed with full 32-bit precision. If the input type isn't flac or if the output type is followed by a semicolon, a stream converter program is required.

The original sample rate is preserved unchanged by default. For example, using the wav setting to transcode a FLAC file with a bit depth and sample rate combination of 16/44100 will produce a WAV audio format of 16/44100. Using the wav24 setting to transcode this file will produce a WAV audio format of 24/44100.

For an output type of wav, wav16, wav24, wav32, L16 or L24, you can specify the output sample rate by adding the suffix
 ;samplerate
where ; is a semicolon and samplerate represents the desired output sample rate rounded to the nearest kHz. This value can be 44 (for 44100 Hz), 48 (for 48000 Hz), 88 (for 88200 Hz), 96 (for 96000 Hz), 176 (for 176400 Hz), 192 (for 192000 Hz), 352 (for 352800 Hz) or 384 (for 384000 Hz). For example, to transcode to wav24 with a sample rate of 176400 Hz, you can specify an output type of wav24;176. If the input type is flac and an output sample rate is specified, a stream converter program is used to transcode the stream.

As a special case, you can append a semicolon to the output type and omit the sample rate. This is useful only for an input type of flac. It sets the output sample rate to the same as the input sample rate and uses a stream converter program to transcode the stream.

For an output type of mp3 or aac, you can change the output bit rate by adding the suffix
 ;bitrate
where ; is a semicolon and bitrate represents the desired output bit rate in kbps. This value can be 24k (for 24 kbps), 32k (for 32 kbps), 48k (for 48 kbps), 64k (for 64 kbps), 96k (for 96 kbps), 128k (for 128000 kbps), 192k (for 192 kbps), 256k (for 256000 kbps) or 320k (for 320 kbps). For example, to transcode to mp3 with a bit rate of 320 kbps, you can specify an output type of mp3;320k.

You can optionally add a size limit for transcoded WAV streams of unknown size. The transcode size limit can be specified in kilobytes (KB), megabytes (MB) or gigabytes (GB). For example, to specify a size limit of 2 GB, you can specify the output type as wav-2GB. If you specify a size limit value of 2 GB or 4 GB, the size limit is one byte less than the specified value to prevent 32-bit integer overflow or underflow. The transcode size limit cannot exceed 4 GB minus one byte (the largest possible size for a WAV stream) and this is the default value if no transcode size limit is specified. MinimServer sets the stream length in the WAV headers to the transcode size limit and stops streaming when this stream length has been reached.

If the streamSize option (see below) is used to set a maximum stream size and this maximum stream size is lower than the WAV transcode size limit, the stream size from the streamSize option is used as the stream length in the WAV headers and the stream length sent to the renderer.

If you specify the special size limit 0KB (zero kilobytes) and the streamSize option (see below) is not used, MinimServer sends a stream length of zero in the WAV headers and does not apply any size limit to the WAV stream. For example, to send a stream length of zero for a 16-bit WAV stream, you can specify the output type as wav16-0KB. A WAV stream length of zero is not part of the WAV specification but is a nonstandard extension supported by some players such as the Linn DS.

The default WAV transcode size limit (4 GB minus one byte) should be compatible with all players that can handle WAV streams. Sending a stream length of zero can be useful if you're using a player that can handle this (such as the Linn DS) but it causes problems with some other players (such as Windows Media Player and BubbleUPnP Renderer). If you experience problems when sending a stream length of zero, this setting isn't compatible with your player.

Here are some examples of transcoding combinations:
 flac:wav
 flac:wav24
 flac:wav24;192
 aac:mp3
 mp3:mp3;64k
 *:L16
 *:wav
 *:wav-2GB
 dsf:dopwav
 dsf:wav24;176

For any input type, you can specify a list of output types by separating the output types with / (slash) characters. For example, the transcoding combination flac:L16/wav24 specifies the output types L16 and wav24 for the input type flac. If you do this, the control point will choose one of these output types based on the capabilities of the renderer. If you want to include the original untranscoded stream as one of the choices for the control point, you can use the - (dash) character as one of the output types in the list.

Note: For a network stream whose original type is unspecified and is not transcoded using the '*' input type, the choice of output type is made by MinimStreamer (not the control point) when MinimStreamer opens the stream and discovers its type. By default, MinimStreamer chooses the first output type in the list. You can override this default choice by adding a ^ (caret) character after the output type that you want MinimStreamer to choose. For example, the transcoding combination aac:L16/wav24^ tells MinimStreamer to choose wav24 if it discovers that the network stream type is AAC.

For best sound quality, it is recommended that you use the output sample bit depth that matches the maximum capabilty of your music player. For example, if your music player is a Linn DS, the best match is wav24. Results may vary with different types of music player.

MinimStreamer performs the transcoding process entirely in memory for best performance, and it shouldn't cause performance issues on the server. Transcoding can put additional load on the network because it increases the amount of data streamed from the server to the music player. If you notice any dropouts when playing transcoded audio, this is likely to be a network issue rather than a problem with MinimStreamer or your audio player.

Input type filters

You can use input type filters to apply transcoding to specific sample rates, bit depths or bit rates for local files (not network streams). To do this, you need to add a filter expression after the input type. The filter expression is enclosed in parentheses and is in one of the following formats:
 (samplerate)
 (bitdepth;samplerate)
 (bitdepth)
 (bitrate)
 (-) [NEW]

For an input type of mp3, the filter is specified as (bitrate) where bitrate can be 48k (for 48 kbps), 64k (for 64 kbps), 96k (for 96 kbps), 128k (for 128000 kbps), 192k (for 192 kbps), 256k (for 256000 kbps) or 320k (for 320 kbps).

For an input type of aac, the filter is specified as (samplerate) where samplerate can be 44 (for 44100 Hz), 48 (for 48000 Hz), 88 (for 88200 Hz), 96 (for 96000 Hz), 176 (for 176400 Hz), 192 (for 192000 Hz), 352 (for 352800 Hz) or 384 (for 384000 Hz).

For an input type of dsf or dff, the filter is specified as (samplerate) where samplerate can be 64 (for DSD64), 128 (for DSD128), 256 (for DSD256), 512 (for DSD512) or 1024 (for DSD1024).

For an input type of alac, flac or mp4, the filter is specified as (samplerate) or (bitdepth) or (bitdepth;samplerate) where samplerate can be 44 (for 44100 Hz), 48 (for 48000 Hz), 88 (for 88200 Hz), 96 (for 96000 Hz), 176 (for 176400 Hz), 192 (for 192000 Hz), 352 (for 352800 Hz) or 384 (for 384000 Hz) and bitdepth can be 16 (for 16-bit samples), 24 (for 24-bit samples) or 32 (for 32-bit samples).

Here are some examples of input type filters:
 mp3(256k)
 aac(48)
 dsf(128)
 flac(96)
 alac(24;192)
 flac(16)

You can specify a range of values by preceding the filter expression with a less than sign (<) or a greater than sign (>). For example, you can use the input type filter flac(>16;48) to select all FLAC files with either a bit depth greater than 16 or a sample rate greater than 48000 Hz.

[NEW] As a special case, the filter expression inside the parentheses can be a dash (-). This creates a match-all filter that matches all sample rates, bit depths and bit rates for local files with a specified input type (not network streams). This is useful if you want to transcode local files with output settings that are different from the transcoding output settings for network streams with the same input type. For example, the transcoding setting mp3(-):wav can be used to transcode all MP3 local files to WAV without applying this transcoding setting to MP3 network streams.

You can specify any number of filtered transcoding settings for an input type and you can also specify an unfiltered transcoding setting for the same input type. For example, the following combination is valid:
 flac:wav, flac(>24;192):wav, flac(16;44):wav24;96
The filtered transcoding settings are processed first and are checked for a match in the order that they appear in the stream.transcode property. If there is no match, the unfiltered transcoding setting (if any) for the input type is used.

Stream converter program

For many transcoding combinations, a stream converter program is required. You can use either the ffmpeg program or the avconv program as the stream converter program. The ffmpeg or avconv binary executable (ffmpeg.exe or avconv.exe on Windows) must be installed on the computer or NAS that is running MinimServer and MinimStreamer.

The stream converter program can be installed in one of the directories used by the operating system to look for installed programs (as specified by the PATH environment variable). Some NAS devices (for example, Synology and QNAP) do this automatically as part of the NAS firmware.

Note 1: On Synology DSM 6.2.4 and DSM 7, the ffmpeg converter program preinstalled in DSM and selected by MinimStreamer as the default converter is unable to transcode ADTS/AAC files and streams, MP4/AAC files and M4A/AAC files. To transcode these files and streams, you can install the FFmpeg 4 package from the SynoCommununity package repository. After installing this package, set the stream.converter property to /var/packages/ffmpeg/target/bin/ffmpeg to ensure MinimStreamer uses the SynoCommunity package instead of the preinstalled DSM ffmpeg. Alternatively, you can install the FFmpeg 5 package and set the stream.converter property to /var/packages/ffmpeg5/target/bin/ffmpeg or you can install the FFmpeg 6 package and set the stream.converter property to /var/packages/ffmpeg6/target/bin/ffmpeg.

Note 2: From QNAP QTS 4.5.1, the ffmpeg converter program preinstalled in QTS and selected by MinimStreamer as the default converter is unable to transcode ADTS/AAC files and streams, MP4/AAC files and M4A/AAC files. From QNAP QTS 5.0.1.2248, QTS no longer contains a preinstalled version of ffmpeg that MinimStreamer can select by default. If you want to use MinimStreamer transcoding on these versions of QNAP QTS, you need to download and install a third-party version of the ffmpeg converter program, such as the MyQNAP package (see this page). After installing this package, set the stream.converter property to /opt/ffmpeg/ffmpeg so that MinimStreamer will use the ffmpeg converter you have installed.

Alternatively, you can download a static binary executable for the ffmpeg or avconv program and install it in the MinimServer opt/bin directory (see below).

After installing or updating the stream converter program, restart MinimServer to activate the change.

For some platforms (currently only Melco), MinimServer provides an extension package containing the ffmpeg stream converter program. The ffmpeg program in this package has been configured to contain only those audio decoders and encoders that are used by MinimStreamer. If this package is available for the platform you are using to run MinimServer, you can see it in the 'Available packages' list on the Packages tab of the Properties window. To install this package, select it and click Install, then follow the prompts to complete the installation. When the installation has completed successfully, click Relaunch.

When MinimStreamer starts, it looks for the stream converter program in the following locations:

  1. An installed package. If there is an installed package containing the ffmpeg program, MinimStreamer sets the stream.converter property to libext/*/ffmpeg.
  2. The MinimServer opt/bin directory (see below). If MinimStreamer finds the stream converter program in this location, it sets the stream.converter property to opt/bin/ffmpeg or opt/bin/avconv.
  3. The PATH environment variable. If MinimStreamer finds the stream converter program in this location, it sets the stream.converter property to ffmpeg or avconv.

You can override the above search by installing a binary executable for the ffmpeg or avconv program anywhere on the computer or NAS that is running MinimServer and setting the stream.converter property to the absolute path of this ffmpeg or avconv program. If you don't want MinimStreamer to use a stream converter program, you can set the stream.converter property to the special value none

If you are installing the stream converter program in the MinimServer opt/bin directory, the location of this directory depends on the platform you are using to run MinimServer, as follows:

Flow control

If you have enabled MinimServer flow control by setting the flowControl option of the serverOptions property (see this section), MinimStreamer applies this flow control setting when transcoding local files or network streams and using an output type of wav, wav16, wav24, wav32, L16, L24 or dopwav.

For example, if a FLAC file with 2 channels, a sample rate of 44100 Hz and a bit depth of 16 bits is transcoded using the stream.transcode setting flac:wav24;192, the streaming data rate is 2 x 192000 x 24 = 9216000 bits per second (1152000 bytes per second) and a flowControl setting of 2x would apply a maximum output streaming data rate of 2 x 1152000 bytes per second (2304000 bytes per second).

If an AAC radio stream with a bit rate of 320 kbps, 2 channels and a sample rate of 48000 Hz is transcoded using the stream.transcode setting aac:wav, the streaming data rate is 2 x 48000 x 16 = 1536000 bits per second (192000 bytes per second) and a flowControl setting of 2x would apply a maximum output streaming data rate of 2 x 192000 bytes per second (384000 bytes per second).

Making recordings

You can record any network stream that is routed via MinimStreamer.

Note: Before recording a stream, check that the copyright license terms for the stream permit this.

To start a stream recording, click Properties from the minim icon menu and select the System tab of the properties dialog. Add the stream ID to the stream.record property and click OK. A message is displayed in the log window confirming that a recording for the stream has started. You can add either a single stream ID or multiple stream IDs separated by commas.

To start another stream recording while a recording is in progress, select the System tab of the properties dialog. Add the new stream ID to the stream IDs already present in the stream.record property and click OK. A message is displayed in the log window confirming that a new recording has started.

To stop a stream recording, select the System tab of the properties dialog. Remove the stream ID from the stream.record property and click OK. A message is displayed in the log window confirming that the recording has stopped.

To schedule a stream recording to start later, select the System tab of the properties dialog. In the stream.record property, add a scheduled recording task using the format

 stream-id+start-time-end-time

Either or both of the start and end times can be specified. These times are specified in hhmm format using a 24-hour clock. For example, to start recording the stream mystream at 1930 (7.30 pm) and stop the recording at 2130 (9.30 pm), you would specify

 mystream+1930-2130

To schedule a daily repeating recording, use the suffix * after the recording task start and end times. For example, to start recording the stream mystream at 1930 (7.30 pm) every day and stop the recording at 2130 (9.30 pm) every day, you would specify

 mystream+1930-2130*

Recording files are saved in the rec subdirectory of the MinimServer log directory. You can change the location of this directory using the .logFile property on the System tab. Recording files are named with a combination of the stream ID and the start date and time of the recording.

You can start or stop recording a stream while you are listening to it, and you can start or stop listening to a stream while you are recording it. You can listen to a stream while you are recording another stream, subject to the available bandwidth of your network connection.

If a stream is being transcoded as well as recorded, the original format of the stream is written as the recording, not the transcoded format.

Streaming options

You can use the stream.options property to customize some streaming settings. These settings are separated by commas and each setting is of the form:
 name=value
If any option setting contains a comma, the string that contains the comma must be enclosed in double-quote (") characters to prevent MinimStreamer treating the comma as the end of the current option setting and the start of the next option setting in the stream.options string. For example, double quotes are required for the following option setting:
 convOut= -lavfi "afade=d=10,aecho=delays=20"

The following options are available:

convOut A string containing additional output options to be passed to the stream converter program when performing transcoding. For example, if you want ffmpeg to use libsoxr for resampling and libsoxr is installed, you can specify
 convOut=-af aresample=resampler=soxr

Note: If you want to use stream converter options when streaming FLAC files, the transcoding output type must be followed by a semicolon to force the use of a stream converter program. For example, the settings flac:wav and flac:wav24 don't use a stream converter program, so any convOut option settings will not be applied.

The arguments in the output options string are separated by spaces. If an argument contains a space, the argument must be enclosed in double-quote (") characters. For example, the options string:
 convOut=-i "/home/myuser/my filter.wav" -lavfi afir
requires the argument "/home/myuser/my filter.wav" to be enclosed in double quotes so that the stream converter program will treat it as a single argument rather than as two arguments.

delayHLS The number of seconds to delay an HLS or MPEG-DASH internet stream relative to MinimStreamer's default setting. For an HLS stream, the delay value can be a positive integer or a negative integer. For an MPEG-DASH stream, negative values are ignored. For example, to increase the stream delay by 20 seconds, you can specify
 delayHLS=20

Increasing this delay puts more data into the renderer's buffer and might help to reduce problems if your local network or internet connection is subject to heavy traffic or interruptions. Reducing this delay puts less data into the renderer's buffer and might cause dropouts if data from the network stream server is delayed for any reason.

streamSize  This option is used to enable playing a network stream of unknown size (for example, an audio broadcast stream) using a control point or renderer that requires a known stream size. It isn't used for a network stream of known size (for example, an audio file streamed from a web server). The size can be specified in bytes as an exact value or it can be specified as kilobytes (KB), megabytes (MB) or gigabytes (GB). For example, to specify a stream size of 100 MB, you can specify a value of 100MB. If you specify a streamSize value of 2 GB or 4 GB, the stream size is one byte less than the specified value to prevent 32-bit integer overflow or underflow.

If a stream of unknown size is being transcoded to WAV and the WAV transcode size limit specified in the stream.transcode property (see above) is lower than the stream size value, the WAV transcode size limit is used as the stream length sent to the renderer. If the stream size value is lower than than the WAV transcode size limit, the WAV transcode size limit is ignored and the stream size value is used instead.

preBuffer The amount of audio data to be read into memory before starting to stream audio data to the renderer. Prebuffering is applied only when transcoding a FLAC file to WAV, L16 or L24 format or when transcoding a DSF or DFF file to DoP/WAV format. This option might be useful if the renderer doesn't play the stream smoothly when it first starts. The time taken to fill the buffer might cause a slight delay before audio starts playing.

The value is the number of seconds of audio data (5 seconds or less) to be prebuffered. It is specified as a decimal number with no more than 3 digits after the decimal point (millisecond precision). For example, you can specify '1', '2.5', '0.25' or '.125' but not '.1234'.

dash.mp4aac If set to aac (the default value), MPEG-DASH fragmented MP4/AAC streams are sent to the renderer in ADTS/AAC format. If set to mp4, MPEG-DASH fragmented MP4/AAC streams are sent to the renderer in fragmented MP4/AAC format.
dash.mp4flac If set to flac (the default value), MPEG-DASH fragmented MP4/FLAC streams are sent to the renderer in FLAC format. If set to mp4, MPEG-DASH fragmented MP4/FLAC streams are sent to the renderer in fragmented MP4/FLAC format.

Convolution filtering

MinimStreamer can use FFmpeg to apply a Finite Impulse Response (FIR) convolution filter to an audio file or network stream. FIR convolution is often used to apply room correction to an audio stream.

To use convolution filtering, the stream.transcode property must be set to a value that transcodes the audio file or network stream using FFmpeg as the stream converter. See the Transcoding section for details of how to do this.

Note: If you want to use convolution filtering when streaming FLAC files, the transcoding output type must be followed by a semicolon to force the use of a stream converter program. For example, the settings flac:wav and flac:wav24 don't use a stream converter program, so convolution processing will not be performed.

The ffmpeg binary executable in the stream.converter property must be version 3.4 or higher. For best results, version 4.1 or higher is recommended.

Note: If you are running MinimServer on a Synology or QNAP NAS, the default system ffmpeg binary executable might be an older version that doesn't support this capability. In this case, you need to install a later version of the ffmpeg binary executable and update the stream.converter property to point to this version.

To enable convolution filtering, set the stream.options property to
 convOut=-i filter-file-path -lavfi filter-chain
where filter-file-path is the fully-qualified absolute path for your convolution filter file and filter-chain is a filter chain containing afir followed optionally by any valid options supported by FFmpeg for the afir filter. For example, if you specify
 convOut=-i /home/myuser/myfilter.wav -lavfi afir
FFmpeg uses the afir filter with the convolution file /home/myuser/myfilter.wav and no afir options.

Applying a convolution filter can reduce the volume of the convolved audio stream. If this is a problem, you can use afir filter options (only with FFmpeg 4.1 or higher) to increase the gain of the convolution filter. For example, if you specify
 convOut=-i D:\filterdir\filterfile.wav -lavfi afir=gtype=gn
FFmpeg uses the afir filter with the convolution file D:\filterdir\filterfile.wav and the afir option gtype=gn. This should produce suitable volumes for all input file formats.

The coefficients in the convolution filter file are computed based on a specific sample rate, so different sample rates require different convolution filter files. This can be specified by using a "wildcard pattern" for the convolution filter filename. For example, if you specify
 convOut=-i /home/myuser/conv*.wav -lavfi afir
MinimStreamer looks for all files matching the wildcard pattern conv*.wav in the /home/myuser folder and selects one of these files as the convolution filter based on the sample rate of the input audio file or audio stream. If no exact match is available, the convolution filter with the nearest sample rate is used, with a preference [NEW] for filters with sample rates that are exact multiples or fractions of the stream sample rate. If the sample rate of the convolution filter file doesn't exactly match the sample rate of the audio file or audio stream, FFmpeg automatically resamples the convolution filter to match the sample rate of the audio file or audio stream.

If you are using transcoding to change the sample rate or bit depth of the audio file or audio stream, convolution filtering is performed prior to transcoding. This means that the sample rate of the convolution filter is selected based on the original sample rate of the audio file or audio stream, not the sample rate that results from transcoding.

In order to perform convolution processing on an audio file in DSF format, the file must be transcoded to PCM using the stream.transcode property in order for convolution processing to be performed. The process of transcoding and convolving has three stages. In the first stage, the DSD audio in the DSF file is transcoded to a PCM audio stream with a bit depth of 32 bits and a sample rate of 352800 Hz. In the second stage, a convolution filter with a sample rate of 352800 Hz is applied to this PCM audio stream. In the third stage, if the specified output format in the stream.transcode property is something other than 32/352800, a further transcoding step is applied to the convolved audio stream.