Автор Тема: Използване на GSM-a като web камера в комютъра.  (Прочетена 13712 пъти)

Naka

  • Напреднали
  • *****
  • Публикации: 3460
    • Профил
Тия дни се мъчих да включа камерата на умнофона към компютъра така, че да се вижда от всички линукс десктоп приложения, все едно че е е стандартна стационарна usb веб камера.
Например вижда се от Google Meet, което е много актуално при сегашното online обучение.
Разбира се всеки може да си купи обикновенна убс камера за 30-70лв., но не това е целта. Качеството на GSM камерата е съпоставимо (понякого и доста по-добро) с качеството на тези евтинийки. Разбира се ако някой иска наистина хубава камера, с  висока светлочуствителност, нисък шум, висока революция, то трябва да похарчи около 170++лв за качествена век камера, запример това: Logitech C922 Pro Stream.
Инструкции има много по нета, но са разхвърляни..някои разчитат даже на специaлни прoграми, които трябва да се инсталират на компютъра и да емулират /dev/videoX

Как става:
––––––––
1. Необходимо е на GSM-a да се инсталира програма, която го превръща в IP wifi камера. Необходимо е и стабилен (домашен) wifi, който да държи поне до 1.5-2 МБaйта/сек. Необходимо е задаването на статичен ip адрес на телефона (не по DHCP) - тук в примерите е  192.168.1.16. Всички тези gsm апликации при стартирането си изписват адреса на стрима: например rtsp://192.168.1.16:8080/video/h264

CamON
--------
https://play.google.com/store/apps/details?id=com.spynet.camon&hl=bg&gl=US

http://192.168.1.16:8080/video/mjpeg
rtsp://192.168.1.16:8080/video/h264

http://192.168.1.16:8080 (веб интрфейс)

Работи много хубаво.
* поддържа 30 fps (950x530) на rtsp;//
* Не изкривявя цветовете на ръкописното писанe (синьо, не става черно) въпреки, че се гледа отдалече.
* има опция за задаване на Битрейта при rtsp:// (200k като че ли е оптимално)

IP Camera 沈垚 / ShenYao China - китайска , иконка мръсно жълто, охра !!!
---------------------
https://play.google.com/store/apps/details?id=com.shenyaocn.android.WebCam&hl=en_US&gl=US

rtsp://admin:admin@192.168.1.16:8554/live

Стрима е с парола. Също работи много хубаво. Има много опции, поддържа големи режими.

DroidCam
------------
https://play.google.com/store/apps/details?id=com.dev47apps.droidcam&hl=bg&gl=US

Интерфейс: http://192.168.1.16
Свободната версия е ограничена до 640x480
Всички в нета цитират само DroidCam, тя е нещо като стандарт, но не съм очарован. Ако някой иска да я пробва трябва да си я купи, но безплатната не става за нищо.



2. Инсталиране на драйвера v4l2loopback (наричат я още факе камера), който емулира/създава /dev/video0

modprobe v4l2loopback


lsmod | grep v4l2
v4l2loopback           45056  0
videodev              286720  1 v4l2loopback


в резултат на зареждането на драйвера v4l2loopback в /dev се появява факе файл /dev/video0

cd /dev
ls -l
crw-------  1 root    root     10, 238 Nov 19 22:29 vhost-net
crw-------  1 root    root     10, 241 Nov 19 22:29 vhost-vsock
crw-rw----+ 1 root    video    81,   0 Nov 19 22:47 video0
crw-rw-rw-  1 root    root      1,   5 Nov 19 22:29 zero
naka@debian11:/dev$

su
chmod a+rw video0
(иначе някои клиентски приложения не работят, заради групата video)


3. Лепилото между Ip стрима и /dev/video0

CamON
--------
Код:
ffmpeg -i http://192.168.1.16:8080/video/mjpeg -r 30 -vf format=yuv420p -f v4l2 /dev/video0
ffmpeg -i rtsp://192.168.1.16:8080/video/h264  -r 30 -vf format=yuv420p -f v4l2 /dev/video0


IP Camera 沈垚 / ShenYao
----------------------------
Код:
ffmpeg -i rtsp://admin:admin@192.168.1.16:8554/live -r 60 -vf format=yuv420p -f v4l2 /dev/video0


4. Тестване
cheese или Webcamoid,
но най-добре:     ffplay /dev/video0

Вече трябва Google meet (или която и да друга програма) да опознае факе камерата като /dev/video0


4. Подробности/още

Опцията !!!
-r 60 или -r 30 е много важна защото греши (изходния) фрeим рейт, забива или не се конектва. Без нея изходния фрейм рейт го дава много....хиляди и флудва драйвера!!!!
(входния фрейм рейт си е ок - такъв какъвто идва от стрима rtsp://....)

---

Други възможни колор формати за video for linux (-vf format=yuv420p)
Но смисъл от задаването им няма, няма да стане по-качeствено, защото входния ip стим, така и такa си е в yuv420p
-----------------------------------------------
yuv420p   (хоризонталната хрома е 1/2 от яркостта, вертикална хрома липсва =0)
yuv422p   (хоризонталната хрома е 1/2 от яркостта, вертикална хрома e 1/2 от яркостта)
rgb24     (без компресия на color-space-a)

---

В howto не е описано как да направим кърнелския модул v4l2loopback, да се зарежда автоматично при рестарт. Не е оправено и проблема с пермишъните на /dev/video0 (и групата video). Според системата всеки да се оправя.

---

В дебиан кърнелсия модул  v4l2loopback идва от пакета v4l2loopback-dkms

---

В Центос7 и Федора <32 такъв пакет липсва. Има за Центос8 и Федора 32.
Има проект:  https://github.com/umlaeute/v4l2loopback
но той не се компилира под кърнел 3.10.0 (Центос7) дава някава грешка с липсващи кърнелски хедъри за колорспейса.

За да се пусне под Центос7 може да се ползва това (мъничко по-стари версии):
http://sources.buildroot.net/v4l2loopback/
v4l2loopback-0.12.2.tar.gz   2019-Jun-19 20:39:57   47.9K   application/x-gtar-compressed
v4l2loopback-0.12.3.tar.gz   2020-Jan-21 20:44:47   48.8K   application/x-gtar-compressed
v4l2loopback-0.12.4.tar.gz   2020-Apr-10 20:58:02   50.1K   application/x-gtar-compressed
v4l2loopback-0.12.5.tar.gz   2020-Jun-17 06:40:09   50.2K   application/x-gtar-compressed
v4l2loopback-v0.10.0.tar.gz   2017-Jun-21 00:05:09   45.8K   application/x-gtar-compressed
v4l2loopback-v0.12.0.tar.gz   2018-Nov-08 20:06:43   47.5K   application/x-gtar-compressed
v4l2loopback-v0.12.1.tar.gz   2019-Apr-07 14:08:49   47.7K   application/x-gtar-compressed
v4l2loopback-v0.12.2.tar.gz   2019-Jun-01 12:45:59   47.9K   application/x-gtar-compressed


Последната с която се компилира правилно и работи е:
v4l2loopback-0.12.4.tar.gz   (2020-Apr-10)


---
Оптималният бит рейт за rtsp:// е около 200-300кбайта/сек Например в CamOn може да се задава. http:// стимовете обаче ползват mjpeg и при тях (при движение) бит рейта може да скочи до 1.2MB/сек. Оптималната резолюзия е малко по-малка от 1280x720
С тези приграми може да се постигне и 1280x720 X 30fps но му е малко тежичко...
---
Някои от андроидските пишат, че можело да пуснат и h265 (HEVC) стрим, но аз не можах да го пусна. Казва че тел. нямал хардуерните възможности... Може би платените версии.
---
Не успях да пусна да използва многото камери (3-4), дето са поникнали като пришки на гърба на новите телефони. Тези програми, разпознават само едната (втората). Би трябвало с всичките да стане много качествено. Може би някои други програми или платените им версии...... За китайската програма IP Camera Pro 沈垚 но платената и версия пише: It supports multi-lens selection on Android 9 and above.
---
Ако някой знае друга алтернатива на ffmpeg.... ще се радвам ако я сподели. Аз не успях с mplayer/mencoder нито с vlc (конзолно) -- разправят, че можело също с графичното vlc.

КРАЙ

« Последна редакция: Nov 28, 2021, 20:26 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8917
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
prodylvawa ......

Извинявай, че задавам тъпи въпроси, преди да си довършил „Как-да“-то. Но, каква е целта на това упражнение? Да вижда даскала, че ученика пише наистина контролните си?
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3460
    • Профил
prodylvawa ......

Извинявай, че задавам тъпи въпроси, преди да си довършил „Как-да“-то. Но, каква е целта на това упражнение? Да вижда даскала, че ученика пише наистина контролните си?

За спорта...Те даскалите и учениците си знаят за какво им е...И други чат програми ползват веб камери, не само Google Meet. А и защото много трудно го събрах това howto - особенно с частта ffmpeg -i ... Никъде го нямаше това описано, само на едно единствено място, забутано в някакъв форум, някой беше пуснал подобен ред..та се усетих как става, почерпих идеята и го доработих до работещ варянт.

Така и така го написах за мене си защо да не го пусна тук....На някой може да му е от полза.
« Последна редакция: Nov 30, 2021, 10:22 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

stancho_25

  • Участници
  • ***
  • Публикации: 4
    • Профил
Само да допълня малко за DroidCam... Лично аз от страна на телефона ползвам DroidCam OBS, от което общо взето съм по-доволен въпреки стандартната резолюция. От страна на компютъра е необходим самия OBS Studio към който се добавя съответно плъгин, играещ ролята на клиент. В последните версии стрийм потока създаден в него освен да се изпрати в някоя социалка или платформа,  може да се излъчва и през фейк камерата, която си създава. Това може би е малко овърхед, ако се ползва само за вебкамера, но поне за мен е бързо и лесно с няколко клика да я стартирам когато ми трябва. Пък и дава малко повече възможности за настройки на самото видео.

Поздрави :)
« Последна редакция: Dec 13, 2021, 14:08 от stancho_25 »
Активен