LINUX.ORG.RU

[PulseAudio]Переключение активного «выхода» из консоли

 


0

1

Т.к. весьма задолбало каждый раз при просмотре видео делать кучу настроек для переключения на телик, вынес два скрипта на панельку. С xrandr разобрался быстро. Для PulseAudio повозился - нашёл команду:

pacmd set-default-sink 0

Которая вроде и переключает «девайс»(в настройках звука GNOME на вкладке «Выход» выбирается нужное), но звук по прежнему выводит из колонок, вместо телика по HDMI... ЧЯДНТ? :)

★★★★

а у тебя точно hdmi виртуальная звуковуха имеет номер 0?

т.е. ты сначала выполняешь эту команду, и только потом запускаешь плеер?

anonymous
()
Ответ на: комментарий от anonymous

т.е. ты сначала выполняешь эту команду, и только потом запускаешь плеер?

Да, пробовал и так - не получается... И по списку sink'ов HDMI таки с индексом 0. К тому же будь ещё чего левое на 0 - звук бы не играл вовсе.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

> К тому же будь ещё чего левое на 0 - звук бы не играл вовсе.

не факт
если с нулевым номером вообще sink'ов нет -> команда игнорируется как невалидная -> дефолтный выход остается прежний

anonymous
()
Ответ на: комментарий от anonymous

команда игнорируется как невалидная -> дефолтный выход остается прежний

Тогда почему в настройках звука GNOME переключение на девайс с HDMI отображается? :) Но ладно, как доберусь домой - ещё раз по индексам пробежусь.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Тогда почему в настройках звука GNOME переключение на девайс с HDMI отображается? :)

т.е. после выполнения команды:

pacmd set-default-sink 0
в настройках звука в гноме видно, что дефолтовый выход переместился на hdmi?
ну, тады ой! :)
вероятно в самом плеере гвоздями прибито, что выводить звук надо через определенную карту;
или если плеер выводит в alsa'у, а дальше через alsa-plugins-pulseaudio в PA и далее, то смотреть настройки этого хвоста;
а может в DE есть какой-нибудь менеджер (например в KDE4 видел такой для параметров окна: размер, положение на экране, и т.д. - то что ты, как я понял, руками через xrandr сделал; может и для звука есть настройки), в котором можно настроить привязку конкретного приложения к определенной звуковухе, и тогда твой плеер проскочит мимо заботливо подстроенного дефолтового звуковыхода :)
вообще, у меня тоже в мыслях есть реализовать именно эту фичу - пускать плеер потоковых трансляций на TV, подключенный по hdmi (и видео и звук) при том, что все остальное должно по-дефолту юзать монитор и аналоговую встроенную звуковуху; идея у меня схожая: звук переключать через pacmd/pactl, а вот TV у меня настроен как separate X-session, поэтому перед запуском плеера достаточно сделать:
export DISPLAY=:0.1
но заниматься этим руки еще не дошли; поэтому я этой темой тоже интересуюсь; целевая система - домашняя, так что попробовать тоже сейчас не могу - на работе

если все получится - поделись опытом :)

anonymous
()
Ответ на: комментарий от anonymous

вероятно в самом плеере гвоздями прибито, что выводить звук надо через определенную карту;

Не-не, DeaDBeeF и SMplayer(mplayer) настроены на вывод через PulseAudio, и всё они проигрывают посредством HDMI, если из гномовской тулзовины сделать переключение. И походу придётся её сорцы ковырять, что бы найти - что же она там дёргает... :)

а может в DE есть какой-нибудь менеджер (например в KDE4 видел такой для параметров окна: размер, положение на экране, и т.д. - то что ты, как я понял, руками через xrandr сделал; может и для звука есть настройки), в котором можно настроить привязку конкретного приложения к определенной звуковухе, и тогда твой плеер проскочит мимо заботливо подстроенного дефолтового звуковыхода :)

Проблема в том, что постоянно на что-то прибивать мне не надо, нужно переключаться. Отдельный софт, который может так перебивать - pvucontrol(gtk-тулзовина, вроде офииальная от разработчиков PulseAudio), но делает это он только в пределах одной сессии кажись.

вообще, у меня тоже в мыслях есть реализовать именно эту фичу - пускать плеер потоковых трансляций на TV, подключенный по hdmi (и видео и звук) при том

Вообще я уже склоняюсь к тому, что бы подправить конфиги PulseAudio - там можно скомбинировать sink'и и сделать дублирование звука.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Проблема в том, что постоянно на что-то прибивать мне не надо, нужно переключаться. Отдельный софт, который может так перебивать - pvucontrol(gtk-тулзовина, вроде офииальная от разработчиков PulseAudio), но делает это он только в пределах одной сессии кажись.

мне тоже постоянно не надо; у меня критерием надо/не_надо является способ запуска - когда «надо» запуск происходит через специальный скрипт; осталось только найти код, который в этот скрипт запихать :)

а что ты хочешь получить, я уже перестал понимать :), если хочешь переключать руками, то чем плох pavucontrol? с другой стороны:

постоянно на что-то прибивать мне не надо

но делает это он только в пределах одной сессии

/0 :)

сейчас у себя попробовал:
1) hdmi действительно имеет индекс 0 - проскакивает раньше всех, видимо из-за того, что он на видеокарте находится, которая инитится первая;
2) смена дефолтного синка действительно не дает эффекта - vlc все равно выводит на аналоговый выход;
3) удалось переключить уже играющий звук на hdmi-выход командой:

pacmd move-sink-input 6 0
правда предварительно нужно было сначало глазами найти свой vlc'эшный звук (индекс 6) в списке sink-input'ов;
4) в настройках KDE (подсистема phonon, вроде) есть отдельные настройки «приоритетов устройств воспроизведения звука» для разных категорий источников: «Музыка», «Видео», «Общение»,...; видимо влияют именно эти настройки; наверно приложение коннектится к PA через этот phonon, который и решает куда выводить звук; для гнома, наверно, тоже есть какая-то похожая прослойка;

в общем намечается тупичок: пока рабочий вариант видится так: нужно запустить приложение, потом ждать, периодически проверяя, создания соответствующего sink-input'а в PA (как-то муторно грепать вывод команды list-sink-inputs), извлекать его индекс и затем переключать выход командой move-sink-input; мне такой способ не нравится, должен быть более прямой метод

anonymous
()
Ответ на: комментарий от anonymous

а что ты хочешь получить, я уже перестал понимать :), если хочешь переключать руками, то чем плох pavucontrol?

Тем, что его надо запускать и делать доп. настройки(искать прогу и переключать её), вместо единого клика по красивой иконке на панеле... :)

/0 :)

То было просто как доп. инфо, что мол даже если захотеть прибить на постоянно, то не получится )

Andru ★★★★
() автор топика

эврика!
вот работающий вариант выбора девайса перед запуском приложения:

PULSE_SINK=alsa_output.hw_1_7 vlc some_file
играет звук на телевизоре
alsa_output.hw_1_7 - это имя hdmi sink'а в выводе pacmd list-sinks

правда после этого система где-то сохраняет этот аудио-девайс для vlc и все последующие запуски vlc прибиваются гвоздями к этой карте, пока не нашел как отключить такое поведение

anonymous
()
Ответ на: комментарий от ZenitharChampion

Да мне не конкретную прогу перекинуть надо, а полностью сменить устройство вывода по умолчанию...

Andru ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.