Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Запускает проигрыватель и плавно увеличивает громкость воспроизведения
- # с помощью pulseaudio. Всегда переводит звуковой поток проигрывателя на
- # требуемую звуковую карту.
- #
- # (c) Artyom Protaskin <a.protaskin@gmail.com>
- #
- player='deadbeef' # название проигрывателя
- player_run_cmd="$player" # команда запуска проигрывателя
- player_play_cmd="$player --play" # команда начала воспроизведения
- player_pause_cmd="$player --pause" # команда приостановки воспроизведения
- default_sink='0' # всегда выводить звуковой поток на эту звуковую карту
- display=':0.0' # используемый экран X, если неопределен
- if [ "$DISPLAY" = "" ]; then
- export DISPLAY=$display
- fi
- # временное отключение вывода звука с звуковых карт
- sinks=$(pactl list short sinks | sed 's/^\([0-9]*\).*$/\1/')
- for sink in $sinks; do
- pactl set-sink-mute $sink 1
- done
- # запуск проигрывателя, если не запущен
- if [ $(ps x | grep $player | grep -vc grep) -eq 0 ]; then
- $player_run_cmd
- wait
- fi
- # кратковременное воспроизведение, с целью
- # регистрации клиента и создания звукового потока в pulseaudio
- $player_play_cmd && wait && $player_pause_cmd
- # восстановление воспроизведения с звуковых карт
- for sink in $sinks; do
- pactl set-sink-mute $sink 0
- done
- # получение id проигрывателя в pulseaudio
- player_cid=$(pactl list short clients | grep $player | sed 's/\([0-9]*\).*/\1/')
- # получение id звукового потока проигрывателя
- player_sink_input=$(pactl list short sink-inputs | sed "s/^\([0-9]*\)\t[0-9]*\t$player_cid.*$/\1/")
- if [ "$player_sink_input" = "" ]; then
- echo "Ошибка! Не удалось определить звуковой поток проигрывателя."
- exit
- fi
- # перенос звукового потока проигрывателя на требуемую звуковую карту
- pactl move-sink-input $player_sink_input $default_sink
- # уменьшение громкости звукового потока проигрывателя до нуля
- pactl set-sink-input-volume $player_sink_input 0
- # воспроизведение музыки в проигрывателе
- $player_play_cmd
- # плавное увеличение громкости звукового потока проигрывателя
- for volume in $(seq 17476 4369 65535); do
- pactl set-sink-input-volume $player_sink_input $volume
- sleep 5
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement