I have a bash script that plays .mp3 files on my Raspberry Pi via omxplayer. But can not control the local (earphone) audio volume with the GUI. Is there a comm
You can set the initial volume by adding the option --vol
:
omxplayer --vol N Sogn_title.mp3
Where N
is a number indicating the millibels. Valid values for N are for example:
5000 (increase the volume)
-15000 (decrease the volume)
Omxplayer doesn't use alsa for sound output, but it's possible to use stdin interface
Volume up:
echo -n "+" > /proc/$(pidof omxplayer.bin)/fd/0
Volume down:
echo -n "-" > /proc/$(pidof omxplayer.bin)/fd/0
In Raspberry Pi 3, I was able to adjust audio volume through alsamixer.
In the command line type
alsamixer
you will see
Just use up or down arrow to increase or decrease volume. Press Esc. Volume is set.
to provide more precise information for playing through scripts, there are 3 ways to change sound volume in current version of omxplayer, and values are not so intuitive:
--vol YYY
, double millibels, default 0, range [-6000:0]double:XXX
, default 1, range [0:1]xxx to yyy relation is: XXX = 10 ^ (YYY / 2000)
... according to omxplayer.cpp source code, reverse formula would be: YYY = 2000 * (log XXX)
.
so if we need:
(10^(-4000/2000)=10^-2=0.01
(10^(-2000/2000)=10^-1=0.1
(10^(-602/2000))~=0.5
(10^(0/2000)=10^0=1)
working bash script for dbus volume command:
export DBUS_SESSION_BUS_ADDRESS=$(cat /tmp/omxplayerdbus.${USER:-root})
dbus-send --print-reply --session --reply-timeout=500 \
--dest=org.mpris.MediaPlayer2.omxplayer \
/org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Set \
string:"org.mpris.MediaPlayer2.Player" \
string:"Volume" double:0.5 # <-- XXX=0.5 (50% sound volume)
equals to volume parameter at startup:
omxplayer --vol -602 mediaFileName.mp4
... both sets sound volume to 50%.
I am not sure how to adjust the volume level with a command. But when using the omxplayer CLI, just press - or + to turn the volume up or down.