############################################################################
●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
--以上--