LINUX-BG   Адрес : http://www.linux-bg.org
video4linux и как да си направим webcam server
От: Камен Медарски
Публикувана на: 7-10-2004
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=365722797
 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 >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.16 usr + 0.03 sys = 0.19 CPU)