Elphel 313
АрхивОгород КозловскогоКто такой Андрей Филиппов и что представляют собой его сетевые камеры, читатели должны знать: Андрей написал статью "Укрощение железного пингвина" и через "Компьютерру" объявлял конкурс на стример для его камеры.
Кто такой Андрей Филиппов и что представляют собой его сетевые камеры видеонаблюдения, читатели "Компьютерры" вообще-то должны знать: Володя Гуриев не так давно брал у него большое интервью ("Русско-американская мечта"), а сам Андрей написал статью "Укрощение железного пингвина") и через "Компьютерру" объявлял конкурс среди наших программистов на стример для его камеры: лучшие сейчас включены в зашитое в камеру ПО.
Вообще, зайдя на сайт компании Андрея Elphel Inс. (русский вариант лежит по адресу www.elphel.com/index_rus.html), можно разобраться во всех заинтересовавших деталях, - для беспамятных же и ленивых коротко резюмирую: Андрей - м.н.с. советских времен, вот уже без месяца десять лет пребывает в Штатах. Сперва работал на некую компанию, потом - разошелся с ее руководством и организовал собственную, состоящую, кроме него самого и жены Оли, из бухгалтера, сотрудника в Самаре и партнера в Китае.
Компания занимается разработкой и штучным производством камер видеонаблюдения, которые отличаются от тех, что представлены на рынке, по преимуществу сочетанием небывалого разрешения (на той камере, что у меня, разрешение трехмегапиксельное: 2048х1536) с очень приличной скоростью (в идеале, на полном разрешении - десяток кадров в секунду) при сравнительно щадящей цене (до тысячи долларов). Перетерпев три трудных года, сейчас Андрей зарабатывает достаточно, чтобы жить и даже развивать потихоньку свой бизнес, что - по сумме - можно счесть неким чудом, а если угодно - наградой за талант, чутье и упорство. Живет Андрей в Юте, волшебном штате (судя по фотоальбому, который у меня есть), где зимой бывает снег, а Большой Каньон и Йеллоустоун расположены в пределах доступности выходного дня. Сама камера - небольшая коробочка с объективом и гнездом под сетевой кабель, по которому подается и довольно большое питающее напряжение: 48 вольт, - что позволяет относить камеру сравнительно далеко от приемных устройств. Внутри нее находится веб-сервер, который, как и прочее программное обеспечение (те же, например, стримеры) зашит во флэш - и стало быть, обновляем. Процессор на камере программируемый, от Axis. Весь софт написан на Linux под GNU, однако, в силу универсальности интерфейса, видим из любой операционной системы, понимающей HTML. Скажем, из-под Windows ХР. Другой разговор, что всё затачивается и тестируется именно под Linux, так что наличие программ-просмотрщиков, их правильная работа и максимальные скорости не под Linux’ом не гарантируются. Тем не менее, в результате совершенно "огородных" мучений, мне удалось-таки устойчиво видеть real time движущуюся картинку приличного качества в разрешении 1600х1200, с частотой до 10 fps и при потоке (после встроенного jpg-сжатия) от 5 до 30 Мбит/с, хоть и с одно-двухсекундной задержкой, которую, в отличие от MPlayer’а под Linux, неизбежно дает QuickTime под Windows. Полагаю, смог бы добиться и полноразмерной (2048х1536), если бы вышеупомянутый единственный из известных мне и Андрею совместимый проигрыватель потока умел работать с разрешениями большими, чем реально представлено в системе.
Желание Андрея, чтобы именно я потестировал его камеру, и немалые энергетические, временные и денежные затраты на это мне, конечно, польстили, однако я до сих пор до конца его не понял: в отличие от Голубицкого с его очередным сериалом "За стеклом", я чрезвычайно далек от интересов видеонаблюдения (даже если я увижу дистанционно, что в моей квартире шарят воры, - мне просто некому будет об этом оперативно сообщить: консьержа в моем подъезде нет и быть не может, а на поворотливость ментов я по грустному опыту нисколько не рассчитываю) и, хотя, конечно, понимаю, что увеличение поля обзора в несколько раз и возможность разглядеть детали заметно увеличивают контроль за наблюдаемым объектом, таким образом позволяя как уменьшить число камер, так и отказаться от не вполне надежного панорамирования, - за живое эти проблемы не задевают меня все равно.
Однако история с камерой была столь захватывающей и имела такую едва ли не детективную интригу, что я очень Андрею за всё это благодарен.
Итак, начну по порядку. После первого электроннопочтового обмена мне позвонил знакомый Андрея, живущий в Зеленограде, и, сговорившись о времени, камеру мне привез. Вместе с компакт-диском, на который был записан загружаемый вариант Linux’а - Knoppix, специально под камеру заточенной сборки. (Еще на начальном этапе переговоров я предупредил Андрея, что устанавливать на компьютер Linux мне ну очень не хочется, чтобы, не дай бог, не разрушить привычную рабочую среду, - и вот, он предложил такой щадящий вариант, который, впрочем, предлагает и большинству покупателей своей камеры.) Мы подключили камеру к моему встроенному в "маму" гигабитному Ethernet-порту (Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller), и Knoppix его... не узнал. Ни так ни эдак: привезший камеру человек кое-что, в отличие от меня, в Linux понимал, так что не только бил по колесам и протирал стекло. Ладно, загрузились в Windows. Перестроили сетевой протокол под камерную подсеть (192.168.0...), камера увиделась и стала показывать превьюшки. Правда, ужасающе темные и бесцветные. Попытки увидеть движущуюся картинку, запустив один-другой из зашитых стримеров (результатов "компьютерровского" конкурса), к видимым результатам не привели: как мне стало яснее позже, после тупого перебора всех возможных вариантов, не каждый из стримеров дружит с QuickTime, а тот, в свою очередь, не показывает картинку, выходящую за рамки экранного разрешения. Тогда мы скачали Windows-вариант Linux’ового MPlayer’а, с которым камера должна была прекрасно работать под Linux (позже выяснилось, что и впрямь - работает, хоть и не идеально), но и он отказался подхватить и показать поток по указанному адресу. (Кстати, выполнения этого трюка я так и не добился.) Зеленоградский гость засобирался домой, а я сел писать отчет Андрею о первом опыте.
Спустя некоторое время выяснилось, что Linux-драйвер под мой Yukon, вообще говоря, существует и лежит в бесплатном доступе, но разработан не под GNU и потому для Андрея неприемлем. "Да бросьте вы! - пытался уговорить его я. - Ну какая разница?! Это ведь только, чтоб мне потестировать! Я даже, если хотите, и упоминать не буду, что пользовался не-GNU-драйвером! Ведь не так уж и много на свете сегодня компьютеров с гигабитным "Юконом", - еще три месяца назад и у меня стояла стандартная сетевая карточка, и теоретически могла остаться до сих пор...", - но нет! Андрей был неумолим. Он придумал вариант куда головоломнее, однако, что называется, вполне "чистый": купил у себя в Штатах адаптер USB-2 to Ethernet, протестировал его на совместимость с Knoppix’ом, записал мне новый вариант загрузочного компакта, - и всё это вместе выслал по DHL. Тут как раз грянули бесконечные праздники, посылка пришла не мгновенно и не без некоторых недоразумений, - однако после получения от Андрея ее реквизитов, я ею таки завладел.
Вставил диск в дисковод, переходничок - в USB-порт, а хвост от камеры - в пасть переходничка. Knoppix загрузился и сам вышел на управляющий сайт камеры. Всё вроде бы заработало, включая стример и MPlayer, - однако все так же невообразимо темно и серо. Я мало что написал Андрею, - послал ему и скриншот... Как известно, мы, огородники, читать гайды и мануалы не любим, нам подавай, чтоб все работало по умолчанию, а управление было интуитивно понятным. А тут, оказывается, ориентирующийся на солнечную Юту Андрей по умолчанию поставил выдержку всего в 2 мс. Ни автофокуса, ни автобаланса белого, ни автоэкспозиции у камеры не оказалось (что прямо-таки поразило меня, развращенного всякими цифровыми фото-, видео- и веб-аппаратами), - так что пришлось экспериментально увеличивать выдержку в пару сотен раз, - после чего, наконец, удалось разглядеть в кадре не только унылый пасмурный двор, но и собственные очертания в комнате. Однако на серость это не повлияло никак. Я послал Андрею очередной скриншот, - и спустя короткое время он ответил, что да, насчет цветовой насыщенности он как-то не подумал и что в прилагаемом обновленном firmware это уже учтено.
Получив письмо, я снова зашел в Knoppix и прошивку обновил. Интерфейс изменился, выдержка по умолчанию стала в десять раз большей (от этой печки уже можно было плясать), возник цвет и стало можно даже регулировать его насыщенность. И состав. (Правда, получить достоверную картинку при электрическом освещении мне так и не удалось, как я с цифрами цветовых составляющих ни манипулировал, - однако дневной свет передается весьма достоверно.)
Превосходно! Результат, в общем, был достигнут, хотя я как не понимал, так до сих пор и не понимаю, за что должен человек, установивший круглосуточное видеонаблюдение за своим двором, подъездом к аэропорту или, скажем, обезьяньим питомником, то и дело выглядывать на улицу, смотреть, как изменились условия освещения и вручную подкручивать параметры камеры. Еще оказалось, что гонимая стримером и отображаемая MPlayer’ом картинка время от времени (не слишком, правда, часто: раз, приблизительно, в час) замерзает, что, впрочем, лечится простым обновлением окна. Как это выглядит на видеозаписи, которую софт - во всяком случае, теоретически - позволяет вести, я так и не узнал, потому что сил на освоение еще и видеозаписи у меня просто не осталось; то есть я попытался сделать это под Windows, но на меня обрушилось пол-экрана отчета об ошибках, так что я бросил: когда чего-то не надо позарез, - порою бывает очень неохота с этим возиться...
Ладно. Knoppix - это хорошо (кроме чисто интеллектуальной радости понимать, что всё сделано на открытом софте, никаких других радостей он мне не доставил, а набирать опыт по соотнесению привычных виндовых программ и интерфейса с непривычными линуксовыми, - эта задача меня снова не завела: Отставнов как-то уже пытался приохотить меня к Linux’у...) Но меня заело: неужто нельзя и под Windows?
Первая проблема, которая тут возникла: не хотелось всякий раз перенастраивать подсеть адаптера на камеру, - и для начала я решил воспользоваться этим самым, Андреем присланным, вторым. Нашел для него Windows-драйверы, установил. Адаптер опознался, но при попытке подключить к нему любое устройство (не только камеру, но, скажем, и ноутбук), - подумав секунд пять, систему вырубал напрочь. А сколько я ни искал обновлений на этот драйвер, - так и не нашел. Но тут как раз подкатил "Стрим" вместе с зухелевским маршрутизатором, - однако настроен он был на автомат, - чтобы все мои компьютеры его видели и между собой рефлекторно дружили. Так что, меняя подсеть на камерную, я это взаимодействие тут же нарушал. Так и дергался туда-сюда, пока Андрей не надоумил меня, что IP-адрес камеры можно поменять. Поменял. Но тут пришла новая прошивка, и стало возможным еще раз перезаписать камерную флэшку - только из-под Linux-Knoppix. Ладно. Вернул IP-адрес назад. Перепрошился. Возвратился в Windows, и менять адрес еще раз показалось мне... ну, пусть не лень, - так... неизящно. Тут уж я связался с ZyXEL, и они объяснили мне, как создать в маршрутизаторе alias, чтобы камера понималась и с родным IP - правда, в самой камере все равно надо прописать адрес шлюза. Создавать alias пришлось посредством telnet’а, коим я не пользовался лет десять: со времен первых российских интернет-провайдеров, зачастую предлагавших получать-посылать почту именно так. Пахнуло ностальгией.
В конце концов всё заработало, причем - что называется, на автомате (редкие замерзания картинки на одном из четырех работающих под XP стримеров лечатся по F5), и сейчас я имею удовольствие в разрешении 1600х1200 всякий миг видеть самого себя за работой...
А Голубицкий, если б заменил свою веб-камеру с VGA-разрешением на Elphel, сумел бы разглядеть на экране не только свою огромную собаку, но и крохотного древнеегипетского котенка...