mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Fedora10サーバにWebカメラを構築!

[ webサイト, サーバ構築, 自作pc ] [ Webカメラ ]

こんばんわ。こちらは今日も雪でした。まだ降るようです。

さて、FedoraサーバにWebカメラをつなげて、ライブ画像(自分のデスクトップ)を配信できるようになったので報告します。

ちなみに以前は、メインマシン(WindowsXP)にWebカメラをつなげて、フリーソフト(LiveCapture2)でキャプチャした画像をFedoraサーバにFTPでアップロードして使用していました。 しかし、これではメインマシンが起動中でないとライブの画像が配信できませんでした。 (最初から、FedoraサーバにWebカメラを導入すればよかったのですが、非常に難しかったので。トホホ・・・) 今回はどうしても、FedoraサーバにWebカメラを導入してやろうと思い立ったので、今回もものすごく四苦八苦して何とか導入できました。

導入方法

(Fedora10インストール、Webサーバ導入済みが前提) (但し、環境によっては若干異なることもあると思いますし、自分自身も今までに何回もWebカメラ導入しようとしてアレコレしていたので、これが完璧の導入方法といえないと思います。あしからず・・・) いろんなサイトを参考しました。参考にしたサイトは最後にご紹介します。

1.X環境導入

X11のウィンドウでモニタするアプリなので,X11に依存する。 X11 がインストールされていない環境下では,webcam も make できない。 ということは、うちのFedoraはX環境入れてないので、以下を実行。

1
[root@noah ~]# yum -y install xorg-x11-drivers

2.libjpeg-devel, kernel-devel, ncurse-devel のインストール

その他make中に(ファイル不足で)エラーが出るので libjpeg-devel, kernel-devel, ncurse-devel をインストール。

1
2
3
[root@noah ~]# yum -y install libjpeg-devel
[root@noah ~]# yum -y install kernel-devel
[root@noah ~]# yum -y install ncurse-devel

3.config.h ファイルの作成

カーネルのバージョンによっては linux/config.h ファイルが無いので、コンパイルに失敗します。 以下のコマンドでとりあえず空ファイルを作ればなんとかなります。

1
[root@noah ~]# touch /usr/src/kernels/(カーネルバージョン)/include/linux/config.h

4.xawtv の導入

キャプチャソフトであるxawtvをダウンロード&解凍する。

1
2
3
[root@noah ~]# wget http://dl.bytesex.org/releases/xawtv/xawtv-3.95.tar.gz
[root@noah ~]# tar zxvf xawtv-3.95.tar.gz
[root@noah ~]# cd xawtv-3.95

5.fbtools.c, matrox.c の修正

Fedora10では、fbtools.c, matrox.c でコンパイルエラーとなるので、以下のように修正

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@noah xawtv-3.95]# vi console/fbtools.c
-------------------------------------->
24行辺り
// #include
#define PAGE_SHIFT      12
#define PAGE_SIZE       (1UL << PAGE_SHIFT)
#define PAGE_MASK       (~(PAGE_SIZE-1))
<--------------------------------------
[root@noah xawtv-3.95]# vi console/matrox.c
-------------------------------------->
11行辺り
// #include  /* PAGE_SIZE */
#define PAGE_SHIFT      12
#define PAGE_SIZE       (1UL << PAGE_SHIFT)
<--------------------------------------

※参考にしたサイトでは、Fedora10では console/fbtv.c の 190行辺りの static char snapbase; を、 char snapbase; に修正 ともあるが、実際にはそのような箇所は無かったので無視した。 (xawtv-3.94 にはあった)

6.xawtv のパッチ適用

以上のままでは、後にwebcam起動時に

1
2
3
4
5
6
7
8
9
10
11
-------------------------------------->
・・・
write config [ftp]:
local transfer ~/Desktop/uploading.jpeg => ~/Desktop/webcam.jpeg
ioctl: VIDIOC_DQBUF(index=0;type=VIDEO_CAPTURE;bytesused=0;flags=0x0
[];field=ANY;;timecode.type=0;timecode.flags=0;timecode.frames=0;
timecode.seconds=0;timecode.minutes=0;timecode.hours=0;timecode.userbits="";
sequence=0;memory=unknown):
Invalid argument
capturing image failed
<--------------------------------------

のようなエラーが出る(バグのようです)ので、パッチを当てる。 こちらからソースをコピーして、xawtv-3.95-patch.diff の名前で保存(xawtv-3.95フォルダに)。 以下を実行

1
2
3
4
[root@noah xawtv-3.95]# patch -p1 -N < xawtv-3.95-patch.diff
-------------------------------------->
patching file libng/plugins/drv0-v4l2.c
<-------------------------------------

7.コンパイル&インストール

1
2
3
[root@noah xawtv-3.95]# ./configure
[root@noah xawtv-3.95]# make
[root@noah xawtv-3.95]# make install

8.webcam設定ファイルの作成

当方は、/usr/local/etc/に作成。 (以下はうちの環境の場合。 WebカメラとWebサーバは同一ホストなのFTP送信はしません。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@noah ~]# vi /usr/local/etc/webcamrc
-------------------------------------->
[grab]
device = /dev/video0
text = "webcam %Y-%m-%d %H:%M:%S"
#infofile = filename
fg_red = 255
fg_green = 255
fg_blue = 255
width = 320
height = 240
delay = 60
wait = 0
#input = composite1
#norm = pal
rotate = 0
top = 0
left = 0
bottom = -1
right = -1
quality = 75
trigger = 0
once = 0
archive = /var/www/html/pic/webcam/%y%m%d%H%M.jpg[ftp]
#host = xxx
#user = xxxxxx
#pass = xxxxxxxx
dir  = /var/www/html/pic/webcam
file = webcam.jpg
tmp  = uploading.jpg
passive = 1
debug = 0
auto = 0
local = 1
ssh = 0
<--------------------------------------

9.webcam 実行

画像の保存先を作成しておいて、webcamコマンド実行。

1
[root@noah ~]# /usr/local/bin/webcam /usr/local/etc/webcamrc > /dev/null 2> /dev/null &

10.ブート後自動起動の設定

/etc/rc.d/rc.local に上記9.のコマンドを追加。

11.WebページにHTMLドキュメントを作成

(以下は当方サンプル)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<HTML><HEAD>

<META http-equiv="Content-Language" content="ja">
<META http-equiv="Content-Type" content="text/html;
 charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="refresh" content="30">
<TITLE>My Room</TITLE>

</HEAD>

<BODY bgcolor="#000000">

<STRONG><EM><FONT COLOR="#00FFFF">My Room (いま)
</FONT></EM></STRONG>
<P><IMG src="pic/webcam/webcam.jpg" border="0" name="WEBCAM"
width="320" height="240"><BR>
<FONT SIZE = "2" COLOR="white">
↑30秒間隔で画像表示が更新されます。</FONT><BR>
<FONT SIZE = "1" COLOR="white">
※Webカメラ停止中の時は更新されませんので・・・</FONT></P>

</BODY>

</HTML>
<--------------------------------------

12.動作確認

以上で、WebページにWebカメラの画像が表示されると思います。(うまくいけば) (参考までに、当方のWebカメラ画像は こちら ) 当方のホームページは現在とてもショボイので、あまり見ないでください。)

[ 自分で使ってみての感想 ]

  • 画質がWindowsでキャプチャしてアップロードしていたときより、暗い・悪い。 (これはいろんなサイトで言われています。改善はしていきたいですが・・・)
  • サーバにWebカメラがつながっているので、常に画像が更新されて良い。 (今は自分の机の上を写しているだけだが、いずれは監視カメラ的に使いたい)

[ 参考にさせてもらったサイト・ページ]

Comments