ffmpeg でストリーミング配信


<<トップページへ

概要

FC5 でffmpeg0.4.8のコンパイルに成功したのでffserverでストリーミング配信の実験をしてみます。なぜ最新のソースを使用しないかという事 ですが、それは最新ソースだとffserverが動作しないからです。
参考リンクhttp://bbs.fedora.jp/read.php?FID=2&TID=1221

■ 作業内容

http://prdownloads.sourceforge.net/ffmpeg/ffmpeg-0.4.8.tar.gzよ りdownloadします。なぜ、古いバージョンが配布されているのだろうか?...作業はまずコンパイルしてインストールします。
$ tar xvzf ffmpeg-0.4.8.tar.gz
$ cd ffmpeg0.4.8
$ ./configure --cc=gcc32 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --extra-cflags=-O2 -march=i386 -mcpu=i686
$ make
# make install
次に/etc/ffserver.confを編集して設定します。元ファイルは/usr/share/doc/ffmpeg- 0.4.8/doc/にあるはずです。参考までに私の設定を載せておきます。
# cat /etc/ffserver.conf

Port 8090
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 1000
CustomLog -
NoDaemon

<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 200K
ACL allow 127.0.0.1
</Feed>
<Stream test1.mpg>
Feed feed1.ffm
Format mpeg
AudioBitRate 32
AudioChannels 1
AudioSampleRate 44100
VideoBitRate 64
VideoFrameRate 3
VideoSize 160x128
VideoGopSize 12
#NoVideo
</Stream>
<Stream test.jpg>
Feed feed1.ffm
Format jpeg
VideoFrameRate 2
VideoIntraOnly
VideoSize 352x240
NoAudio
</Stream>
# ASF compatible
<Stream test.asf>
Feed feed1.ffm
Format asf
VideoFrameRate 15
VideoSize 352x240
VideoBitRate 256
VideoGopSize 30
AudioBitRate 64
StartSendOnKey
</Stream>
#
<Stream test.rm>
Feed feed1.ffm
Format rm
AudioBitRate 32
VideoBitRate 128
VideoFrameRate 25
VideoGopSize 25
#NoAudio
</Stream>
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
ACL allow 1.0.0.1 255.255.255.255
</Stream>
<Redirect index.html>
URL http://ffmpeg.sourceforge.net/
</Redirect>

長いコマンドを打ち込むのは苦手なのでスクリプトを作成します。
$ vi ffserver-start
----------------------------------------------------------
ffserver -f /etc/ffserver.conf
----------------------------------------------------------
# chmod 777 ffserver-start

$ vi ffserver-cam
----------------------------------------------------------
ffmpeg -vd /dev/video0 http://localhost:8090/feed1.ffm
----------------------------------------------------------
# chmod 777 ffserver-cam
QV-4000のドライバーのコンパイルとインストールを行います。 インストール後にリブートが必要なようです。download先は http://www.saillard.org/linux/pwc/files/
$ tar -jxvf pwc-10.0.11.tar.bz2
$ cd pwc-10.0.11
$ make
# su
# cp -p pwc.ko /lib/modules/$(uname -r)/kernel/drivers/usb/media/pwc/
# chown root:root /lib/modules/$(uname -r)/kernel/drivers/usb/media/pwc/pwc.ko
--------------------------------------------------------------------------------
Kernel-2.6.17 以上の場合はコピーする場所が違う
# cp -p pwc.ko /lib/modules/$(uname -r)/kernel/drivers/media/video/pwc/pwc.ko
# chown root:root /lib/modules/$(uname -r)/kernel/drivers/media/video/pwc/pwc.ko
--------------------------------------------------------------------------------
# /sbin/depmod -a ←ここまでやったら再起動する。

確認のためQV-4000を接続してみます。
# /sbin/lsmod | grep pwc モジュールがロードされているか確認する

        pwc                    76656  0
        videodev                9665  2 pwc,bttv
ドライバーの確認ツールとしてxawtvのコンパイルとインストールを 行います。 FC4まではダウンロードしたソースをそのままコンパイルすればOKでしたがFC5になってからはソースに一部手を加える必要がありますxawtv- 3.95.tar.gzをdownloadします。 http://linux.bytesex.org/xawtv/  展開して下の様に1行追加する。
$ tar xvzf xawtv-3.95.tar.gz
$ cd xawtv-3.95
$ vi console/fbtv.c

190行目の static char	*snapbase; を、
char *snapbase; に修正
char *snapbase;
static char              default_title[128] = "???";

static char              message[128] = "";

次にfs.hを修正します。
$ vi console/fs.h

fs.h の、先頭追加
#define X_DISPLAY_MISSING 1

追加後はこうなります。
#define X_DISPLAY_MISSING 1
#ifndef X_DISPLAY_MISSING
# include <FSlib.h>

後は普通に作業を進める。

$ ./configure

$ make
# make install
それでは実際を確認してみましょう。
# /sbin/lsmod | grep pwc モジュールがロードされているか確認する

        pwc                    81140  0
        videodev                9665  2 pwc,bttv

$ xawtv -hwscan ←使用できるデバイスの確認

This is xawtv-3.95, running on Linux/i686 (2.6.16-1.2111_FC5)
looking for available devices
port 240-240
    type : Xvideo, image scaler
    name : NV17 Video Overlay

port 241-241
    type : Xvideo, image scaler
    name : NV17 Video Texture

port 242-273
    type : Xvideo, image scaler
    name : NV05 Video Blitter

port 274-274                            [ -xvport 274 ]
    type : Xvideo, video overlay
    name : NVIDIA Video Interface Port

/dev/video0: OK                         [ -device /dev/video0 ]
    type : v4l2
    name : Vanilla iTVC15 card
    flags:  capture tuner

/dev/video1: OK                         [ -device /dev/video1 ]
    type : v4l2
    name : Vanilla iTVC15 card
    flags:  capture tuner

/dev/video2: OK                         [ -device /dev/video2 ]
    type : v4l
    name : Logitech QuickCam Pro 4000
    flags:  capture

$ xawtv -nogl -noxv -c /dev/video2 -geometry 640x480
これで画像が見えるはずです。
ここまで問題がなければ、いよいよffserverの配信のテストです。まずコマンドライン端末を二つ立ててroot権限で先ほど作 成したスクリプトをそれぞれ実行してください。
実行できたらブラウザで http://localhost:8090/stat.html にアクセスしてみてください。ストリーミング配信されている 項目が表示されているはずです。あとはそれをクリックすればそれぞれのファイル形式でQV-4000の画像が再生されるはずなのですが、linuxの場合 はブラウザのプラグインの不備で再生されないことが多いようです。簡単なのは同じネットワーク上のwindowsのrealplayerでrm形式のファ イルを再生してみると確実です。



▲このページのトップへ戻る

▲トップへ戻 る





Copyright©2005-2006  熊の巣  All Right Reserved.  管理人へメール