Top > ストリーミングサーバ > Pseudo-Streaming(擬似ストリーミング)を用いてシーク機能の実装 | ||||
Pseudo-Streaming(擬似ストリーミング)を用いてシーク機能の実装
2011 - 11/04 [Fri] - 11:50
本来の意味でのストリーミング。ライブストリーミング。ライブ配信やトランスコードとかはこっちを使用。
ではシーク機能について説明します。ここで必要なのは
①サーバ側のPseudo-Streamingの有効化(Apacheでモジュールを使用)
②Webプレーヤ設定
です。
①サーバ側の設定
apxs2が入ってない場合は
$ sudo apt-get install apache2-threaded-dev
ではダウンロードから
$ wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz
$ tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz
ビルドしてインストール。この時apxs2の場所を指定します。Ubuntuだと/usr/bin/apxs2だと思うので
$ cd ~/mod_h264_streaming-2.2.7
$ ./configure --with-apxs="/usr/bin/apxs2"
$ make
$ sudo make install
これでインストールは完了です。次にモジュールの有効化
/etc/apache2/mods-available に h264.load と h264.conf を作成します。名前は他のモジュールと重ならなければ何でもいいです。
$ sudo emacs -nw /etc/apache2/mods-available/h264.load
LoadModule h264_streaming_module /usr/lib/apache2/modules/mod_h264_streaming.so
$ sudo emacs -nw /etc/apache2/mods-available/h264.conf
AddHandler h264-streaming.extensions .mp4
ファイルを作成したら有効化
$ sudo a2enmod h264
Apacheの再起動。
$ sudo /etc/init.d/apache2 restart
これで大丈夫だと思います。ちゃんと機能してるかは、wgetでレスポンスヘッダを見る(wget -S アドレス)といいです。
X-Mod-H264-Streaming:version=~
が出てればOK。僕の場合.confの書き方を<if modules="~">にしてましたが、それがうまく動かなかった?ためか上のレスポンスが返ってこない=モジュールが機能しておらず、実装に手間取りました。
②Webプレーヤの設定(JW Player)
これは次の1行を加えるだけでいいと思います。
provider:'http',
これはjwplaey.js用です。swfobject.jsではまた書き方が少し変わります。が、providerがhttpと言うのは同じはずです。
以下例です。
<script type='text/javascript' src='/jwplayer/jwplayer.js'></script>
<div id="mediaplayer"></div>
<script type="text/javascript">
jwplayer('mediaplayer').setup({
'modes': [
{type: 'flash', src: 'player.swf'},
],
'width': '480',
'height': '270',
'file': '/videos/bunny.mp4',
'image': '/thumbs/bunny.jpg',
'provider':'http'
});
</script>
以上です。
ソース:
Apache で HTTP Pseudo-Streaming を行うには
Mod-H264-Streaming-Apache-Version2
JW player Configuration Options
Flashを用いたWebプレーヤでは基本的に「ダウンロードしながら再生」はできるものの、シークなどはダウンロードが済んだ部分しかできません。HTML5だと自在にシークできますが。そこでApacheにモジュールを組み込むことで任意の場所にシーク出来るようにします。
ストリーミングのおさらい。
◆Pseudo-Streaming
擬似ストリーミング。プログレッシブダウンロード。個人サーバでよく使われる。シークやビットレート操作などはサーバの設定やWebプレーヤをいじれば対応できるっぽい。
本来の意味でのストリーミング。ライブストリーミング。ライブ配信やトランスコードとかはこっちを使用。
ではシーク機能について説明します。ここで必要なのは
①サーバ側のPseudo-Streamingの有効化(Apacheでモジュールを使用)
②Webプレーヤ設定
です。
①サーバ側の設定
apxs2が入ってない場合は
$ sudo apt-get install apache2-threaded-dev
ではダウンロードから
$ wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz
$ tar -zxvf apache_mod_h264_streaming-2.2.7.tar.gz
ビルドしてインストール。この時apxs2の場所を指定します。Ubuntuだと/usr/bin/apxs2だと思うので
$ cd ~/mod_h264_streaming-2.2.7
$ ./configure --with-apxs="/usr/bin/apxs2"
$ make
$ sudo make install
これでインストールは完了です。次にモジュールの有効化
/etc/apache2/mods-available に h264.load と h264.conf を作成します。名前は他のモジュールと重ならなければ何でもいいです。
$ sudo emacs -nw /etc/apache2/mods-available/h264.load
LoadModule h264_streaming_module /usr/lib/apache2/modules/mod_h264_streaming.so
$ sudo emacs -nw /etc/apache2/mods-available/h264.conf
AddHandler h264-streaming.extensions .mp4
ファイルを作成したら有効化
$ sudo a2enmod h264
Apacheの再起動。
$ sudo /etc/init.d/apache2 restart
これで大丈夫だと思います。ちゃんと機能してるかは、wgetでレスポンスヘッダを見る(wget -S アドレス)といいです。
X-Mod-H264-Streaming:version=~
が出てればOK。僕の場合.confの書き方を<if modules="~">にしてましたが、それがうまく動かなかった?ためか上のレスポンスが返ってこない=モジュールが機能しておらず、実装に手間取りました。
②Webプレーヤの設定(JW Player)
これは次の1行を加えるだけでいいと思います。
provider:'http',
これはjwplaey.js用です。swfobject.jsではまた書き方が少し変わります。が、providerがhttpと言うのは同じはずです。
以下例です。
<script type='text/javascript' src='/jwplayer/jwplayer.js'></script>
<div id="mediaplayer"></div>
<script type="text/javascript">
jwplayer('mediaplayer').setup({
'modes': [
{type: 'flash', src: 'player.swf'},
],
'width': '480',
'height': '270',
'file': '/videos/bunny.mp4',
'image': '/thumbs/bunny.jpg',
'provider':'http'
});
</script>
以上です。
ソース:
Apache で HTTP Pseudo-Streaming を行うには
Mod-H264-Streaming-Apache-Version2
JW player Configuration Options