BLUEALSA-APLAY(1) | General Commands Manual | BLUEALSA-APLAY(1) |
bluealsa-aplay - a simple bluealsa player
bluealsa-aplay [OPTION]... [BT-ADDR]...
Capture audio streams from Bluetooth devices (via bluealsa(8)) and play them to an ALSA playback device.
By default bluealsa-aplay captures audio from all connected Bluetooth devices. It is possible to select specific Bluetooth devices by providing a list of BT-ADDR MAC addresses. Using the special MAC address 00:00:00:00:00:00 will disable device filtering - the same as the default behavior.
bluealsa-aplay does not perform any mixing of streams. If multiple devices are connected it opens a new connection to the ALSA PCM device for each stream. Therefore the PCM NAME must itself allow multiple open connections and mix the streams together. See option --single-audio to change this behavior. Similarly, bluealsa-aplay does not apply any transformations to the stream. For this reason it is often necessary to use the ALSA dmix and plug plugins in the NAME PCM.
If you experience underruns on the ALSA device then a larger buffer may help. However, a larger buffer will also increase the latency. For reliable performance the buffer time should be at least 3 times the period time.
The ALSA rate plugin, which may be invoked by plug, does not always produce the exact required effective sample rate because of rounding errors in the conversion between period time and period size. This can have a significant impact on synchronization "drift", especially with small period sizes, and can also result in stream underruns (if the effective rate is too fast) or dropped A2DP frames in the bluealsa(8) server (if the effective rate is too slow). This effect is avoided if the selected period time results in an exact integer number of frames for both the source rate (Bluetooth) and sink rate (hardware card). For example, in the case of Bluetooth stream sampled at 44100Hz playing to a hardware device that supports only 48000Hz, choosing a period time that is a multiple of 10000 microseconds will result in zero rounding error. (10000 µs at 44100Hz is 441 frames, and at 48000Hz is 480 frames).
See also DMIX section below for more information on rate calculation rounding errors.
Note: Only one of A2DP or SCO can be used. If both are specified, the last one given will be selected.
Without this option, bluealsa-aplay plays audio from all selected Bluetooth devices. Please note that playing from all Bluetooth devices at a time requires used PCM to be able to mix audio from multiple sources (i.e., it can be opened more than once; for example the ALSA dmix plugin).
The ALSA dmix plugin will ignore the period and buffer times selected by the application (because it has to allow connections from multiple applications). Instead it will choose its own values, which can lead to rounding errors in the period size calculation when used with the ALSA rate plugin. To avoid this, it is recommended to explicitly define the hardware period size and buffer size for dmix in your ALSA configuration. For example, suppose we want a period time of 100000 µs and a buffer holding 5 periods with an Intel 'PCH' card:
defaults.dmix.PCH.period_time 100000 defaults.dmix.PCH.periods 5
Alternatively we can define a PCM with the required setting:
pcm.dmix_rate_fix {
type plug
slave.pcm {
type dmix
ipc_key 12345
slave {
pcm "hw:0,0"
period_time 100000
periods 5
}
} }
bluealsa(8), bluealsa-rfcomm(1)
Project web site at https://github.com/Arkq/bluez-alsa
Copyright (c) 2016-2021 Arkadiusz Bokowy.
The bluez-alsa project is licensed under the terms of the MIT license.
November 2021 | BlueALSA v4.0.0 |