FLV や MP4 ファイルを Web で配信した際に、Apache では基本的にストリーミング配信はできません。
ようするに、配信中に動画の閲覧はできますが、動画の初めから見ることしかできず、
ダウンロードが完了するまで任意の場所へのシークなどができないわけです。
Flowplayer や JW Player などの Flash ベースのプレーヤーは、もちろんストリーミングに対応していますが、
サーバー側が対応していないとどうしようもありません。
Lighttpd を利用すれば、簡単にストリーミングサーバーが構築できますが、
実は apache でも PHP などのスクリプトで実行する事もできますし、
探すといくつかモジュールも存在します。
今回は mod_flvx と mod_H264_streaming を使用して、
Pseudo-streaming を実装してみたので、そのメモを残しておこうと思います。
環境は Ubuntu 10.04 LTS 。
mod_flvx は Paul Querna によって書かれた小規模な module です。
ソースコードは mod_flvx.c 1つで、これを apache の apxs2 を利用してコンパイルし、インストールします。
まずは、 apxs2 を apt-get でインストールします。
$ sudo apt-get install apache2-threaded-dev
そして、 mod_flvx.c をここからダウンロードし、適当な場所に保存したらコンパイルしてインストールします。
$ wget http://people.apache.org/%7Epquerna/modules/mod_flvx.c $ apxs2 -c ./mod_flvx.c $ sudo apxs2 -c -i ./mod_flvx.c
これで、インストールされたはずです。
次に、 /etc/apache2/mods-available に flvx.load と flvx.conf を作成します。
# /etc/apache2/mods-available/flvx.load LoadModule flvx_module /usr/lib/apache2/modules/mod_flvx.so
# /etc/apache2/mods-available/flvx.conf <IfModule flvx_module> AddHandler flv-stream .flv </IfModule>
最後に、作成したファイルへのリンクを /etc/apache2/mods-enabled に作成して、
apache を再読み込みさせます。
$ cd /etc/apache2/mods-enabled/ $ sudo ln -s ../mods-available/flvx.conf $ sudo ln -s ../mods-available/flvx.load $ sudo service apache2 reload
これで、 apache は自動的に .flv ファイルに対して Pseudo-Streaming を行います。
試しに curl -I "http://localhost/video.flv?start=100000" などと実行して試してみてください。
次に、 h264(mp4) の対応です。
基本的に flvx と同じですが、こちらのモジュールの方が少し規模が大きい物になってます。
本家のサイトはこちらになります。
この通りに実行していけば、インストールまで行えます。
モジュールの設定ファイルに関しても、 flvx と同様に行うと良いと思います。
Flowplayer Forums - Apache FLV streaming done right! (no php)
Mod-H264-Streaming-Apache-Version2 - h264