First, let's be lazy: this can be done using the GUI. Which GUI to use however depends on the audio output system you're using. Open VLC, and go to Tools > Preferences > Audio. The Output module setting will tell you what you're using.
If you're using Pulse, then your default volume level is handled by Pulse itself. The easiest way to configure that is to use pavucontrol
. Install it using your package manager, start VLC (with audio), and open pavucontrol
. Get to the Playback tab, and set VLC's new value (in your case, 50%).
If you're using ALSA, you can set your value in VLC directly. Just above the Output module option, check the Always reset audio start level to box, and select 50% in the slider next to it.
If you want to configure the volume level without using VLC/pavucontrol, then again, the method depends on your audio output. Let's have a look at VLC's code:
static int getDefaultAudioVolume(vlc_object_t *obj, const char *aout)
{
if (!strcmp(aout, "pulse"))
return -1;
else if (!strcmp(aout, "alsa") && module_exists("alsa"))
return cbrtf(config_GetFloat(obj, "alsa-gain")) * 100.f + .5f;
else if (!strcmp(aout, "sndio"))
return -1;
return -1;
}
I've simplified it a bit, but basically:
If you're using Pulse, VLC's configuration has no impact. You'll need to configure Pulse itself. Have a look at pactl
(or maybe pacmd for an interactive interface). Here's a "little" one-liner to set VLC's default level:
$ pactl set-sink-input-volume $(pactl list short sink-inputs | grep $(pactl list short clients | grep vlc | cut -f1) | cut -f1) 50%
And yes, that's ugly. Basically, I'm getting VLC's index (as a client), and finding the associated sink input's index. Then I inject that index into set-sink-input-volume
, and set the value to 50%. Have a look at pactl(1)
for more information about these pactl
commands. Remember that you can also use pavucontrol
to configure Pulse in a GUI :)
If you're using ALSA, your default volume level is determined using the alsa-gain
setting in ~/.config/vlc/vlcrc
. For a default volume of x
, you should set this value to ((x - 0.5) / 100) ^ 3
, since cbrtf
is a cube root. In your case, that means alsa-gain = (49.5 / 100) ^ 3 = 0.121287375
. You'll also need to set the volume-save
setting to 0 (false) in order to apply your new default value every time, regardless of the volume level you were at the last time you closed VLC.
~/.config/vlc/vlcrc
. – terdon Oct 21 '15 at 21:03