############################################################################ ●ffmpeg (ライブカメラ用サーバー)の設定 (1)準備(カメラが使えるかチェック、ドライバが組み込まれているか)  カメラ型番: Qcam Connect  メーカー名 Logicool 1) 関係ないかも知れないが、v4l2-tool をインストールしておいた [root@localhost ~]# yum -y install v4l2-tool 2) 起動時にデバイスが有効になるように /etc/modprobe.conf を編集して 以下を追加する alias char-major-81 videodev alias char-major-81-0 gspca_zc3xx 3) xawtv をインストールする [root@localhost ~]# yum -y install xawtv 4) フォントがロードできないとエラーになるのでフォントをインストールする [root@localhost ~]# yum -y install zvbi-fonts 5) xwatv を起動する [root@localhost ~]# xawtv -nodga -c /dev/video0 画像が表示されればOK (2)FFMPEGのインストール 公式サイト: http://ffmpeg.org/ ■ソースコードからインストールする場合 (A)最新のソースを使用する場合(うまく動作しなかった) 1) subversion が入っていなければ、インストールする [root@localhost ~]# yum -y install subversion 2) リポジトリからソースをダウンロードする [root@localhost ~]# cd /usr/local/src [root@localhost src]# svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg または [root@localhost src]# wget http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2 [root@localhost src]# tar jxvf ffmpeg-0.5.tar.bz2 3) ダウンロードしたディレクトリに移動して、INSTALL というファイルを読む [root@localhost src]# cd ffmpeg 4) INSTALLの記述通りにビルド&インストールする [root@localhost ffmpeg]# ./configure [root@localhost ffmpeg]# make [root@localhost ffmpeg]# make install 5) ffserver の設定ファイル(ffserver.conf)の雛形を /etc にコピーする [root@localhost ffmpeg]# cp ./doc/ffserver.conf /etc (B)Ver.0.4.8のソースを使用する場合(これは動作した) 1) sourceforge からソースをダウンロードする [root@localhost src]# wget http://prdownloads.sourceforge.net/ffmpeg/ffmpeg-0.4.8.tar.gz 2) gcc32 でないとコンパイルできないので compat-gcc-32 をインストールする (fedora10 のパッケージが無いので、fedora5 のパッケージを使用する) [root@localhost src]# wget ftp://ftp.riken.go.jp/Linux/fedora/core/5/i386/os/Fedora/RPMS/compat-gcc-32-3.2.3-55.fc5.i386.rpm [root@localhost src]# rpm -Uvh compat-gcc-32-3.2.3-55.fc5.i386.rpm 3) ソースのアーカイブを展開する [root@localhost src]# tar zxvf ffmpeg-0.4.8.tar.gz 4) ソースのディレクトリに移動 [root@localhost src]# cd ffmpeg-0.4.8 5) ビルド条件を設定する(ffplay がエラーになるのでffplayは対象から外す) [root@localhost ffmpeg-0.4.8]# ./configure --cc=gcc32 --disable-ffplay 6) ビルドする [root@localhost ffmpeg-0.4.8]# make 7) インストールする [root@localhost ffmpeg-0.4.8]# make install 8) ffserver の設定ファイル(ffserver.conf)の雛形を /usr/local/etc にコピーする [root@localhost ffmpeg-0.4.8]# cp ./doc/ffserver.conf /usr/local/etc ■インストール後の設定 /usr/local/etc/ffserver.conf の編集 [root@localhost etc]# cat ffserver.conf Port 8090 BindAddress 0.0.0.0 MaxClients 1000 MaxBandwidth 1000 #CustomLog - CustomLog /var/log/ffserver.log NoDaemon File /tmp/feed1.ffm FileMaxSize 1024K ACL allow 127.0.0.1 Feed feed1.ffm Format mpeg #AudioBitRate 32 #AudioChannels 1 #AudioSampleRate 44100 #VideoBitRate 64 VideoBitRate 256 #VideoFrameRate 3 VideoFrameRate 5 #VideoSize 160x128 VideoSize 320x240 #VideoGopSize 12 VideoGopSize 15 NoAudio # Single JPEG Feed feed1.ffm Format jpeg VideoFrameRate 2 VideoIntraOnly VideoSize 320x240 NoAudio Strict -1 # Flash Feed feed1.ffm Format swf VideoFrameRate 2 VideoIntraOnly VideoSize 320x240 NoAudio # ASF compatible Feed feed1.ffm Format asf VideoFrameRate 15 #VideoSize 352x240 VideoSize 320x240 VideoBitRate 256 VideoBufferSize 40 VideoGopSize 30 #AudioBitRate 64 StartSendOnKey NoAudio # Real with audio and video at 64 kbits Feed feed1.ffm Format rm #AudioBitRate 32 VideoBitRate 128 VideoSize 320x240 VideoFrameRate 25 VideoGopSize 25 NoAudio # Server status Format status # Only allow local people to get the status ACL allow localhost ACL allow 192.168.0.0 192.168.255.255 #FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico # Redirect index.html to the appropriate site URL http://www.ffmpeg.org/ ■起動スクリプトを作成する LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so が設定されていないと動作しないので export するようにした。 [root@localhost etc]# vi /etc/init.d/livecam #! /bin/sh # # chkconfig: 345 97 11 # description: Starts and stops the ffmpeg and ffserver daemons \ # used to provide Live Camera services. CAMERA_MODULE=gspca CONFIG=/etc/ffserver.conf FFSERVER=/usr/bin/ffserver FFMPEG=/usr/bin/ffmpeg LOCKFILE=/var/lock/subsys/ffserver export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so # Source function library. if [ -f /etc/init.d/functions ] ; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ] ; then . /etc/rc.d/init.d/functions else exit 0 fi # Avoid using root's TMPDIR unset TMPDIR # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # Check that smb.conf exists. [ -f ${CONFIG} ] || exit 0 RETVAL=0 RETVAL2=0 start() { ffm=1 ffs=1 /bin/ps ax | /bin/grep -v grep | /bin/grep ffmpeg >/dev/null 2>&1 if [ $? -eq 0 ]; then echo "livecam is running..." ffm=0 fi /bin/ps ax | /bin/grep -v grep | /bin/grep ffserver >/dev/null 2>&1 if [ $? -eq 0 ]; then echo "ffserver is running ..." ffs=0 fi if ! /sbin/lsmod | grep -q ${CAMERA_MODULE} ; then echo -n $"Loading camera modules: " /sbin/modprobe ${CAMERA_MODULE} sleep 3 fi if [ $ffs -eq 1 ]; then echo "starting livecam ..." echo -n $"Starting ffserver services: " ${FFSERVER} -f ${CONFIG} >/dev/null 2>&1 & RETVAL=$? echo sleep 1 fi if [ $ffm -eq 1 ]; then echo -n $"Starting ffmpeg services: " ${FFMPEG} -s 320x240 -an -vd /dev/video0 http://localhost:8090/feed1.ffm >/dev/null 2>&1 & RETVAL2=$? echo fi [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch ${LOCKFILE} || RETVAL=1 echo "" return $RETVAL } stop() { echo -n $"Shutting down ffmpeg services: " killproc ffmpeg RETVAL=$? echo echo -n $"Shutting down ffserver services: " killproc ffserver RETVAL2=$? echo [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f ${LOCKFILE} echo "" return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "usage: $0 {start|stop|restart}" exit 1 ;; esac exit $? ■起動スクリプトを登録する [root@localhost etc]# cd /etc/init.d [root@localhost init.d]# chkconfig --add livecam [root@localhost init.d]# chkconfig livecam on --以上--