#menu

やりたいこと

  • LinuxでVideo録画が行いたい
  • ストリーミングがやりたい
  • できたらweb録画をやりたい

ソフトウェア導入方法

  1. Debian3.1のカーネルを2.4→2.6にアップデート
  2. UBSドライバー,録画ソフトインストール
  3. ストリーミングソフトインストール(spook)

構成

  • PC(非常に旧式ですw)
    • CPU   pen233Mhz
    • メモリー 32M
    • HDD 3.2G
    • I/F USB1.0、FDD シリアル、パラレル(CD-ROMなんて物は無いです)
  • キャプチャーカード
    • Plexter PX-TV402U
  • OS
    • APT及びネットワークインストール容易なDebian3.1を使用

Debian3.1のカーネルを2.4→2.6にアップデート

  • Plexter PX-TV402U用のデバイスドライバーはカーネル2.6でないと起動しないためアップデートしています。
  • ソフトをAPTからインストール
    • gcc-3.0
      • gccが見つからんとでるのでリンクを張っておく
        
        #ln -sf /usr/bin/gcc-3.0 /usr/bin/gcc
        
  • kernel-package
  • libncurses-dev
  • module-init-tools
  • make menuconfig でコンフィグ設定
    • 自分が設定したコンフィグは添付参照(無線LANとかかなり削っています)
      #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (.config)
  • 以下コマンド入力
    • 削除簡単な様にdebパッケージにしています。
    • make-kpkg は非常に時間がかかります。このPCだと4時間ぐらい。。寝る前にやって起きたらできる感じです
make-kpkg clean 
make-kpkg kernel-image

  • 以下のフォルダーに作成されるのでdebパッケージをインストール
    • debパッケージ消したい場合は dpkg --purge コマンドで
/usr/src/linux/kernel-image-2.6.16_10.00.Custom_i386.deb
dpkg -i kernel-image-2.6.16_10.00.Custom_i386.deb
  • initrdイメージを作る
debian:/boot#mkinitrd -o /boot/initrd.img-2.6.16 2.6.16
  • /boot/grub/menu.lst内容を修正する
debian:/boot/grub# vi menu.lst
  • PCリブート
    • 1回目の起動だとエラーが出て異常に重たい(ネットワークも使えない)が再度リブートすると正常に動作する様に

UBSドライバー,録画ソフトインストール

インストール録画使用した感

  • ドライバーはインストールされるが、録画用のソフトはインストールされない
  • make時カーネル2.6のソースを見ている様子
  • 録画時他のサイトで言われていた様に音ズレする。(1Mbpsで3分で1〜2秒ずれる)
    • 但し3Mbpsで行うと音ズレが発生しなかった。

インストール方法

  •  http://oss.wischip.com/ からLinux用のソースを取ってくる
  • makeする
    • エラーで停止。fxloadが無いみたいなのでAPTでインストールする
【makeログ】
debian:/home/ks/wis-go7007-linux-0.9.8# make
Your system appears to be missing fxload.  Please install
fxload before continuing.
make: *** [fxload_check] Error 1
  • 再度make実施
    • 正常にコンパイルできた
【makeログ】
debian:/home/ks/wis-go7007-linux-0.9.8# make
***** Using kernel source in /usr/src/linux/linux-2.6.16 *****
make modules -C /usr/src/linux/linux-2.6.16 M=/home/ks/wis-go7007-linux-0.9.8/kernel
make[1]: Entering directory `/usr/src/linux/linux-2.6.16'
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-v4l2.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-driver.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-i2c.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-fw.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-usb.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/snd-go7007.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7115.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw9903.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-uda1342.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-sony-tuner.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7113.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-ov7640.o
 CC [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw2804.o
 Building modules, stage 2.
 MODPOST
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-usb.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-usb.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/go7007.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/go7007.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/snd-go7007.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/snd-go7007.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-ov7640.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-ov7640.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7113.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7113.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7115.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7115.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-sony-tuner.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-sony-tuner.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw2804.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw2804.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw9903.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw9903.ko
 CC      /home/ks/wis-go7007-linux-0.9.8/kernel/wis-uda1342.mod.o
 LD [M]  /home/ks/wis-go7007-linux-0.9.8/kernel/wis-uda1342.ko
make[1]: Leaving directory `/usr/src/linux/linux-2.6.16'
sed -e s/@FIRMWARE_DIR@/\\/usr\\/lib\\/hotplug\\/firmware/ \
       -e s/@FXLOAD@/\\/sbin\\/fxload/ \
<hotplug/wis-ezusb.in >hotplug/wis-ezusb
sed -e s/@FIRMWARE_DIR@/\\/usr\\/lib\\/hotplug\\/firmware/ \
       -e s/@FXLOAD@/\\/sbin\\/fxload/ \
<udev/wis-ezusb.rules.in >udev/wis-ezusb.rules
make -C apps CFLAGS="-I/usr/src/linux/linux-2.6.16/include -I../include"
make[1]: Entering directory `/home/ks/wis-go7007-linux-0.9.8/apps'
gcc -Wall -I/usr/src/linux/linux-2.6.16/include -I../include -o gorecord gorecord.c tv-freq.c
gcc -Wall -I/usr/src/linux/linux-2.6.16/include -I../include -o modet modet.c -lncurses
make[1]: Leaving directory `/home/ks/wis-go7007-linux-0.9.8/apps'
debian:/home/ks/wis-go7007-linux-0.9.8#
  • make installをする
【make installログ】
debian:/home/ks/wis-go7007-linux-0.9.8# make install
make modules_install INSTALL_MOD_PATH= \
       -C /usr/src/linux/linux-2.6.16 M=/home/ks/wis-go7007-linux-0.9.8/kernel
make[1]: Entering directory `/usr/src/linux/linux-2.6.16'
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/go7007-usb.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/go7007.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/snd-go7007.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-ov7640.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7113.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-saa7115.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-sony-tuner.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw2804.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-tw9903.ko
 INSTALL /home/ks/wis-go7007-linux-0.9.8/kernel/wis-uda1342.ko
make[1]: Leaving directory `/usr/src/linux/linux-2.6.16'
/sbin/depmod -a
Installing include files into /usr/src/linux/linux-2.6.16/include/linux
install -m 0644 include/*.h /usr/src/linux/linux-2.6.16/include/linux
Installing firmware files into /usr/lib/hotplug/firmware
[ -d /usr/lib/hotplug/firmware ] || \
       install -d /usr/lib/hotplug/firmware
[ -d /usr/lib/hotplug/firmware/ezusb ] || \
       install -d /usr/lib/hotplug/firmware/ezusb
rm -f /usr/lib/hotplug/firmware/PX-402U.bin
install -m 0644 firmware/*.bin /usr/lib/hotplug/firmware
install -m 0644 firmware/ezusb/*.hex /usr/lib/hotplug/firmware/ezusb
install -m 0755 hotplug/wis-ezusb /etc/hotplug/usb
install -m 0644 hotplug/wis.usermap-ezusb \
       /etc/hotplug/usb/wis.usermap
make install -C apps DESTDIR=
make[1]: Entering directory `/home/ks/wis-go7007-linux-0.9.8/apps'
No install for apps yet
make[1]: Leaving directory `/home/ks/wis-go7007-linux-0.9.8/apps'
debian:/home/ks/wis-go7007-linux-0.9.8#

インストール後のデバイスの確認

  • リブートしてlsmod してみると以下のが追加されているのがわかる
snd_go7007              6820  1 go7007
snd_pcm                80648  1 snd_go7007
snd_timer              22788  1 snd_pcm
snd_page_alloc         10248  1 snd_pcm
snd                    49252  3 snd_go7007,snd_pcm,snd_timer
soundcore               9568  1 snd
  • dmesg コマンドで確認してみると組み込まれているのが確認できる
    • 但しPCがUSB1.0なので警告が出ている
Linux video capture interface: v1.00
go7007-usb: probing new GO7007 USB board
go7007-usb: *** WARNING ***  This device must be connected to a USB 2.0 
port!  Attempting to capture video through a USB 1.1 port will result in stream corruption, even at low bitrates!
go7007: registering new Plextor PX-TV402U-JP
wis-saa7115: initializing SAA7115 at address 32 on WIS GO7007SB EZ-USB
wis-uda1342: initializing UDA1342 at address 26 on WIS GO7007SB EZ-USB
wis-sony-tuner: initializing tuner at address 96 on WIS GO7007SB EZ-USB
wis-sony-tuner: type set to 201 (Sony NTSC_JP (BTF-PK467Z))

録画の確認

  • 録画してみる
    • OSS deviceが無いぞと言われる
debian:/home/ks/wis-go7007-linux-0.9.8/apps# ./gorecord -duration 3600 -input 2 -mode ntsc-j -tvchan ntsc-bcast-jp:1 -width 720 -bitr
ate 5000 1_w720_1Mbps.avi
/dev/video0 is a GO7007 device at USB address 1-2:1.0
Attempting to determine audio device...
Unable to find emulated OSS device node
debian:/home/ks/wis-go7007-linux-0.9.8/apps#
  • OSS deviceが無いのでalsa-baseをAPTでインストール
debian:/home/ks/wis-go7007-linux-0.9.8/apps# apt-get install alsa-base
  • alsa-baseを起動する。
/usr/share/alsa-base# ./snddevices
Creating /dev/audio?... done
Creating /dev/sndstat... done
Creating /dev/music... done
Creating /dev/dmmidi?... done
Creating /dev/dmfm?... done
Creating /dev/amixer?... done
Creating /dev/adsp?... done
Creating /dev/amidi?... done
Creating /dev/admmidi?... done
create symbolic link `/dev/mixer' to `/dev/mixer0'
create symbolic link `/dev/midi' to `/dev/midi00'
create symbolic link `/dev/dsp' to `/dev/dsp0'
create symbolic link `/dev/audio' to `/dev/audio0'
create symbolic link `/dev/sequencer2' to `/dev/music'
create symbolic link `/dev/adsp' to `/dev/adsp0'
create symbolic link `/dev/amidi' to `/dev/amidi0'
rm: cannot remove `/dev/snd': Is a directory
Creating /dev/snd/control?... done
Creating /dev/snd/seq... done
Creating /dev/snd/timer... done
Creating /dev/snd/hw??... done
Creating /dev/snd/midi??... done
Creating /dev/snd/pcm??p... done
Creating /dev/snd/pcm??c... done
ALSA loader devices
Creating /dev/aload?... done
Creating /dev/aloadSEQ... done
debian:/usr/share/alsa-base#
  • リブート後再度録画を行ってみる。→できた
    • 録画中強制的止めたい場合はctrl+Cでキャンセルする
debian:/home/ks/wis-go7007-linux-0.9.8/apps# ./gorecord -duration 3600 -input 2 -mode ntsc-j -tvchan ntsc-bcast-jp:1 -width 720 -bitr
ate 5000 1_w720_1Mbps.avi
/dev/video0 is a GO7007 device at USB address 1-2:1.0
Attempting to determine audio device...using audio device /dev/dsp
Using input port Tuner
Capturing video at 720x480, 29.97 FPS
00:43.93  Frames:  1040  AVI size:  30173952  Video bitrate:  3623 kbps
   Video data written to file: 21718014 bytes of MPEG4
   Audio data written to file: 8437760 bytes of uncompressed PCM
   AVI file format overhead  : 51466 bytes
   Total file size           : 30207240 bytes
  • コマンド意味(詳しくは--helpで見てください)
    • duration 3600 3600秒間稼動する
    • input 2 チューナカード選択(2はTVチューナ)
    • mode ntsc-j NTSCの方式で録画する
    • tvchan ntsc-bcast-jp:1 1チャンネルで録画する
    • bitrate 3000 3Mbpsで録画する

ストリーミングについて

  • ストリーミングのためにspookなるソフトを入れてみる
    • spookはFFmpegに統合された??かも

インストール

  • 以下のコマンドでインストール→この段階ではエラーで止まることは無かった
./configure
make
make install
  • 起動
    • エラーを吐いて起動失敗(デバイスが無いと言われる)
debian:/home/ks# spook
Jun 22 22:40:48 spook[2627]: listening on control socket spook.sock
Jun 22 22:40:48 spook[2627]: listening on tcp port 7070
Jun 22 22:40:48 spook[2627]: v4l2: using capture device "Plextor PX-TV402U-JP"
Jun 22 22:40:48 spook[2627]: v4l2: don't know how to set MPEG4 on this device
debian:/home/ks#
  • 原因解決のためにサイトを探してみると http://forums.divx.com/eve/forums/a/tpc/f/996105602/m/166106552/r/841101652#841101652
    • configure時カーネルソースを探している
    • configure時にgo7007.hの場所を教えてやればいい(go7007.hはドライバーインストール時カーネルソースに入る)
    • checking for go7007.h in the kernel source tree... yes となっていればエラーにならないことが判明
  • go7007.hの場所をfind で探してみる
debian:/home/ks/spook-20050207# find / -name go7007.h
/usr/src/linux/linux-2.6.16/include/linux/go7007.h
/home/ks/live/wis-streamer/go7007.h
/home/ks/wis-go7007-linux-0.9.8/include/go7007.h
  • 再度やってみる
    • checking for go7007.h in the kernel source tree... yesになっている(エラー時はnoだった)
debian:/home/ks/spook-20050207# ./configure --enable-input-v4l2 --with-kernel-source=/usr/src/linux/linux-2.6.16/
【configure長いので抜粋】
checking for linux/compiler.h... yes
checking for Video4Linux header files... yes
checking for pwc-ioctl.h in the kernel source tree... no
checking for Video4Linux2 header files... yes
checking for go7007.h in the kernel source tree... yes
checking for dc1394_create_handle in -ldc1394_control... no
checking for xvid_encore in -lxvidcore... no
checking for jpeg_set_defaults in -ljpeg... no
  • 再度make,make install実行 

spook起動

  • 始めにgorecordを起動させないといけない
    • nowrite を入れてHDDに書き込まない様にしている
    • duration 6 を入れて6秒後にはコマンドを停止させている
./gorecord -duration 6 -input 2 -mode ntsc-j -tvchan ntsc-bcast-jp:8 -bitrate 3000 -nowrite 
  • spook起動
./spook -c spook.conf
  • 見たいPCからQuickTimeを起動してサーバのアドレスを指定したら再生する(これ以外動作しない。realとかmediaでは動作不可だった)
rtsp://サーバのIPアドレス:7070/webcam


  • ストリーミングイメージ
    #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (spook.JPG)
  • pen233Mhzで1MbpsでCPU使用率30%ぐらいだった
  • 音のズレがひどい(1Mbpsでやると)3分で1秒ぐらい
  • 3Mbpsでやるとほぼずれなくなった変わらずCPU使用率30%ぐらい

タグ:

+ タグ編集
  • タグ:
最終更新:2007年05月03日 18:10