LINUX.ORG.RU

Как настроить систему, чтобы одновремено воспроизводил только один плеер?

 , , , ,


1

1

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

Проблема: Играет Clementine, или VLC, я хожу по тырнету и натыкаюсь на нужное видео, включаю и надо вручную лезть в плеер, выключать. Другой вариант - воспроизводится музыка/видео, звонят по скайпу/вайру/фецбуку, нужно опять вручную останавливать всё.

В двадцатьпервом веке, когда все плееры и даже браузеры имеют интеграцию с MPRIS, или как оно там, когда даже при звонке на мобильный телефон у меня на компе останавливается воспроизведение (посредством kdeconnect), на самом компе нет автоматической рулилки? Даже в КДЕ, в котором есть всё???

Ткните ,пожалуйста, носом в «куда читать», или скриптик киньте, или хоть видию на ютубе, а то гугл офигел от моей формулировки вопроса и начал предлагать шампунь.

и натыкаюсь на нужное видео, включаю и надо вручную лезть в плеер, выключать.

Ты можешь скачивать видео и смотреть, например, в vlc.

когда даже при звонке на телефон у меня на компе всё останавливается

Это как? Тебе звонят на городской и оно само отключается, серьёзно? Ну, или на сотовый звонят, и оно всё автоматически отключается?

В такой формулировке бесплатного решения нет, даже сырого платного, как мне кажется, нет.

Меняй формулировку, а то тоже начну предлагать шампуни.

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

Специально для тебя отредактировал.

Ты можешь скачивать видео и смотреть, например, в vlc.

Блеян... забыл в шапку добавить просьбу не предлагать дебильных решений.

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

Похоже придётся. Но так глубоко лезть не хотелось бы, каждый раз потом перепатчивать? Да и - пульса вообще имеет функцию остановки/включения потоков? Лучше уж плазмоид для управления воспроизведением пропатчить, который бессмысленно болтается в лотке. Всё равно он фиксирует новые потоки, вот бы он мог ими автоматически рулить. Правда, остаётся другая проблема - воспроизведение нескольких плееров в самом браузере, через плагин интеграции виден только один, последний запущеный. всё как-то пере-недо...

ChekPuk ()

нужно опять вручную останавливать

У меня глобальная клавиша F8 паузит в плеере. В пульсе можно отключать звук для браузера. А если выводить на hw:0 это не блочит остальные звуки?

nakita ()

Ткните ,пожалуйста, носом в «куда читать», или скриптик киньте, или хоть видию на ютубе, а то гугл офигел от моей формулировки вопроса и начал предлагать шампунь.

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

Можно вот что. Написать приблуду, которая будет получать список программ, воспроизводящих через pulseaudio и мьютить старые при добавлении новых. Думаю что это не сложно, но - мьютить не есть останавливать воспроизведение. Если konnect может останавливать плееры, то и эта приблуда может отдать соответствующую команду.

С остановкой отдельных вкладок браузера тут проблема, вряд ли сейчас решаемая.

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

Вот мне про плазмоид «проигрыватель» подумалось, он ведь, сканирует на воспроизведение, вот и останавливал бы всё кроме нового, правда, звонки ему пофигу.

На заре пульсаудио попадались статейки со всякими примерами пользы, которую от пульсы можно получить, а теперь что-то не натыкаюсь.

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

как ты определяешь какая информация тебе нужна? Не отвечай, просто подумай и просчитай сколько и каких действий нужно совершить для принятия решения о нужности и где в этом процессе находится стадия с проблемой которую я описываю.

ChekPuk ()

Виджет регулировки громкости в Плазме показывает же все активные аудиопотоки, просто затыкай те что тебе не нужны и всё, зачем велосипедить?

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

Это, во первых, не решает проблемы вручную выключать ненужное, во вторых - пауза нужна для того, чтобы продолжить с того же места, а не просто не слышать что там читают, поют, орут.

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

Лан, как ты себе это представляешь? Например, kdeconnect может ставить на паузу плееры, когда видит что на телефон поступает звонок, но, во-первых, ставить на паузу проигрывание в браузерах он не умеет, только глобально отключать звук, во-вторых - kdeconnect заранее знает, какое приложение привилегировано, а у тебя абсолютно любое приложение или даже вкладка браузера может получить фокус внимания, и как ты это решать думаешь?

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

Для того, чтобы kdeconnect мог останавливать и браузер - нужно установить пакет plasma-browser-integration, а в сам браузер соответствующий плагин. Тогда воспроизводимое будет доступно MPRIS и, соответственно, kdeconnect.

А с фокусом внимания заморачиваться не стоит, я могу включить _другой_плеер и уйти в третье окно, или переключаться вперёд-назад. Тут никакой зависимости от активного окна не может быть. А вот последнее включенное должно иметь приоритет. Если я хочу слушать нечто, то это явно последнее включенное (если вручную не остановил одно и не включил другое)

Со звонилками на линуксе всё сложнее. Похоже никто не пользуется инструментами, которые пульса предоставляет. Не сообщает о типе синка и сорса, в результате ни гарнитура не переключается в звонильный режим, ни даже подавление эха не включается (которое в пульсе автоматом должно срабатывать, если тип «phone», если я правильно помню). Все понадеялись на электрон, а он на всё болт ложил. Как отлавливать звонилки и принимать соотв. меры я не знаю. (да и вообще я ничего не знаю, одни обрывки частичной информации)

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

Для того, чтобы kdeconnect мог останавливать и браузер - нужно установить пакет plasma-browser-integration, а в сам браузер соответствующий плагин. Тогда воспроизводимое будет доступно MPRIS и, соответственно, kdeconnect.

Оно не со всеми сайтами работает. Щас проверил - ютуб оно действительно ставит на паузу, а вот например радио на di.fm - нет. Походу, нужны костыли под каждый отдельный сайт.

А вот последнее включенное должно иметь приоритет

Ну, может, это можно как-то реализовать, хз

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

С онторнетом и его приблудами всегда было и будет сложно. Есть штатный плеер, есть стандартный набор функций, но нет, нужно накостылять своё решение, ничего не умеющее, но с жучками и счётчиками.

Ладно, побырику как-то не получается.

ChekPuk ()

есть такая штука (из мобилок пошло) Use Case Manager, ucm.

вот, думаю, вокруг этой аббревиатуры можно что-то построить.

судя по энторнетам, ucm есть даже в альсе, и в пульсаудио есть какие-то завязки на это. но руками, похоже, всё равно работать придется (хоть и не патчить).

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

Но ucm же, вроде, для описания правил работы с устройствами, не?

Пока понятно, что нужно слушать dbus и управлять mpris, через тот же dbus, но сажать ещё одного «слушателя»? А есть в линуксе какойнить интернациональный даймон, сервис, виджет, которому можно просто написать правило как обрабатывать такие-то события?

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

Заложил проектик, надо будет сначала свой клизмоид склепать с идентичным функционалом. Кстати, переписать его, чтобы он каждый плеер показывал отдельно, бесит его поведение.

И я не понял, его автор - тот же чувак, что и kdeconnect написал. Он этот плазмоид просто «пристрелочно» написал? Или от него зависит kdeconnect? Сломаю чонить :)

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

Я очень сомневаюсь что плазмоиды друг от друга зависят. А вообще они состоят из двух частей - библиотечки .so источника данных и GUI на QML. Вот QML части точно безопасно править можно, а источники данных - надо смотреть, могут быть и общие.

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

Не, эта шняга на qml написана, а вот kdeconnect сложнее.

Разбираюсь в плеероменеджере этом - такая штука - он автоматически принимает первый плеер и если запустить (не останавливая первого) второй - то ему пофигу вообще, в качестве активного плеера так и стоит первый. Надо ли говорить, что эта блевотина не останавливает все плееры разом. Тут становится вопрос - он так и должен работать вообще? Зачем он его написал? Для того чтобы что? :О

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

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

по mouseover, если задачу сократить до «клацнул в браузере на видео, музыкальный плеер заткнулся».
если есть браузер с видео, то есть иксы-вяленый, значит можно получать активное окно, в котором клацают.

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

ну, для включения-выключения плеера мне плазмоид (неожиданно) вообще не нужен, для включения и выключения каждого имеющегося плеера достаточно... кнопок самого плеера, каждого. А эта штука зачем? Если бы он предоставлял доступ к управлению сразу всеми плеерами - есть вопросы, но в целом понятно, если доп. фичи - тоже понятно. А в таком виде он зачем нужен? Я пытаюсь понять, но не могу. Ведь этот плазмоид радостно включили в КДЕ и поставляют в дистрибутивах, они же не просто дураки какие-то? (дураки, но не просто) Например, этот замечательный плазмоид не включен в состав, а вотэтавот плеероменеджероподобная непонятина включена. Какой сакральный смысл? Через него кто-то (например kdeconnect) куда-то подспудно обращается?

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

Ап чём и речь :) Вот она клементина, жмёшь и останавливаешь, но нет! Я полезу в меню этого плазмоида и в списке плееров выберу клементину и только тогда включу/выключу её, а потом опять выберу VLC и включу/выключу его, и так далее. Это же гораздо интереснее :)

А вообще, не разберусь, где исходники этого плазмоида? Где его DataEngine mpris? Может там узкое место? Пытался сегодня перебрать список плееров, он перебирается, но установить последний появившийся активным и остановить всё кроме активного не получается. Туплю как всегда.

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

Я на работе сегодня мать его зарядное от ноута забыл. И он уже в ноль разряжен. А столько за вечер сделать хотел... Вот и этот плазмоид теперь не посмотреть.

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

Да ладно, разберусь, я тоже наскоками только. Исходники DataEngine mpris нашёл. Неудобство в том ещё, что Kdevelop о qml и плазмоидах даёт подсказки только в самоочевидных местах, а API на КДЕ очень витиеватое. Сидючи в парке и уча сына кататься на скейте было неудобно заниматься плазмодом. Пришёл домой, сел, тут же и одно нашёл и другое, если не засну, то наваяю сённи :)

ChekPuk ()

VLC

Так он так умеет. Умел, вернее. Лет 5 назад, когда ещё пользовался им, удивился, когда при звонке на телефон у меня vlc на паузу встал. Вот не помню, это через kdeconnect работало, или через vlc remote, кажется так приложение-пульт называлось.

orm-i-auga ★★★★★ ()
Ответ на: комментарий от orm-i-auga

Абсурдность ситуации состоит в том, что при звонке на телефон - останавливается, а при звонке на комп нет. В самом десктопном линуксе, с его рабочими окружениями и навороченными плюшками никто не следит за тем, чтобы остановить воспроизведение при звонке на произвольную звонилку, или автоматически останавливать предыдущие плеера при запуске нового, хотя все умеют в mpris и дбус.

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

Посидел я вчера, потыкал, оказывается этот датаенжин мприс сама по себе капризная штука и «фокус» постоянно перетягивается от кдешного приложения к приложению. А корни уходят далеко, даже таскменеджер сидит на мприсе. все эти невнятные сигналы, никакой возможности дебажить плазмоиды, чтобы увидеть что происходит... Короче, зря я связался с кдешными подсистемами, скрипт на баше давно бы уже работал :) Но уже охоту отбило.

ChekPuk ()

Когда-то во времена oss и других /dev/audio спрашивали с точностью на оборот. Играло только в один поток.

Т.ч. сноси заикуаудио и возвращайся к истокам.

beastie ★★★★★ ()

по какой логике будет решаться, кому можно стопорить другие плэеры, а кому нет? и как разруливать толкучку таких «приоритетных» приложений?

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

Всё предельно просто - последнее начавшее проигрывать - в приоритете.

Логика-то донельзя простая - каждое приложение при старте произведения выдаёт в mpris через dbus инфу с метаданными. Как только появился новый клиент (или старый начал воспроизводить), перебираем все клиенты, кто ещё воспроизводит. Опрашиваем, может ли ставить на паузу и останавливаем. По идее, можно и пульсу через dbus опрашивать и если появился пользователь микрофона - останавливаем все игралки.

Но я попытался сделать это в плазмоиде, используя dataengine mpris, но не получилось. Написать на баше можно, но хотелось жлегантного решения.

К тому же есть ещё задумка - современные звонилки на линуксе не используют шумоподавления и подавления эхо от пульсы. Вот бы и это прикрутить вот таким вот демоном.

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

Не, возвращение к истокам, оно, конечно хорошо, можно и человечинки покушать :)

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

Как ни крути - пульс нужная штука. Вот только слишком юниксвейная, слишком мало задач на себя берёт и не оставляет пользователю возможности встроенными скриптами расширить функционал, а жаль. Это было бы дабл-убер-супер-круто.

ChekPuk ()