|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
05.11.2015, 14:55 | #1 | ||
Senior Member
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601 |
Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Наш уважаемый коллега Legich5.
Предложил сообществу: http://geektimes.ru/post/265186/ О чем нам и сообщил наш коллега ALS: http://cyber-place.ru/showpost.php?p=28772&postcount=35 свой вариант решения проблемы связки вебкамера-роутер - низкое разрешение и малое кол-во fsp при трасляции и записи видео. Решение проблемы он разбил на два этапа. Первый этап - патч для драйвера uvc: Цитата:
Цитата:
Собираем прошивку с нуля: Код:
git clone git://git.openwrt.org/15.05/openwrt.git cd ./openwrt ./scripts/feeds update -a ./scripts/feeds install -a make defconfig make prereq Драйвер uvc расположен в директории: ./openwrt/build_dir/target-вашего-роутера/linux-вашего-роутера/linux-3.18.23/drivers/media/usb/uvc Нам нужно внести изменения в 3 файла: - uvc_driver.c - 8 строчек - uvcvideo.h - 1 строчка - uvc_video.c - 10 строчек (менять значения в трех под свою камеру) Можно сделать это патчем разместив его: ./openwrt/target/linux/папка_вашего_роутера/patches-3.18/850-uvc-quirk-compression-rate.patch И собрав прошивку. Соответственно: патч добавляет строчки в указанные номера строк: Код:
@@ -113,6 +113,14 @@ @@ -148,8 +148,9 @@ @@ -2102,6 +2102,16 @@ Строки без + уже содержаться в файле. Можно просто поправить 3 этих файла и закинуть их после сборки без прошивки без патча в папку с заменой файлов. Прилагаю 3 файла в архиве, но в uvc_driver.c вам необходимо внести изменения самостоятельно - под вашу камеру. Это можно сделать подключившись к роутеру по ssh и выполнив Код:
dmesg | grep UVC Код:
[ 14.470000] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (0c45:62c0) http://www.ideasonboard.org/uvc/ - пользуемся функцией "Найти" у браузера. И добавляем в uvc_driver.c свою камеру: Код:
/* Microdia Sonix USB 2.0 Camera */ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x0c45, .idProduct = 0x62c0, .bInterfaceClass = USB_CLASS_VIDEO, .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_QUIRK_RESTORE_CTRLS_ON_INIT | UVC_QUIRK_COMPRESSION_RATE }, === Если компилируем с патчем: Выполняем : Код:
make menuconfig Запускаем: Код:
make V=s Если подкладываем готовые файлы в: ./openwrt/build_dir/target-вашего-роутера/linux-вашего-роутера/linux-3.18.23/drivers/media/usb/uvc uvc_driver.c, uvcvideo.h, uvc_video.c Можно удалить все скомпилированные файлы из папки: ./openwrt/bin/папка_вашего_роутера/ и сразу снова выполнить: Код:
make V=s Проверить работу можно подключившись к роутеру по ssh и выполнив: Код:
grep dwMaxVideoFrameSize /lib/modules/3.18.23/uvcvideo.ko Код:
root@OpenWrt:~# grep dwMaxVideoFrameSize /lib/modules/3.18.23/uvcvideo.ko 3uvcvideo: dwMaxVideoFrameSize fixed to %d. Код:
lsmod Код:
videobuf2_core 28748 1 uvcvideo videobuf2_memops 1216 1 videobuf2_vmalloc videobuf2_vmalloc 2145 1 uvcvideo Архив патч: target.zip распаковать и закинуть с подтверждением замены файлов, в корень ./openwrt. Архив: build_dir.zip распаковать и закинуть с подтверждением замены файлов, в корень ./openwrt после компиляции прошивки без патча и снова выполнить make V=s Править только файл uvc_driver.c - под вашу камеру. Последний раз редактировалось sunny; 12.11.2015 в 00:04. |
||
05.11.2015, 20:40 | #2 | ||
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Цитата:
Цитата:
|
||
05.11.2015, 21:36 | #3 |
Junior Member
Регистрация: 05.11.2015
Сообщений: 26
Вес репутации: 0 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Добрый день,
"Logitech C270 - так понимаю не поддерживает UVC_QUIRK_COMPRESSION_RATE?" Вопрос не совсем корректный. UVC quirks это набор костылей для различных проблем с камерами. В файле uvc_driver.c есть массив uvc_ids который определяет какие костыли включить для каждой камеры. Это - настройки по-умолчанию. Есть возможность задать quirks при загрузке драйвера в ручную, но это не очень удобно. Для вашей камеры надо определить следующее: * Поддерживает ли она MJPG режимы. * Определить idVendor и idProduct для камеры. Это можно сделать на PC c Linux используя команду lsusb. Например для моей камеры: oleg@xcom-5x:~$ lsusb Bus 003 Device 002: ID 046d:0823 Logitech, Inc. * Найти в массиве uvc_ids запись соответствующую вашей камере (по idVendor и idProduct). * Добавить флаг UVC_QUIRK_COMPRESSION_RATE в поле driver_info. Можно проще, но потеряв в гибкости. Флаг UVC_QUIRK_COMPRESSION_RATE используется в файле uvc_video.c, строка 117. Надо изменить условие чтобы максимальный размер фрейма всегда корректировался для MJPG режимов. |
05.11.2015, 21:41 | #4 |
Junior Member
Регистрация: 05.11.2015
Сообщений: 26
Вес репутации: 0 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Чтобы определить поддерживает ли камера MJPG режимы надо на картинке
посмотреть какие есть опции в списке Capture Image Formats. |
05.11.2015, 23:46 | #5 | |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Цитата:
на свои (файл приложил). |
|
06.11.2015, 02:13 | #6 |
Senior Member
Регистрация: 15.07.2014
Сообщений: 939
Вес репутации: 990 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Скомпилировал прошивку с uvc2http, вместе с поддержкой usb, video (список пакетов приложил) . В dev/video0 есть, в процессах uvc2http - есть. Камера не включается (светодиод не горит), и по http://192.168.1.1:8081 нет ничего (в Opera,Chrome,VLC). Файлы использовал уже патченные от sunny, и uvc_driver.c, который выше выложил. Через терминал порт 192.168.1.1:8081 пингуется нормально. Подключал также другую Logitech C510, такая же история. Роутер Netgear 3800(ar71xx)
P.S. Заметил в uvc_driver.c этот параметр только у Logitech HD Pro Webcam C920 (для Logitech HD Webcam C270 такой же поставил) .bInterfaceClass = USB_CLASS_VIDEO, У всех остальных Logitech по другому: .bInterfaceClass = USB_CLASS_VENDOR_SPEC, Может надо ставить этот последний? Последний раз редактировалось sakatgg; 06.11.2015 в 03:14. |
06.11.2015, 09:41 | #7 |
Junior Member
Регистрация: 05.11.2015
Сообщений: 26
Вес репутации: 0 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Добрый день, sakatgg. Надо посмотреть что происходит в системе:
* пришлите лог с системы: dmesg > dmesg.log * посмотреть сколько свободно помяти в системе: free > free.log |
06.11.2015, 05:10 | #8 |
Senior Member
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Legich5
Доброе время суток . Спасибо за отклик, рады видеть Вас здесь . Нас очень заинтересовал ваш опыт. Есть давнее желание добится от связки роутер+вебкамера(ip-камера) - функционала видеорегистратора. http://cyber-place.ru/showpost.php?p=28334&postcount=4 Нами был установлен на openwrt 15.05 (14.07) motion+ffmpeg. http://cyber-place.ru/showpost.php?p=28528&postcount=34 === Используя "тонкую" настройку uvc драйвера по вашей технологии - я попытался получить более высокое разрешение и fsp записанных роликов с помощью motion+ffmpeg. Использовал openwrt 15.05, веб камера (UVC,mjpeg):https://www.hama.com/00086510/hama-ac-150-webcam Камера находиться в подъезде, доступ только через ssh, shell openwrt не поддерживает lsusb. http://cyber-place.ru/showpost.php?p=28559&postcount=2 Удалось получить готовые видеоролики при разрешении 640x480 5-8 fsp (в свойствах файла) В motion-е выставлено значение v4l2_palette 8 - mjpeg === Я пересобирал прошивки с вашим значением U5 и пробывал увеличить до U10. В итоге нагрузка на железо действительно снизилась (top) загрузка процессора в пределах 73-83% (было 97-99%) память порядка 65-75% Увеличилось время на создание видео ролика - а вот fsp готового ролика уменьшилось до значения 2 fsp. === Если окажите посильное содействие в решение данной задачи будем очень признательны.... Предыстория богатая: http://mainloop.ru/linux-os/make-low...fi-webcam.html http://autohome.org.ua/12-openwrt/16...mery-v-openwrt http://wifine.com.ua/index.php/17-ho...o-surveillance http://habrahabr.ru/post/208058/ http://geektimes.ru/post/258168/ http://habrahabr.ru/post/190728/ http://wiki.first-leon.ru/index.php/...B5%D1%80%D1%83 |
06.11.2015, 09:59 | #9 |
Junior Member
Регистрация: 05.11.2015
Сообщений: 26
Вес репутации: 0 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Дополнение к тому как получить лог от драйвера UVC. Здесь оригинал на английском.
1. Включить трассировку в драйвере UVC: sudo echo 0xffff > /sys/module/uvcvideo/parameters/trace 2. Перезапустить uvc2http: /etc/init.d/uvc2http reload 3. Собрать лог: dmesg > dmesg.log 4. Отключить трассировку: sudo echo 0 > /sys/module/uvcvideo/parameters/trace Я не могу сейчас проверить команды на железе, поэтому возможно их надо подправить. В этом же логе можно найти идентификаторы idVendor и idProduct, например так: dmesg | grep UVC и поискать глазками. Sunny, возможно в вашем случае узкое место это motion и ffmpeg. Увеличив разрешение вы увеличили объем данных которые они обрабатывают. Я посмотрю детальней, но только на выходных. |
06.11.2015, 10:43 | #10 | |
Senior Member
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601 |
Re: Вебкамера, высокое разрешение, fsp и роутер со слабым железом
Цитата:
Готов выступить выступить в качестве подопытного для промежуточных версий === У sakatgg-а роутер: Netgear WNDR3800 http://wiki.openwrt.org/toh/netgear/wndr3800 Достаточно мощное железо: CPU:680MHz Flash:16MiB RAM:128MiB === У меня: Asus RT-N14U http://wiki.openwrt.org/toh/asus/rt-n14u CPU:580MHz Flash:16MiB RAM:64MiB === Да shell OpenWrt отрабатывает: Код:
dmesg | grep UVC [ 14.470000] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (0c45:62c0) Последний раз редактировалось sunny; 06.11.2015 в 10:48. |
|
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
|
|