от Камен Медарски(7-10-2004)

рейтинг (49)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

 Video4linux и как да си направим webcam server.


Автор Камен Медарски fgets@abv.bg


Тези дни ми се наложи да си поиграя с възможностите за видео
изобразяване на linux. По-точно става въпрос за TV / capture
устройство с използването на така нареченото video4linux (за напред
тъй като ме мързи да пиша цялото име, ше ползвам абревиатурата
v4l) под linux, е в крайна сметка хората са измислили подходящо
име. В интерес на истината в момента се сещам за доста възможности
за приложението, на този приятна за конфигуриране и използване
опция в ядрото. Една от тези възможности ми се наложи да
реализирам, това е да направя webcam server, или по-просто казано
да гледам през браузъра си картината която се предава към тази
кепчър карта от обикновена камера, и сега с удоволствие ще споделя
с вас натрупания опит.    

Предполагам, че на всеки му се е приисквало да си види
физиономията лепната на някоя web страница :), но е друго когато
виждаш, че тя се движи. В началото, когато ми показаха картата с
която щях да експериментирам, аз малко се усъмних в това, че ще
може да покаже и един кадър, но както и да е.  

Интересно ще е да кажа какъв е хардуера и софтуера с които съм
работил.

Кепчър картата е DVD EZMaker Gold на AVerMedia
(www.avermedia.com)  
Видео камерата е JMK wireless video and audio camera model
WS-212AS
Slackware current
Kernel 2.6.8.1 (последният до този момент)

Първоначалните ми знания за това как да подкарам тази непонятна за
мен PCI карта, бяха съизмерими с /dev/null а най-лошото беше, че
това се виждаше и на стандартния ми изход :> .Но по същество.
След не много време и преглеждане на документацията в ядрото както и
изхода на една много полезна програма, lspci ме окуражиха да
продължа. От lspci забрах, че тази неизвестна карта ползва чип на
Philips, това опредено освети малко тунела.

/*изход на lspci

root@pirat:~# lspci
.
.
.
01:07.0 Multimedia controller: Philips Semiconductors SAA7130
Video Broadcast Decoder (rev 01)
.

*/

От тук нататък всичко е много лесно:

Първото нещо която трябва да направите е ... да си сипете една
бира.
Второто е да прекомпилирате кърнела си.
Това предполагам, че много от вас го могат и затова няма да се
впускам в подробности, само ще спомена че съм компилирал частта
Видео за Линукс като модули. Тази част се намира в Device Drivers
--> Multimedia devices -->Video For Linux. Избирате  

<М>Video For Linux
Video For Linux -->
<M> Philips SAA7134 support

(това е визуализация при ядро 2.6 при по стари версии не съм много
сигурен дали е така. Но по-важно е да се спомене, че при новите
ядра версия 2.6 е включена поддръжка на v4l2)

или ако ползвате конзолен режим за конфигуриране трябва да изберете
да се компилират като модули

CONFIG_VIDEO_DEV = <M>
CONFIG_VIDEO_SAA1734 = <M>

тези които желаят могат да ги включат в ядрото, предполагам, че
няма да има проблем.

Смятам, че с това обяснение бях достатъчно ясен, освен за хората
които си нямат и на идея за какво говоря. На тях бих им препоръчал
да се обърнат за помощ към linux-bg.org за по-подробни и добри
статии на тема компилиране на кърнел.

След като компилирате и стартирате новия кърнел, може да проверите
дали все пак той работи.

root@pirat:~# modprobe saa7134
root@pirat:~# lsmod
Module                  Size  Used by
saa7134                99152  0
video_buf              21316  1 saa7134
v4l2_common             4928  1 saa7134
v4l1_compat            13764  1 saa7134
i2c_core               20688  1 saa7134
ir_common               4356  1 saa7134
videodev                7616  1 saa7134
root@pirat:~#

Урааа това е едно наистина добро начало ... следва да си налеем
още по една бира.( Не знам ако наистина продължавам така, дали ще
мога да довърша тази статия :) )

Сега идва ред на "юзър спейс" програмите. Програмата която ви е
необходима се нарича xawtv.

Ако нямате инсталиран софтуера xawtv може да го свалите от следния
адрес: http://dl.bytesex.org/releases/xawtv/
Не знам дали Слак има пакет xawtv (но мисля че няма), защото не
ми остана време да проверя но това е без значение, защото софтуера
се компилира без никакъв проблем.  

root@pirat:~#./configure
root@pirat:~# make
root@pirat:~# make install

(За ползващите Debian мога да дам следния пример apt-get
install xawtv и apt-get install webcam)

В този пакет са включени доста програми за манипулация върху
хардуера.

Няма да се впускам в това как да използвате xawtv, защото това не
е в целта на тази статия. Но които се интересува пакета има много
подробни man страници.

Програмата на която ще наблегна е webcam, тя е част от пакета
xawtv.
За да работи нормално програмата приема като параметър има на
конфигурационен файл. Този файл може да го кръстите както искате и
разположите където искате. За този пример аз съм избрал
име /etc/webcam.conf, че е по-прегледно.

root@pirat:~# cat /etc/webcam.conf
[www]
dir = /var/www/htdocs
file = webcamoutput.jpg
local = 1

[grab]
device = /dev/video0
width = 352
height = 288
delay = 1
norm = pal
quality = 100
root@pirat:~#

Двете секции на този конфигурационен файл оказват къде да се
записва изходния файл и съответно от къде да се чете.

dir = /var/www/htdocs -- оказва, че изходния файл
webcamoutput.jpg трябва да бъде записан в папка /var/www/htdocs

file = webcamoutput.jpg -- изходен файл в jpg формат  

още един важен параметър е  

delay = 1 -- това е времето за опресняване на изходния файл в
секунди.

Последното което трябва да се направи, не е толкова несъществено.
Това е да се запусне httpd, ако не знаете как -> linux-bg.org

В папката със документите на сървъра създайте файл с име
webcam.html като добавите следното съдържание към него.

<html>
<head>
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="refresh" CONTENT="3">
</head>
<body>
<center>
<h2>My Web Cam</h2>
<img src="webcamoutput.jpg">
</center>
</body>
</html>

И сега с любимия си браузър може да проверите дали всичко работи
правилно на адрес http://yourdomainname/webcam.html

Сега вече имате работещ webcam server, надявам се все на някой да
съм му бил полезен. За благодарности, поздравления, комплименти,
чекове, обиди, поправки, добавки  и всичко останало моля пишете ми
на fgets at abv dot bg.  

Благодаря Ви за вниманието :>  

Камен Медарски 2004.


<< Ускорител на заявки за TLD BG | Как да настроим SQUID да оторизира потребителите от Microsof >>