LINUX.ORG.RU

Совместное использование устройств

 , ,


0

1

Добрый день!
Интересует такой вопрос: возможно ли каким-либо способом использование одного устройства (например /dev/video0) двумя приложениями (например skype и vlc)? При использовании, устройство блокируется, но можно ли это изменить? Или же как-то продублировать устройство? Я думал, что поможет

v4l2-ctl -d0 --out-device /dev/video2
или
v4l2-ctl -d0 --export-device /dev/video2
, но оно так не работает, ругается на несуществующее устройство (как оно вообще работает, я не понял).

И со звуковыми устройствами тоже интересно подобное.

Ответ на: комментарий от iljuase

О, точно, спасибо) При прямом обращении к pulse-устройству возможно совестное использование. Жаль только, что некоторые проги по дефолту используют ALSA (тот же VLC, например), и в этом случае обращение к pulse не работает.

Теперь осталось с видео разобраться. Нашел вот это https://github.com/danielinux/ttybus, но не уверен, что это поможет.

UPD: Телега блокирует устройство, видимо тоже ALSA использует...

Strannik-j ★★
() автор топика
Последнее исправление: Strannik-j (всего исправлений: 1)
Ответ на: комментарий от Strannik-j

Телега блокирует устройство, видимо тоже ALSA использует…

У alsa есть dmix позволяющий играть с нескольких источников одновременно.
Создаешь /home/user/.asoundrc, что-то типа:

pcm.!default {
        type plug
        slave.pcm "dmixer"
}

pcm.dmixer  {
        type dmix
        ipc_key 1024
        slave {
                pcm "hw:0,7"
        }
}

ctl.dmixer {
        type hw
        card 0
}

hw: - свой. Telegram и mpv работают. По поводу микрофона не знаю.

Для видео вроде есть модуль ядра v4l2loopback.

arson ★★★★★
()

Ребят, спасибо за наводки, вроде получается, как доделаю, постараюсь написать гайд.

Strannik-j ★★
() автор топика
Ответ на: комментарий от arson

Вроде всё настроил с пульсой без плясок с dmix, но это работает только если все приложения запущенны в рабочей среде юзера. Как только пытаюсь запкстить что-то через systemd, c правами того же юзера(ffmpeg, например), то уже к устройству pulse доступа нет. Как бы это исправить? Запускать всю пульсу через systemd не хочу, т.к. в этих ваших интренетах говорят, что метод сей ненадёжный

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