This squashed commit comprises a long series of improvements, bug fixes, optimizations, and new feature additions:
- 48,000 frames per second operation, - 48k lossless stereo, 5.1 and 7.1 surround sound - Multichannel and multi rate operation on ALSA, PipeWire, PulseAudio, FreeBSD, stdout and unix pipe output backends. Automatic, flexible and controllable output format (rate, sample format and channel count) selection. Full FFmpeg integration to support transcoding, resampling, and new audio formats. Better operation on lower powered devices down to e.g. Raspberry Pi B. Reduced Docker image sizes with a slimmed-down FFmpeg library. Enhanced timestamp handling for better synchronization. Improved the sync error calculation. A new "vernier" resampling and interpolation method for low-power CPUs. Bug fixes and minor enhancements. Note -- there are many breaking changes from previous versions of Shairport Sync!
This commit is contained in:
+125
-47
@@ -15,7 +15,12 @@ general =
|
||||
// %V for the full version string, e.g. 3.3-OpenSSL-Avahi-ALSA-soxr-metadata-sysconfdir:/etc
|
||||
// Overall length can not exceed 50 characters. Example: "Shairport Sync %v on %H".
|
||||
// password = "secret"; // (AirPlay 1 only) leave this commented out if you don't want to require a password
|
||||
// interpolation = "auto"; // aka "stuffing". Default is "auto". Alternatives are "basic" or "soxr". Choose "soxr" only if you have a reasonably fast processor and Shairport Sync has been built with "soxr" support.
|
||||
// The interpolation setting below controls how Shairport Sync adds or removes frames of audio to keep in sync.
|
||||
// "auto" (default) measures the processor's floating point speed and chooses "soxr" if available and it is fast enough. Otherwise, "vernier" is selected.
|
||||
// "soxr" uses the SoX library to recode a packet of frames to a new packet containing more or fewer frames. This needs a processor with fast floating point capability.
|
||||
// "vernier" recodes a packet of frames to a new packet containing more or fewer frames. This is recommended for low powered devices.
|
||||
// "basic" causes the simple removal or insertion of frames in a packet of frames. Not recommended.
|
||||
// interpolation = "auto"; // aka "stuffing". Default is "auto". Alternatives are "vernier", "basic" or "soxr". Choose "soxr" only if you have a reasonably fast processor and Shairport Sync has been built with "soxr" support.
|
||||
// output_backend = "alsa"; // Run "shairport-sync -h" to get a list of all output_backends, e.g. "alsa", "pipe", "stdout". The default is the first one.
|
||||
// mdns_backend = "avahi"; // Run "shairport-sync -h" to get a list of all mdns_backends. The default is the first one.
|
||||
// interface = "name"; // Use this advanced setting to specify the interface on which Shairport Sync should provide its service. Leave it commented out to get the default, which is to select the interface(s) automatically.
|
||||
@@ -25,15 +30,25 @@ general =
|
||||
// airplay_device_id_offset = 0; // (AirPlay 2 only) add this to the default airplay_device_id calculated from one of the device's MAC address
|
||||
// airplay_device_id = 0x<six-digit_hexadecimal_number>L; // (AirPlay 2 only) use this as the airplay_device_id e.g. 0xDCA632D4E8F3L -- remember the "L" at the end as it's a 64-bit quantity!
|
||||
// regtype = "<string>"; // Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is "_raop._tcp" for AirPlay 1, "_airplay._tcp" for AirPlay 2.
|
||||
|
||||
// drift_tolerance_in_seconds = 0.002; // allow a timing error of this number of seconds of drift away from exact synchronisation before attempting to correct it
|
||||
// resync_threshold_in_seconds = 0.050; // a synchronisation error greater than this number of seconds will cause resynchronisation; 0 disables it
|
||||
// resync_recovery_time_in_seconds = 0.100; // allow this extra time to recover after a late resync. Increase the value, possibly to 0.5, in a virtual machine.
|
||||
// playback_mode = "stereo"; // This can be "stereo", "mono", "reverse stereo", "both left" or "both right". Default is "stereo".
|
||||
// alac_decoder = "hammerton"; // This can be "hammerton" or "apple". This advanced setting allows you to choose
|
||||
// the original Shairport decoder by David Hammerton or the Apple Lossless Audio Codec (ALAC) decoder written by Apple.
|
||||
// If you build Shairport Sync with the flag --with-apple-alac, the Apple ALAC decoder will be chosen by default.
|
||||
// For FFmpeg channel and layout names, (e.g. "7.1", "FL", "3.0(back)", etc.), please see channel_names and channel_layout_map at https://ffmpeg.org/doxygen/trunk/channel__layout_8c_source.html
|
||||
// eight_channel_mode = "on"; // Enable reception of eight channel audio. Can be "off", "on" or an eight-channel FFmpeg channel layout. If "on", the channel layout used is: "7.1".
|
||||
// six_channel_mode = "on"; // Enable reception of six channel audio. Can be "off", "on" or a six-channel FFmpeg channel layout. If "on", the channel layout used is: "5.1".
|
||||
// mixdown = "auto"; // Enable mixdown. Can be "auto", "off" or an FFmpeg channel layout, e.g. "quad". If "auto", mixdown will occur, if needed, to the default channel layout for the output channels available.
|
||||
// output_channel_mapping = "auto"; // Specify how audio channels are mapped to the output device's channels:
|
||||
// Shairport Sync uses standard FFmpeg channel names for each channel in the audio output. The names are, in order, "FL", "FR", "FC", "LFE", "BL", "BR", "SL", "SR".
|
||||
// If "auto", the audio channels are matched, where possible, to the channels in the device's channel map. Any leftover output channels are mapped, in order, to leftover device channels.
|
||||
// If "off", or if there is no device channel map, audio channels are output to the device channels in order.
|
||||
// If a list of audio channels is given, e.g. ( "FL", "FR", "LFE", "FC", "BL", "BR", "SL", "SR" ), they are mapped in the order given to the device channels from 1 upwards.
|
||||
// The audio channel list can include the same channel more than once and can include the silent channel "--".
|
||||
|
||||
// alac_decoder = <setting>; //This advanced setting is for Classic Airplay only. It can be "ffmpeg" (default on systems with FFmpeg support), "hammerton" (default on systems without FFmpeg support, deprecated) or "apple" (deprecated).
|
||||
// The original Shairport decoder is by David Hammerton. This is deprecated for security reasons as it is no longer maintained. However, it is compact and may be useful in storage-constrained devices. It is included by default on systems without FFmpeg support.
|
||||
// If you build Shairport Sync with the flag --with-apple-alac, the Apple ALAC decoder will be chosen by default unless FFmpeg support is included. The Apple ALAC decoder is deprecated for security reasons.
|
||||
// If you build Shairport Sync with the flag --with-ffmpeg, the FFmpeg ALAC decoder will be chosen by default. This is recommended except where there is insufficient storage on the device. With this setting, the Hammerton decoder will not be built.
|
||||
// In AirPlay 2 operation, the FFmpeg ALAC decoder is always used.
|
||||
// ignore_volume_control = "no"; // set this to "yes" if you want the volume to be at 100% no matter what the source's volume control is set to.
|
||||
// volume_range_db = 60 ; // use this advanced setting to set the range, in dB, you want between the maximum volume and the minimum volume. Range is 30 to 150 dB. Leave it commented out to use mixer's native range.
|
||||
// volume_max_db = 0.0 ; // use this advanced setting, which must have a decimal point in it, to set the maximum volume, in dB, you wish to use.
|
||||
@@ -43,32 +58,16 @@ general =
|
||||
// "standard" makes the volume change more quickly at lower volumes and slower at higher volumes.
|
||||
// "flat" makes the volume change at the same rate at all volumes.
|
||||
// "dasl_tapered" is similar to "standard" - it makes the volume change more quickly at lower volumes and slower at higher volumes.
|
||||
// The intention behind dasl_tapered is that a given percentage change in volume should result in the same percentage change in
|
||||
// The basic idea behind dasl_tapered is that a given percentage change in volume should result in the same percentage change in
|
||||
// perceived loudness. For instance, doubling the volume level should result in doubling the perceived loudness.
|
||||
// With the range of AirPlay volume being from -30 to 0, doubling the volume from -22.5 to -15 results in an increase of 10 dB.
|
||||
// Similarly, doubling the volume from -15 to 0 results in an increase of 10 dB.
|
||||
// For compatibility with mixers having a restricted attenuation range (e.g. 30 dB), "dasl_tapered" will switch to a flat profile at low AirPlay volumes.
|
||||
|
||||
// volume_control_combined_hardware_priority = "no"; // when extending the volume range by combining the built-in software attenuator with the hardware mixer attenuator, set this to "yes" to reduce volume by using the hardware mixer first, then the built-in software attenuator.
|
||||
|
||||
// default_airplay_volume = -24.0; // this is the suggested volume after a reset or after the high_volume_threshold has been exceed and the high_volume_idle_timeout_in_minutes has passed
|
||||
|
||||
// The following settings are for dealing with potentially surprising high ("very loud") volume levels.
|
||||
// When a new play session starts, it usually requests a suggested volume level from Shairport Sync. This is normally the volume level of the last session.
|
||||
// This can cause unpleasant surprises if the last session was (a) very loud and (b) a long time ago.
|
||||
// Thus, the user could be unpleasantly surprised by the volume level of the new session.
|
||||
|
||||
// To deal with this, when the last session volume is "very loud", the following two settings will lower the suggested volume after a period of idleness:
|
||||
|
||||
// high_threshold_airplay_volume = -16.0; // airplay volume greater or equal to this is "very loud"
|
||||
// high_volume_idle_timeout_in_minutes = 0; // if the current volume is "very loud" and the device is not playing for more than this time, suggest the default volume for new connections instead of the current volume.
|
||||
// Note 1: This timeout is set to 0 by default to disable this feature. Set it to some positive number, e.g. 180 to activate the feature.
|
||||
// Note 2: Not all applications use the suggested volume: MacOS Music and Mac OS System Sounds use their own settings.
|
||||
|
||||
// run_this_when_volume_is_set = "/full/path/to/application/and/args"; // Run the specified application whenever the volume control is set or changed.
|
||||
// The desired AirPlay volume is appended to the end of the command line – leave a space if you want it treated as an extra argument.
|
||||
// AirPlay volume goes from 0.0 to -30.0 and -144.0 means "mute".
|
||||
|
||||
// audio_backend_latency_offset_in_seconds = 0.0; // This is added to the latency requested by the player to delay or advance the output by a fixed amount.
|
||||
// Use it, for example, to compensate for a fixed delay in the audio back end.
|
||||
// E.g. if the output device, e.g. a soundbar, takes 100 ms to process audio, set this to -0.1 to deliver the audio
|
||||
@@ -80,12 +79,10 @@ general =
|
||||
// audio_backend_silent_lead_in_time = "auto"; // This optional advanced setting, either "auto" or a positive number, sets the length of the period of silence that precedes the start of the audio.
|
||||
// The default is "auto" -- the silent lead-in starts as soon as the player starts sending packets.
|
||||
// Values greater than the latency are ignored. Values that are too low will affect initial synchronisation.
|
||||
|
||||
// dbus_service_bus = "system"; // The Shairport Sync dbus interface, if selected at compilation, will appear
|
||||
// as "org.gnome.ShairportSync" on the whichever bus you specify here: "system" (default) or "session".
|
||||
// mpris_service_bus = "system"; // The Shairport Sync mpris interface, if selected at compilation, will appear
|
||||
// as "org.gnome.ShairportSync" on the whichever bus you specify here: "system" (default) or "session".
|
||||
|
||||
// resend_control_first_check_time = 0.10; // Use this optional advanced setting to set the wait time in seconds before deciding a packet is missing.
|
||||
// resend_control_check_interval_time = 0.25; // Use this optional advanced setting to set the time in seconds between requests for a missing packet.
|
||||
// resend_control_last_check_time = 0.10; // Use this optional advanced setting to set the latest time, in seconds, by which the last check should be done before the estimated time of a missing packet's transfer to the output buffer.
|
||||
@@ -110,11 +107,52 @@ sessioncontrol =
|
||||
// wait_for_completion = "no"; // set to "yes" to get Shairport Sync to wait until the "run_this..." applications have terminated before continuing
|
||||
|
||||
// allow_session_interruption = "no"; // set to "yes" to allow another device to interrupt Shairport Sync while it's playing from an existing audio source
|
||||
// session_timeout = 120; // wait for this number of seconds after a source disappears before terminating the session and becoming available again.
|
||||
// session_timeout = 60; // wait for this number of seconds after a source disappears before terminating the session and becoming available again.
|
||||
};
|
||||
|
||||
// Back End Settings
|
||||
|
||||
// Rates, Formats and Channels
|
||||
// Shairport Sync can handle a wide range of wide range of output rates, formats and channels.
|
||||
|
||||
// If it has been built for AirPlay 2 or with FFmpeg support, Shairport Sync can output in a wide range settings, including 48,000 and 44,100 frames per second, 32- and 24-bit sample sizes, 1 to 8 channels.
|
||||
// Otherwise, if Shairport Sync has been built (1) for classic AirPlay only and (2) without FFmpeg support, it is restricted to output rates of 44,100 frames per second or exact multiples and two channels only.
|
||||
|
||||
// You can check Shairport Sync's support for FFmpeg by entering the command: shairport-sync -V
|
||||
// If the resulting string contains "FFmpeg" or "AirPlay2", then it has FFmpeg support built in.
|
||||
|
||||
// With FFmpeg support:
|
||||
// Possible output rates are: 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, 96000, 176400, 192000, 352800 and 384000 frames per seconds.
|
||||
// Possible output formats are: "S8", "U8", "S16_LE", "S16_BE", "S24_LE", "S24_BE", "S24_3LE", "S24_3BE", "S32_LE" and "S32_BE".
|
||||
// Possible output channel counts are: 1 to 8.
|
||||
|
||||
// Without FFmpeg support:
|
||||
// Possible rates are: 44100, 88200, 176400 and 352800 frames per seconds.
|
||||
// Possible formats are: "S8", "U8", "S16_LE", "S16_BE", "S24_LE", "S24_BE", "S24_3LE", "S24_3BE", "S32_LE" and "S32_BE".
|
||||
// Possible channel counts are: 2.
|
||||
|
||||
// Automatic settings
|
||||
// Shairport Sync will dynamically select output formats, attempting to match input and output rates, formats and channel counts, picking the best alternatives otherwise.
|
||||
// (Settings are static by default on the STDOUT and pipe backends, as there is no obvious way to signal a downstream consumer of the data when the format has changed.)
|
||||
|
||||
// Rate Selection:
|
||||
// Shairport Sync checks the rates the output system can accept and those that have been specified in the configuration file.
|
||||
// From that set of possibilities, Shairport Sync will attempt to match the rate at which the audio is being received and will switch the output to that rate if necessary.
|
||||
// If the exact rate is not available, an exact multiple will be selected if available. Finally, and only with FFmpeg support, a higher rate or a lower rate will be chosen.
|
||||
// To avoid output rate switching, specify just one rate in the configuration file.
|
||||
|
||||
// Format Selection:
|
||||
// Shairport Sync checks the formats the output system can accept and those that have been specified in the configuration file.
|
||||
// From that set of possibilities, Shairport Sync will use the deepest format unless ignore_volume_control is true and maximum_volume is not used, if which case it will try to switch the output to the exact format of the incoming audio.
|
||||
// To avoid output format switching, specify just one format in the configuration file.
|
||||
|
||||
// Channel Count Selection:
|
||||
// Shairport Sync checks the channels counts the output system can accept and those that have been specified in the configuration file.
|
||||
// From that set of possibilities, Shairport Sync will attempt to match the output channels to the number of channels in the audio and will switch the output to that number of channels if necessary.
|
||||
// If the exact number of output channels is not available, a greater output channel count will be selected if available. Failing that, a lower channel count will be chosen.
|
||||
// To avoid channel count switching, specify just one channel count in the configuration file.
|
||||
|
||||
|
||||
// These are parameters for the "alsa" audio back end.
|
||||
// For this section to be operative, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-alsa
|
||||
@@ -125,31 +163,40 @@ alsa =
|
||||
// mixer_control_index = 0; // the index of the mixer to use to adjust output volume. Default is 0. The mixer is fully identified by the combination of the mixer_control_name and the mixer_control_index, e.g. "PCM",0 would be such a specification.
|
||||
// mixer_device = "default"; // the mixer_device default is whatever the output_device is. Normally you wouldn't have to use this.
|
||||
|
||||
// output_rate = "auto"; // can be "auto", 44100, 88200, 176400 or 352800, but the device must have the capability.
|
||||
// output_format = "auto"; // can be "auto", "U8", "S8", "S16", "S16_LE", "S16_BE", "S24", "S24_LE", "S24_BE", "S24_3LE", "S24_3BE", "S32", "S32_LE" or "S32_BE" but the device must have the capability. Except where stated using (*LE or *BE), endianness matches that of the processor.
|
||||
// Note: if you specify settings here, the output device must be capable of them. Otherwise, Shairport Sync will quit and leave a message in the system log.
|
||||
// output_rate = "auto"; // Specify "auto", or a single rate, e.g. 48000, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = "auto"; // Specify "auto", or a single format, e.g. "S32_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE"). Default is "auto". See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = "auto"; // Specify "auto", or a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
|
||||
// disable_synchronization = "no"; // Set to "yes" to disable synchronization. Default is "no" This is really meant for troubleshooting.
|
||||
// disable_synchronization = "no"; // Set to "yes" to disable synchronization.
|
||||
|
||||
// period_size = <number>; // Use this optional advanced setting to set the alsa period size near to this value
|
||||
// buffer_size = <number>; // Use this optional advanced setting to set the alsa buffer size near to this value
|
||||
// use_mmap_if_available = "yes"; // Use this optional advanced setting to control whether MMAP-based output is used to communicate with the DAC. Default is "yes"
|
||||
// use_mmap_if_available = "no"; // Use this optional advanced setting to control whether MMAP-based output is used to communicate with the DAC. Default is "no".
|
||||
// use_hardware_mute_if_available = "no"; // Use this optional advanced setting to control whether the hardware in the DAC is used for muting. Default is "no", for compatibility with other audio players.
|
||||
// maximum_stall_time = 0.200; // Use this optional advanced setting to control how long to wait for data to be consumed by the output device before considering it an error. It should never approach 200 ms.
|
||||
// use_precision_timing = "auto"; // Use this optional advanced setting to control how Shairport Sync gathers timing information. When set to "auto", if the output device is a real hardware device, precision timing will be used. Choose "no" for more compatible standard timing, choose "yes" to force the use of precision timing, which may cause problems.
|
||||
|
||||
// disable_standby_mode = "never"; // This setting prevents the DAC from entering the standby mode. Some DACs make small "popping" noises when they go in and out of standby mode. Settings can be: "always", "auto" or "never". Default is "never", but only for backwards compatibility. The "auto" setting prevents entry to standby mode while Shairport Sync is in the "active" mode. You can use "yes" instead of "always" and "no" instead of "never".
|
||||
// disable_standby_mode_silence_threshold = 0.040; // Use this optional advanced setting to control how little audio should remain in the output buffer before the disable_standby code should start sending silence to the output device.
|
||||
// disable_standby_mode_silence_scan_interval = 0.004; // Use this optional advanced setting to control how often the amount of audio remaining in the output buffer should be checked.
|
||||
// disable_standby_mode_silence_scan_interval = 0.030; // Use this optional advanced setting to control how often the amount of audio remaining in the output buffer should be checked.
|
||||
// disable_standby_mode_default_channels = 2; // Use this optional advanced setting to set the initial channel setting when disable_standby_mode is "always" or "yes". After a track has been played, the track's output channel setting will be used.
|
||||
// disable_standby_mode_default_rate = <rate>; // Use this optional advanced setting to set the initial rate, in frames per second, when disable_standby_mode is "always" or "yes". Default is 44100 for classic AirPlay, 48000 for AirPlay 2. After a track has been played, the track's output rate setting will be used.
|
||||
};
|
||||
|
||||
// Parameters for the "pw" PipeWire backend.
|
||||
// Parameters for the PipeWire backend.
|
||||
// For this section to be operative, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-pw
|
||||
pw =
|
||||
// --with-pipewire
|
||||
pipewire =
|
||||
{
|
||||
// application_name = "Shairport Sync"; // Set this to the name that should appear in the Sounds "Applications" or "Volume Levels".
|
||||
// node_name = "Shairport Sync"; // This appears in some PipeWire CLI tool outputs.
|
||||
// sink_target = "<sink target name>"; // Leave this commented out to get the sink target already chosen by the PipeWire system.
|
||||
|
||||
// Note: if you specify settings here, the the PipeWire system must be capable of giving effect to them. Otherwise, Shairport Sync will quit and leave a message in the system log.
|
||||
// output_rate = "auto"; // Specify "auto", or a single rate, e.g. 48000, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = "auto"; // Specify "auto", or a single format, e.g. "S32_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE"). Default is "auto". See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = "auto"; // Specify "auto", or a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
};
|
||||
|
||||
// Parameters for the "sndio" audio back end. All are optional.
|
||||
@@ -158,23 +205,32 @@ pw =
|
||||
sndio =
|
||||
{
|
||||
// device = "default"; // optional setting to set the name of the output device, e.g. "rsnd/0", "rsnd/1", etc.
|
||||
// rate = 44100; // optional setting which can be 44100, 88200, 176400 or 352800, but the device must have the capability. Default is 44100.
|
||||
// format = "S16"; // optional setting which can be "U8", "S8", "S16", "S24", "S24_3LE", "S24_3BE" or "S32", but the device must have the capability. Except where stated using (*LE or *BE), endianness matches that of the processor.
|
||||
// round = <number>; // advanced optional setting to set the period size near to this value
|
||||
// bufsz = <number>; // advanced optional setting to set the buffer size near to this value
|
||||
|
||||
// Note: if you specify settings here, the sndio system must be capable of giving effect to them. Otherwise, Shairport Sync will quit and leave a message in the system log.
|
||||
// output_rate = "auto"; // Specify "auto", or a single rate, e.g. 48000, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = "auto"; // Specify "auto", or a single format, e.g. "S32_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE") from the list: "S32_LE", "S32_BE", "S16_LE" or "S16_BE". Default is "auto". See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = "auto"; // Specify "auto", or a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
};
|
||||
|
||||
// Parameters for the "pa" PulseAudio backend.
|
||||
// Parameters for the PulseAudio backend.
|
||||
// For this section to be operative, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-pa
|
||||
pa =
|
||||
// --with-pulseaudio
|
||||
pulseaudio =
|
||||
{
|
||||
// server = "host"; // Set this to override the default pulseaudio server that should be used.
|
||||
// sink = "Sink Name"; // Set this to override the default pulseaudio sink that should be used. (Untested)
|
||||
// application_name = "Shairport Sync"; //Set this to the name that should appear in the Sounds "Applications" tab when Shairport Sync is active.
|
||||
|
||||
// Note: if you specify settings here, the PulseAudio system must be capable of giving effect to them. Otherwise, Shairport Sync will quit and leave a message in the system log.
|
||||
// output_rate = "auto"; // Specify "auto", or a single rate, e.g. 48000, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = "auto"; // Specify "auto", or a single format, e.g. "S32_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE"). Default is "auto". See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = "auto"; // Specify "auto", or a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
// default_channel_layouts = "alsa"; // Set to "alsa" (default) for the alsa-compatible channel layouts (see "PA_CHANNEL_MAP_ALSA"), or set to "pulseaudio" if you want PulseAudio's own channel layouts ("PA_CHANNEL_MAP_DEFAULT") to be used instead.
|
||||
};
|
||||
|
||||
// Parameters for the "jack" JACK Audio Connection Kit backend.
|
||||
// Parameters for the JACK Audio Connection Kit backend.
|
||||
// For this section to be operative, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-jack
|
||||
jack =
|
||||
@@ -191,27 +247,49 @@ jack =
|
||||
// bufsz = <number>; // advanced optional setting to set the buffer size to this value
|
||||
};
|
||||
|
||||
// Parameters for the "pipe" audio back end, a back end that directs raw CD-format audio output to a pipe. No interpolation is done.
|
||||
// Parameters for the "pipe" audio back end, a back end that directs raw PCM audio output to a unix pipe. No interpolation is done.
|
||||
// For this section to be operative, Shairport Sync must have been built with the following configuration flag:
|
||||
// --with-pipe
|
||||
pipe =
|
||||
{
|
||||
// name = "/tmp/shairport-sync-audio"; // this is the default
|
||||
|
||||
// Note: if you specify "auto" or multiple settings here. Shairport Sync may switch between them to match the input, but there will be no notification in the pipe as changes occur. To avoid this, consider setting one just rate/format/channel count. If built with AirPlay 2 or FFmpeg support, Shairport Sync will automatically transcode and mixdown as necessary.
|
||||
// output_rate = <rate>; // Specify a single rate, e.g. 44100, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000) or "auto" -- try to match the input. Default is 44100 for classic AirPlay, 48000 for AirPlay 2. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = <format>; // Specify a format, e.g. "S16_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE") or "auto". Default is "S16_LE" for classic AirPlay, "S32_LE" for AirPlay 2. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = 2; // Specify a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6) or "auto" -- try to match the input. Default is 2. See the "Rates, Formats and Channels" discussion above.
|
||||
};
|
||||
|
||||
// There are no configuration file parameters for the "stdout" audio back end. No interpolation is done.
|
||||
// Parameters for the "stdout" audio back end, a back end that directs raw PCM audio output to STDOUT. No interpolation is done.
|
||||
// To include support for the "stdout" backend, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-stdout
|
||||
stdout =
|
||||
{
|
||||
// Note: if you specify "auto" or multiple settings here. Shairport Sync may switch between them to match the input, but there will be no notification in STDOUT as changes occur. To avoid this, consider setting one just rate/format/channel count. If built with AirPlay 2 or FFmpeg support, Shairport Sync will automatically transcode and mixdown as necessary.
|
||||
// output_rate = <rate>; // Specify a single rate, e.g. 44100, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000) or "auto" -- try to match the input. Default is 44100 for classic AirPlay, 48000 for AirPlay 2. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = <format>; // Specify a format, e.g. "S16_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE") or "auto". Default is "S16_LE" for classic AirPlay, "S32_LE" for AirPlay 2. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = 2; // Specify a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6) or "auto" -- try to match the input. Default is 2. See the "Rates, Formats and Channels" discussion above.
|
||||
};
|
||||
|
||||
// There are no configuration file parameters for the "ao" audio back end. No interpolation is done.
|
||||
// Parameters for the "ao" (also known as "libao") backend.
|
||||
// To include support for the "ao" backend, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-ao
|
||||
ao =
|
||||
{
|
||||
// Note: if you specify settings here, the ao (aka "libao") system must be capable of giving effect to them. Otherwise, Shairport Sync will quit and leave a message in the system log.
|
||||
// output_rate = "auto"; // Specify "auto", or a single rate, e.g. 48000, or a bracketed comma-separated list of rates, e.g. (44100, 48000, 64000). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
// output_format = "auto"; // Specify "auto", or a single format, e.g. "S32_LE", or a bracketed comma-separated list of formats, e.g. ("S32_LE", "S16_LE"). Default is "auto". See the "Rates, Formats and Channels" discussion above.
|
||||
// output_channels = "auto"; // Specify "auto", or a specific number of channels, e.g. 2, or a bracketed comma-separated list of numbers of channels, e.g. (2, 6). Default is "auto" -- try to match the input. See the "Rates, Formats and Channels" discussion above.
|
||||
};
|
||||
|
||||
|
||||
// For this section to be operative, Shairport Sync must be built with the following configuration flag:
|
||||
// --with-convolution
|
||||
dsp =
|
||||
{
|
||||
|
||||
// NOTE: convolution and loudness filters currently work only for 44100 input and are disabled for other frame rates.
|
||||
|
||||
//////////////////////////////////////////
|
||||
// This convolution filter can be used to apply almost any correction to the audio signal, like frequency and phase correction.
|
||||
// For example you could measure (with a good microphone and a sweep-sine) the frequency response of your speakers + room,
|
||||
@@ -251,7 +329,7 @@ metadata =
|
||||
// pipe_timeout = 5000; // wait for this number of milliseconds for a blocked pipe to unblock before giving up
|
||||
// progress_interval = 0.0; // if non-zero, progress 'phbt' messages will be sent at the interval specified in seconds. A 'phb0' message will also be sent when the first audio frame of a play session is about to be played.
|
||||
// Each message consists of the RTPtime of a a frame of audio and the exact system time when it is to be played. The system time, in nanoseconds, is based the CLOCK_MONOTONIC_RAW of the machine -- if available -- or CLOCK_MONOTONIC otherwise.
|
||||
// Messages are sent when the frame is placed in the output device's buffer, thus, they will be _approximately_ 'audio_backend_buffer_desired_length_in_seconds' (default 0.2 seconds) ahead of time.
|
||||
// Messages are sent when the frame is placed in the output device's buffer, thus, they will be _approximately_ 'audio_backend_buffer_desired_length_in_seconds' ahead of time.
|
||||
// socket_address = "226.0.0.1"; // if set to a host name or IP address, UDP packets containing metadata will be sent to this address. May be a multicast address. "socket-port" must be non-zero and "enabled" must be set to yes"
|
||||
// socket_port = 5555; // if socket_address is set, the port to send UDP packets to
|
||||
// socket_msglength = 65000; // the maximum packet size for any UDP metadata. This will be clipped to be between 500 or 65000. The default is 500.
|
||||
@@ -281,12 +359,12 @@ mqtt =
|
||||
// publish_raw = "no"; //whether to publish all available metadata under the codes given in the 'metadata' docs.
|
||||
// publish_parsed = "no"; //whether to publish a small (but useful) subset of metadata under human-understandable topics
|
||||
// empty_payload_substitute = "--"; // MQTT messages with empty payloads often are invisible or have special significance to MQTT brokers and readers.
|
||||
// To avoid empty payload problems, the string here is used instead of any empty payload. Set it to the empty string -- "" -- to leave the payload empty.
|
||||
// To avoid empty payload problems, this string is used instead of any empty payload. Set it to the empty string -- "" -- to leave the payload empty.
|
||||
// Currently published topics:artist,album,title,genre,format,songalbum,volume,client_ip,
|
||||
// Additionally, messages at the topics play_start,play_end,play_flush,play_resume are published
|
||||
// publish_cover = "no"; //whether to publish the cover over mqtt in binary form. This may lead to a bit of load on the broker
|
||||
// enable_autodiscovery = "no"; //whether to publish an autodiscovery message to automatically appear in Home Assistant
|
||||
// autodiscovery_prefix = "homeassistant"; //string to prepend to autodiscovery topic
|
||||
// enable_autodiscovery = "no"; //whether to publish an autodiscovery message to automatically appear in Home Assistant
|
||||
// autodiscovery_prefix = "homeassistant"; //string to prepend to autodiscovery topic
|
||||
// enable_remote = "no"; //whether to remote control via MQTT. RC is available under `topic`/remote.
|
||||
// Available commands are "command", "beginff", "beginrew", "mutetoggle", "nextitem", "previtem", "pause", "playpause", "play", "stop", "playresume", "shuffle_songs", "volumedown", "volumeup"
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user