Re[10]: Поддержка USB-камер в Android
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 27.05.23 17:28
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>В андроиде вообще никаких драйверов нет для посторонних устройств.


Вопрос в том, какие устройства он считает "посторонними". Он понимает, как минимум, audio (class 1), HID (class 3), mass storage (class 8). Но полного списка я навскидку найти не смог.

vsb>Даже для UART через USB нет драйвера


Как раз для UART "даже" неуместно — он не входит в множество типовых устройств, доступных андроидному приложению. А клавиатура, позиционер, камера, звук — входят. Поэтому было бы вполне логично иметь искаропки возможность работать с любым из таких устройств одинаково, будь оно встроенным или подключенным через USB (в этом, собственно, и заключается идея драйвера). Для клавиатуры, мышки/тачпада, устройств хранения и звука это возможно. Отсюда и удивление, что для камеры это не так.
Re[11]: Поддержка USB-камер в Android
От: vsb Казахстан  
Дата: 27.05.23 21:57
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Вопрос в том, какие устройства он считает "посторонними". Он понимает, как минимум, audio (class 1), HID (class 3), mass storage (class 8). Но полного списка я навскидку найти не смог.


Каким API можно работать с HID-устройствами? Я такого API не видел. Есть только некий Bluetooth HID.
Отредактировано 27.05.2023 21:58 vsb . Предыдущая версия .
Re[12]: Поддержка USB-камер в Android
От: kov_serg Россия  
Дата: 27.05.23 22:16
Оценка:
Здравствуйте, vsb, Вы писали:

ЕМ>>Вопрос в том, какие устройства он считает "посторонними". Он понимает, как минимум, audio (class 1), HID (class 3), mass storage (class 8). Но полного списка я навскидку найти не смог.


vsb>Каким API можно работать с HID-устройствами? Я такого API не видел. Есть только некий Bluetooth HID.

Как обычно открываешь файл и пишешь/читаешь кадрами по 65 байт.
Re[13]: Поддержка USB-камер в Android
От: vsb Казахстан  
Дата: 27.05.23 22:26
Оценка:
Здравствуйте, kov_serg, Вы писали:

ЕМ>>>Вопрос в том, какие устройства он считает "посторонними". Он понимает, как минимум, audio (class 1), HID (class 3), mass storage (class 8). Но полного списка я навскидку найти не смог.


vsb>>Каким API можно работать с HID-устройствами? Я такого API не видел. Есть только некий Bluetooth HID.

_>Как обычно открываешь файл и пишешь/читаешь кадрами по 65 байт.

Какой файл?
Re[12]: Поддержка USB-камер в Android
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 28.05.23 08:26
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Каким API можно работать с HID-устройствами?


Увы, я не спец по Android API. Но USB-адаптеры клавиатур и мышей понимаются издавна. Может, конечно, там совместимость на уровне линукса, но ничто не мешает иметь такую же и для камер.
Re: Поддержка USB-камер в Android
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 23.05.24 18:03
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

Сегодня получил еще один эндоскоп (тонкий, 5.5 мм — позарился на дешевое предложение, шоб було).

VID 1902, PID 8301. заявляет поддержку YUY2 uncompressed и разрешений 640x480, 320x240 на 5, 15, 30 Гц.

Не работает ни с одним из рекомендуемых в инструкции приложений (CameraFi, Inskam, USBWebCamera) на обоих имеющихся у меня андроидофонах — все они тупо показывают черный экран. Хотя на Xiaomi с CameraFi работает несколько секунд, затем приложение виснет.

Под Win7 работает со Skype, не работает с любой версией VLC. VLC никаких ошибок не выдает — просто тихо не открывает окна просмотра.

Под Win11, в ее родном окошке в настройках, работает несколько секунд, и виснет.

Под XP, в ее родном "Scanners and cameras" — работает стабильно.

Склоняюсь к выводу о том, что дело не в драйверах, а в какой-то радикальной кривизне большей части видеософта, которой требуется определенное поведение камеры. Если камера ведет себя "не как обычно" (но, вполне возможно, технически допустимо) — софт идет вразнос.
Re: Поддержка USB-камер в Android
От: Alekzander Россия  
Дата: 23.05.24 18:44
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Году в 2014-м купил первый USB-эндоскоп, еще с камерой более 10 мм диаметром. Он честно поддерживал соответствующий USB class, и все винды, начиная с XP, прекрасно работали с ним через общий стандарный драйвер UsbVideo. Но, когда попытался подключить к моему тогдашнему смартфону на андроиде 4.2, меня ждал облом — оказалось, что для многих USB-камер нужны песциальные драйверы, которых в андроиде искаропки нету, их нужно устанавливать через рутование и приседания. Тогда я эту идею забросил.


ЕМ>После этого у меня был эндоскоп поменьше, который с тем смартфоном тоже не работал, нормально работал с андроидом 5.1, но только в двух приложениях — CameraFi и UsbWebCamera. В остальных видео жутко лагало с любым разрешением, приложения зависали, иногда и сам андроид начинал виснуть.


ЕМ>Последние несколько лет я пользовался 8-мм моделью на SunplusIT SPCA2092A (PID 2085).


ЕМ>Недавно купил еще один с кабелем подлиннее, он оказался на какой-то микросхеме Realtek (PID 0521). Все винды его снова отлично понимают, но CameraFi и UsbWebCamera на смартфонах с андроидом 5.1 и 9.0 не понимают напрочь. Получилось только в inskam, и только в андроиде 5.1 — в 9.0 не получилось.


ЕМ>Отчего весь этот ужас? В андроидах нет нормальной поддержки стандартных функций USB class, и каждому приложению приходится использовать свои костыли? Или нет более-менее устоявшегося API, и там регулярно меняются умолчания, предпочтения и прочее?


ЕМ>Как в последних андроидах с поддержкой USB-камер?


Почему требование рута для установки драйверов ты называешь ужасом? Это совершенно нормальная ситуация. Это компьютер, на нём никсовая операционная система. Что за консьюмеризм? Меня вот больше бесит, что рут не идёт из коробки. Это, понятно, сделано, чтобы анальные зонды нельзя было так просто деинсталлировать.

А что касается, почему бы их не преинсталлить, так XP после установки занимала до 3.5 гиг. Понятно, что сейчас хранилище подешевело, а во времена 4.2 это было сильно дофига.
Re[7]: Поддержка USB-камер в Android
От: andrey.desman  
Дата: 24.05.24 06:14
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Если в образе нет драйвера UVC, то не должны работать никакие камеры. Ну, или какие-то могут опознаваться по VID/PID, но это опять же означает, что все сделано через задницу.


Если там нет родного ядерного драйвера, то приложухи могут его навелосипедить в юзерспейсе через libusb / libuvc. Так, например, делает уже упоминавшийся ранее camerafi.
Работоспособность и качество таких велосипедов может сильно варьироваться.
Re[2]: Поддержка USB-камер в Android
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 24.05.24 09:22
Оценка:
Здравствуйте, Alekzander, Вы писали:

A>Почему требование рута для установки драйверов ты называешь ужасом?


Не "драйверов вообще", а конкретно драйверов USB-камер. Просто потому, что "драйвер" — это магическая сущность, которая либо есть, и тогда все работает, либо ее нет, и тогда не работает ничего. Это вполне себе банальный код, ответственный за управление устройством. И повышенные права необходимы только для установки самого основного, жизненно необходимого кода, без которого устройство не может обслуживаться системой и использоваться приложениями.

И в *nix, и в винде драйверы разделены на два уровня — режима ядра и режима пользователя. Для установки первых нужны административные права, вторые требуют повышенных прав только при установке в виде общесистемного ресурса. Без драйверов ядра устройства вообще никак не могут быть использованы, а драйверы режима пользователя (по сути, это просто динамические библиотеки) нужны лишь для унификации интерфейсов, чтобы каждое приложение не тащило с собой один и тот же код.

Исходя из того, что режим preview в XP прекрасно работает во всеми USB-камерами, что мне попадались, все типовые режимы и форматы были отработаны еще минимум двадцать лет назад. Что-то из этого было реализовано в ядре, остальное — в общесистемных фильтрах DirectShow. Если в андроиде этот минимум не реализован искаропки, и требует тащить свой код либо в приложении, либо устанавливать системные драйверы через рут — это ужас и есть, без вариантов.

A>больше бесит, что рут не идёт из коробки. Это, понятно, сделано, чтобы анальные зонды нельзя было так просто деинсталлировать.


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

A>почему бы их не преинсталлить, так XP после установки занимала до 3.5 гиг.


Я Вас умоляю. Там весь код, обслуживающий базовые потребности видеоустройств, занимает от силы несколько мегабайт.
Re[8]: Поддержка USB-камер в Android
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 24.05.24 10:21
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Если там нет родного ядерного драйвера, то приложухи могут его навелосипедить в юзерспейсе через libusb / libuvc.


Фишка в том, что в XP ядерный драйвер usbvideo.sys (только он и работет в режиме ядра из всей видеокухни) существует с начала 2000-х и имеет размер 120 килобайт. Остальная кухня, потребная для использования видеоустройств в DirectShow, существует с тех же времен, занимает максимум единицы мегабайт. Почему в андроиде это давным-давно не устаканено — большой вопрос. Другой вопрос — почему в этих приложениях до сих пор не поддерживаются функции соответствующего класса USB.
Re[9]: Поддержка USB-камер в Android
От: andrey.desman  
Дата: 24.05.24 11:26
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Фишка в том, что в XP ядерный драйвер usbvideo.sys (только он и работет в режиме ядра из всей видеокухни) существует с начала 2000-х и имеет размер 120 килобайт. Остальная кухня, потребная для использования видеоустройств в DirectShow, существует с тех же времен, занимает максимум единицы мегабайт. Почему в андроиде это давным-давно не устаканено — большой вопрос. Другой вопрос — почему в этих приложениях до сих пор не поддерживаются функции соответствующего класса USB.


Ты сравниваешь ПК с телефоном. Универсальную ОС с заточенным под конкретное железо и сценарии использования дистрибутивом... Результат немного предсказуем.
Re[10]: Поддержка USB-камер в Android
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 24.05.24 11:38
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Ты сравниваешь ПК с телефоном. Универсальную ОС с заточенным под конкретное железо и сценарии использования дистрибутивом...


Не будь "заточенное" в разы требовательнее к ресурсам, чем "универсальное" — не сравнивал бы.

Ну и перед реализацией этой "заточенной" была WinCE/Mobile, которая по "персональной" функциональности не слишком отличалась от XP. Так что гугелю не прокатит оправдание в стиле "мы были первыми, мы не знали".

Если андроид подо что и заточен, то прежде всего под самые примитивные сценарии использования, но за счет совершенно неимоверной (в пересчете на функциональность) ресурсоемкости. Это и раздражает, что не в коня корм.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.