Отправка входного сигнала веб-камеры для увеличения с использованием записанного клипа
У меня есть идея, над которой я работал, но есть некоторые технические детали, которые я хотел бы понять, прежде чем продолжить.
Насколько я понимаю, Linux взаимодействует с базовым оборудованием через /dev/. Я возился с входом видеокамеры для масштабирования, и я нашел кого-то, кто объяснил, что мне нужно создать виртуальное устройство и подключить его к выходу другой программы под названием v4loop. Мои вопросы
1- Как Zoom обнаруживает веб-камеры, доступные для ввода. В моем каталоге /dev есть 2 «файла», называемых видео (/dev / video0 и /dev / video1), но масштабирование обнаруживает только одну веб-камеру. Связь с веб-камерой осуществляется через этот видеофайл или нет? Если да, то почему простое создание не влияет на выбор ввода Zoom. Если нет, как зум определяет ввод и считывает поток веб-камеры?
2- могу ли я создать виртуальное устройство и написать для него модуль ядра, который будет вводить данные из локального файла. Я написал много модулей ядра и знаю, что у них есть методы чтения, записи и выпуска. Я хочу анализировать видео всякий раз, когда выдается запрос на чтение из масштабирования. Как следует кодировать видео? Это mp4 или необработанный формат или что-то еще? Как быстро я должен отправлять ввод (в килобайтах). Думаю, это зависит от моих характеристик записи с веб-камеры. Если это 1920x1080, и каждый пиксель составляет 3 байта (RGB), и он записывается со скоростью 20 кадров в секунду, я могу просто подсчитать, сколько байтов генерируется в секунду, но как Zoom ожидает, что вход будет загружен в него. Предполагая, что он отправляет поток в реальном времени, он должен считывать ввод каждые несколько миллисекунд. Как мне получить доступ к такой информации?
Заранее спасибо. Это обучающий эксперимент, я просто пытаюсь сделать что-то интересное, что у меня есть мотивация, одновременно узнавая больше о связи между Linux и оборудованием. Я все еще новичок, поэтому, пожалуйста, не торопитесь.
1 ответ
Судя по всему, существует два типа файлов /dev/video*. Один для метаданных, а другой - для фактического потока с веб-камеры. Создание виртуального устройства того же типа, что и поток, в каталоге / dev привело к тому, что Zoom распознал его как независимую веб-камеру, даже без создания файла метаданных. Я наконец-то добился того, чего хотел, но я использовал функцию виртуальной камеры OBS Studio, которая была добавлена после обновления 26.0.1, и до сих пор она работает отлично.