Почему несколько потребителей могут получить доступ к *одному* потоку v4l2-loopback с веб-камеры

Игнорирование заголовка и предположение, что текст в файле не имеет пробелов в начале строки (в вашем вопросе):

$ sed -e 's@/Proj/abc/\([^/]*\)/\([^/]*\)/conf/@\1,\2,@' file
-------------PATH AND FILE NAME--------,USER--,DATE-----,TIME---,STATUS
app,app_pit,HUB_TEST.apx,uJones,4/24/2018,5:55:58,OK
app,app_pit,test_acqit1.apx,uSmith,3/8/2018,10:16:41,OK
app,app_pit,test_bkfs.apx,uHarry,/26/2018,9:47:03,OK

Команда sedзахватывает строки appи app_pit(, которые, как я предполагаю, могут различаться ), и заменяет путь в исходных данных этими запятыми в -между ними, оставляя последний бит пути как собственное поле.

Перенаправьте это в новый файл, а затем исправьте заголовок (, если необходимо ).

9
16.11.2020, 14:31
1 ответ

Так задумано. Во-первых, допустим, что несколько процессов могут открывать устройство /dev/video0, но только один из них сможет выдавать определенные элементы управления(ioctl ())до тех пор, пока не начнется потоковая передача.

Элементы управления V4L2 определяют такие вещи, как битрейт. После того, как вы начнете потоковую передачу, ядро ​​​​не позволит вам изменить их и вернетEBUSY(Устройство или ресурс занят ), если вы попытаетесь. См. это примечание в исходниках ядра. Это эффективно блокирует других потребителей, поскольку вы должны установить их перед началом потоковой передачи.

Что делает v4l2loopback по-другому? Он добавляет логику и структуры данных для множественных средств открытия и по умолчанию не будет пытаться применять новые элементы управления , предоставляя собственный установщик.

Обратите внимание, что v4l2loopback должен иметь несколько открывателей, как минимум два, чтобы быть полезными . Один читатель и один писатель.

6
18.03.2021, 23:33

Теги

Похожие вопросы